Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
iii-hq avatar

Iii Engine Config

  • 1.6k installs
  • 18.6k repo stars
  • Updated August 5, 2026
  • iii-hq/iii

iii-engine-config is a Claude Code skill that configures the iii engine via a single iii-config.yaml file—workers, adapters, queue configs, ports, and environment variables—for developers who deploy, tune, or customize t

About

iii-engine-config is an infrastructure configuration skill from iii-hq/iii that guides agents through editing iii-config.yaml to define engine workers, modules, adapters, queue settings, ports, observability, RBAC, and worker manager listeners. Environment variables use ${VAR:default} interpolation syntax, and workers serve as the composable building blocks of each deployment. The skill compares its approach to infrastructure-as-code and worker manifest patterns, helping operators customize only the workers and adapters their deployment needs. Developers reach for iii-engine-config when standing up a new iii engine instance, tuning queue throughput, or adjusting port and adapter bindings without touching application code.

  • Defines workers that enable API, state, queue, cron and other capabilities
  • Swaps storage and messaging backends via adapters (file/KV, Redis, RabbitMQ, in-memory)
  • Controls retry count, concurrency, ordering and backoff per named queue
  • Supports environment variable expansion with ${VAR:default} syntax
  • Configures observability, RBAC, ports and worker manager listeners in one file

Iii Engine Config by the numbers

  • 1,575 all-time installs (skills.sh)
  • +45 installs in the week ending Aug 4, 2026 (Skillselion tracking)
  • Ranked #137 of 1,435 DevOps & CI/CD skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/iii-hq/iii --skill iii-engine-config

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs1.6k
repo stars18.6k
Last updatedAugust 5, 2026
Repositoryiii-hq/iii

How do you configure iii engine workers and adapters?

Configure workers, adapters, queues, ports and environment variables for the iii engine through a single YAML file.

Who is it for?

Platform engineers deploying or tuning the iii engine who need YAML-driven control over workers, adapters, and runtime policy.

Skip if: Developers building application business logic unrelated to iii engine runtime configuration or worker orchestration.

When should I use this skill?

User wants to deploy, tune, customize, or troubleshoot iii engine configuration via iii-config.yaml.

What you get

Validated iii-config.yaml with worker definitions, adapter bindings, queue configs, port mappings, RBAC rules, and environment variable interpolation.

  • iii-config.yaml manifest
  • Worker and adapter definitions
  • Environment variable bindings

Files

SKILL.mdMarkdownGitHub ↗

Engine Config

Comparable to: infrastructure as code, worker manifests, runtime policy config

Key Concepts

Use the concepts below when they fit the task. Not every deployment needs all workers or adapters.

  • config.yaml / iii-config.yaml defines engine workers, modules, adapters, ports, observability, RBAC, and worker manager listeners
  • Environment variables use ${VAR:default} syntax (default is optional)
  • Workers are the building blocks — each enables a capability (API, state, queue, cron, etc.)
  • Managed workers are registry, binary, OCI image, or local workers controlled by the worker manager and iii worker CLI
  • Adapters swap storage and messaging backends: file/KV, Redis, RabbitMQ, local/in-memory where supported
  • Queue configs control retry count, concurrency, ordering, and backoff per named queue
  • The engine's private worker WebSocket commonly listens on port 49134
  • The console commonly runs on 3113, HTTP on 3111, stream WebSocket on 3112, and Prometheus on 9464 when enabled

Architecture

The engine loads YAML config at startup, expands environment variables, initializes modules and built-in daemons, opens configured ports, starts the worker manager, then installs or starts managed workers. SDK workers connect over WebSocket; registry-managed binary and OCI workers can be reproduced from iii.lock.

Runtime Workers and Config Surface

Worker / ConfigPurpose
iii-httpHTTP API server (port 3111)
iii-streamWebSocket streams (port 3112)
iii-statePersistent key-value state storage
iii-queueBackground job processing with retries
iii-pubsubIn-process event fanout
iii-cronTime-based scheduling
iii-sandboxMicroVM command/filesystem isolation
shellControlled host/sandbox command and file tools
iii-directoryEngine/registry/skills discovery
iii-observabilityOpenTelemetry traces, metrics, logs
iii-http-functionsOutbound HTTP call security
iii-execSpawn external processes
iii-bridgeDistributed cross-engine invocation
iii-telemetryAnonymous product analytics
iii-worker-managerWorker connection lifecycle and RBAC listeners
iii-worker-opsWorker lifecycle operations
iii (iii-engine-functions runtime)Core engine introspection (engine::*) and platform authoring reference
iii.lockReproducible managed-worker lockfile
iii worker sync --frozenVerify lockfile without mutation

Code Example

workers:
  - name: iii-http
    config:
      host: 127.0.0.1
      port: ${III_HTTP_PORT:3111}

  - name: iii-queue
    config:
      queue_configs:
        payments:
          max_retries: 5
          concurrency: 2
          type: fifo
          message_group_field: orderId
      adapter:
        name: builtin
        config:
          store_method: file_based
          file_path: ./data/queue

  - name: iii-state
    config:
      adapter:
        name: kv
        config:
          store_method: file_based
          file_path: ./data/state

  - name: iii-worker-manager
    config:
      listeners:
        - host: 127.0.0.1
          port: 49134
          private: true
        - host: 0.0.0.0
          port: 49135
          rbac:
            auth_function_id: auth::browser-session

