Skip to main content
iii uses a YAML configuration file to define modules and their settings. The engine supports environment variable expansion, making it easy to configure for different environments.

Configuration File

By default, iii looks for config.yaml in the current directory. You can specify a different path:
If no config file is found, iii loads default modules: HTTP, Queue, Cron, Stream, and Observability.

Environment Variable Expansion

Config files support environment variable expansion with default values:
Examples:
If STREAM_PORT is not set, it defaults to 3112. If a variable has no default and is not set, the engine will panic with an error.

Module Configuration

Basic Structure

Each module entry requires a class and optional config:

REST API Module

Configures the HTTP server for API endpoints.
number
default:"3111"
HTTP server port
string
default:"127.0.0.1"
Bind address (use 0.0.0.0 for all interfaces)
number
default:"30000"
Default request timeout in milliseconds
number
default:"1024"
Maximum concurrent requests

Stream Module

Real-time WebSocket state synchronization.
Alternative: File-based adapter

Queue Module

Redis-backed message queue for async job processing.

State Module

Persistent key-value storage for application state.

KV Server

Internal key-value server for coordination.

Observability Module

OpenTelemetry traces, metrics, and logs.
string
default:"memory"
Trace exporter: otlp (remote collector), memory (in-memory), or both
number
default:"1.0"
Sampling ratio (0.0 to 1.0). Use 1.0 to sample all traces.

Cron Module

Distributed cron scheduling.

PubSub Module

Publish-subscribe messaging.

Minimal Configuration

For development without Redis:

Environment Variables

Common environment variables: Set environment variables before starting iii:

Production Configuration

For production deployments:

Next Steps

Docker Deployment

Run iii in containers

Production Setup

Hardened production deployment