Configures the iii engine via iii-config.yaml — workers, adapters, queue configs, ports, and environment variables. Use when deploying, tuning, or customizing the engine.
80
75%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Passed
No known issues
Optimize this skill with Tessl
npx tessl skill review --optimize ./skills/iii-engine-config/SKILL.mdComparable to: Infrastructure as code, Docker Compose configs
Use the concepts below when they fit the task. Not every deployment needs all workers or adapters.
${VAR:default} syntax (default is optional)iii.toml and the iii worker CLI commandsThe iii-config.yaml file is loaded by the iii engine binary at startup. Workers are initialized in order, adapters connect to their backends, and the engine begins accepting worker connections over WebSocket on port 49134. External workers defined in the config are spawned as child processes automatically.
| Primitive | Purpose |
|---|---|
iii-http | HTTP API server (port 3111) |
iii-stream | WebSocket streams (port 3112) |
iii-state | Persistent key-value state storage |
iii-queue | Background job processing with retries |
iii-pubsub | In-process event fanout |
iii-cron | Time-based scheduling |
iii-observability | OpenTelemetry traces, metrics, logs |
iii-http-functions | Outbound HTTP call security |
iii-exec | Spawn external processes |
iii-bridge | Distributed cross-engine invocation |
iii-telemetry | Anonymous product analytics |
iii-worker-manager | Worker connection lifecycle |
iii-engine-functions | Built-in engine functions |
iii.toml | Worker manifest (name → version) |
iii worker add NAME[@VERSION] | Install a worker from the registry |
iii worker remove NAME | Uninstall a worker |
iii worker list | List installed workers |
iii worker info NAME | Show registry info for a worker |
See ../references/iii-config.yaml for the full working example — a complete engine configuration with all workers, adapters, queue configs, and environment variable patterns.
Code using this pattern commonly includes, when relevant:
iii --config ./iii-config.yaml — start the engine with a config filedocker pull iiidev/iii:latest — pull the Docker imagestore_method: file_based with file_path: ./data/...redis_url: ${REDIS_URL}amqp_url: ${AMQP_URL} and queue_mode: quorumqueue_configs with max_retries, concurrency, type, backoff_ms per queue nameport: ${III_PORT:49134}curl http://127.0.0.1:3111/healthWorkers in iii-config.yaml use name: and optional config::
workers:
- name: iii-http
config:
port: 3111
host: 127.0.0.1
- name: iii-state
config:
adapter:
name: kv
config:
store_method: file_based
file_path: ./data/state_store.db
- name: iii-queue
config:
adapter:
name: builtin
config:
store_method: file_based
file_path: ./data/queue_store
- name: iii-stream
config:
port: 3112
host: 127.0.0.1
adapter:
name: kv
config:
store_method: file_based
file_path: ./data/stream_store
- name: iii-cron
config:
adapter:
name: kv
- name: iii-pubsub
config:
adapter:
name: local
- name: iii-observability
config:
enabled: true
service_name: my-service
exporter: memory
sampling_ratio: 1.0
metrics_enabled: true
logs_enabled: trueExternal workers are installed via the CLI and configured in iii-config.yaml:
iii worker add pdfkit@1.0.0 — install a worker binary from the registryiii worker add (no name) — install all workers listed in iii.tomliii worker remove pdfkit — remove binary, manifest entry, and config blockiii worker list — show installed workers and versions from iii.tomlWorkers appear in iii.toml as a version manifest:
[workers]
pdfkit = "1.0.0"
image-processor = "2.3.1"Worker config blocks in iii-config.yaml use marker comments for automatic management:
workers:
# === iii:pdfkit BEGIN ===
- name: pdfkit
config:
output_dir: ./output
# === iii:pdfkit END ===At startup, the engine resolves each worker name, finds the binary in iii_workers/, and spawns it as a child process.
Use the adaptations below when they apply to the task.
iii worker add to install external workers and auto-generate their config blocksmax_retries and backoff_ms based on your failure tolerance and SLA requirementsiii-observability with your collector endpoint and sampling ratiohost: 127.0.0.1 instead of host: localhost to avoid IPv4/IPv6 mismatches on macOSiii-http-endpoints.iii-queue-processing.iii-cron-scheduling.iii-observability.iii-realtime-streams.iii-engine-config when the primary problem is configuring or deploying the engine itself.iii-engine-config in the iii engine.d51a06d
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.