Common Patterns

Code using this pattern commonly includes, when relevant:

  • iii --config ./config.yaml — start the engine with a config file
  • docker pull iiidev/iii:latest — pull the Docker image
  • Dev storage: store_method: file_based with file_path: ./data/...
  • Prod storage: Redis adapters with redis_url: ${REDIS_URL}
  • Prod queues: RabbitMQ adapter with amqp_url: ${AMQP_URL} and queue_mode: quorum
  • Queue config: queue_configs with max_retries, concurrency, type, backoff_ms per queue name
  • Env var with fallback: port: ${III_PORT:49134}
  • Health check: curl http://127.0.0.1:3111/health
  • Ports: 3111 (API), 3112 (streams), 49134 (engine WS), 9464 (Prometheus)
  • RBAC listener: configure iii-worker-manager with listener host, port, middleware_function_id, and rbac
  • HTTP security policy: configure exposed functions, auth function, registration hooks, and forbidden functions on public worker-manager listeners
  • Observability: configure OTLP exporter, service name, sampling, metrics, and logs on the observability worker

Worker Config Format

Workers 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: true

  - name: iii-sandbox
    config:
      auto_install: true
      image_allowlist:
        - python
        - node

Managed Workers and Lockfiles

  • Browse registry workers at https://workers.iii.dev/.
  • Registry workers are installed with iii worker add NAME[@VERSION].
  • Direct OCI workers use image references such as ghcr.io/org/worker:tag.
  • Local workers point at local binary or development paths when supported by the worker config.
  • iii.lock records resolved binary artifacts or OCI image digests for reproducible installs.
  • Commit iii.lock with config. Use iii worker verify in CI and iii worker sync after cloning.
  • Use iii worker CLI commands for managed-worker lifecycle, lockfile, and verification workflows.

RBAC and Security

  • Public worker access should go through an RBAC-enabled iii-worker-manager listener.
  • auth_function_id returns allowed and forbidden functions, trigger type permissions, registration permission, registration prefix, and context.
  • forbidden_functions override exposure filters.
  • Discovery is filtered: denied functions should look forbidden, not available.
  • Keep RBAC policy examples close to the worker-manager configuration they protect.

Adapting This Pattern

Use the adaptations below when they apply to the task.

  • Start with file_based adapters for development, switch to Redis/RabbitMQ for production
  • Define queue configs per workload: high-concurrency for parallel jobs, FIFO for ordered processing
  • Use environment variables with defaults for all deployment-sensitive values (URLs, ports, credentials)
  • Enable only the workers you need — unused workers can be omitted from the config
  • Use iii worker add to add registry-managed workers, then commit both config and iii.lock
  • Set max_retries and backoff_ms based on your failure tolerance and SLA requirements
  • Configure the observability worker with your collector endpoint and sampling ratio
  • Use host: 127.0.0.1 instead of host: localhost to avoid IPv4/IPv6 mismatches on macOS
  • Keep private worker ports bound to localhost unless a listener has explicit RBAC/security policy

Pattern Boundaries

  • For function registration, trigger binding, invocation modes, built-in trigger shapes, custom

triggers, channels, and HTTP-invoked functions, prefer iii-core-primitives.

  • For SDK instrumentation APIs and language-specific package usage, prefer iii-sdk-reference.
  • For complete backend designs that combine queues, state, streams, and pub/sub, prefer

iii-architecture-patterns.

  • For worker-backed HTTP, queue, cron, pubsub, state, stream, observability, lifecycle, lockfile, and RBAC behavior, use the matching worker docs under engine/src/workers/**/skills.
  • Stay with iii-engine-config when the primary problem is configuring or deploying the engine itself.

When to Use

  • Use this skill when the task is primarily about iii-engine-config in the iii engine.
  • Triggers when the request directly asks for this pattern or an equivalent implementation.

Boundaries

  • Never use this skill as a generic fallback for unrelated tasks.
  • You must not apply this skill when a more specific iii skill is a better fit.
  • Always verify environment and safety constraints before applying examples from this skill.

Related skills

How it compares

Pick iii-engine-config over generic Docker Compose edits when you need iii-specific worker, adapter, and queue semantics in a single YAML manifest.

FAQ

What file does iii-engine-config edit?

iii-engine-config edits iii-config.yaml (also referenced as config.yaml), which defines iii engine workers, modules, adapters, queue configurations, ports, observability settings, RBAC rules, and worker manager listeners in a single manifest.

How does iii-engine-config handle environment variables?

iii-engine-config uses ${VAR:default} interpolation syntax in iii-config.yaml, where the default value after the colon is optional. This lets operators inject secrets and runtime overrides without hardcoding values into the engine manifest.

DevOps & CI/CDdevopsintegrations

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.