Engine Configuration
The iii Engine is configured via a YAML file (default:config.yaml). Configuration supports environment variable expansion and module-specific settings.
Configuration File
Default Location:config.yaml
Override: iii --config path/to/config.yaml
Example Location: engine/config.yaml
Structure
Environment Variables
Configuration files support environment variable expansion:REDIS_URL is set, it will be used; otherwise, redis://localhost:6379 is the default.
Top-Level Options
port
Type:number
Default: 49134
Description: WebSocket port for worker connections
modules
Type:array
Default: Default modules (if config file is missing)
Description: List of modules to load
Default Modules
If noconfig.yaml is found, the engine loads:
modules::api::RestApiModulemodules::queue::QueueModulemodules::cron::CronModulemodules::stream::StreamModulemodules::observability::OtelModule
Module Configuration
Each module has its own configuration schema:REST API Module
Class:modules::api::RestApiModule
port(number, default:3111): HTTP server porthost(string, default:"127.0.0.1"): Bind addressdefault_timeout(number, default:30000): Request timeout in millisecondsconcurrency_request_limit(number, default:1024): Max concurrent requestscors.allowed_origins(array): CORS allowed originscors.allowed_methods(array): CORS allowed HTTP methods
Queue Module
Class:modules::queue::QueueModule
RedisAdapter
RabbitMQAdapter
BuiltinAdapter (In-Memory)
Cron Module
Class:modules::cron::CronModule
KvCronAdapter (File-Based)
RedisAdapter
State Module
Class:modules::state::StateModule
KvStore
RedisAdapter
Stream Module
Class:modules::stream::StreamModule
port(number, default:3112): WebSocket server port for clientshost(string, default:"127.0.0.1"): Bind address
RedisAdapter
KvStore (In-Memory)
KV Server Module
Class:modules::kv_server::KvServer
store_method(string):"in_memory"or"file_based"file_path(string): Path to persistent storage (forfile_based)save_interval_ms(number, default:5000): Save interval in milliseconds
Observability Module
Class:modules::observability::OtelModule
enabled(boolean, default:true): Enable/disable observabilityservice_name(string, default:"iii"): Service name in tracesservice_version(string): Service versionservice_namespace(string): Service namespace (e.g.,"production")
exporter(string):"otlp","memory", or"both"endpoint(string): OTLP collector endpointsampling_ratio(number, 0.0-1.0): Sampling rate (1.0 = 100%)memory_max_spans(number): Max spans to keep in memory
metrics_enabled(boolean, default:true): Enable metricsmetrics_exporter(string):"memory"or"otlp"metrics_retention_seconds(number): How long to keep metricsmetrics_max_count(number): Max metrics to store
logs_enabled(boolean, default:true): Enable logslogs_exporter(string):"memory","otlp", or"both"logs_max_count(number): Max log records to storelogs_retention_seconds(number): How long to keep logslogs_batch_size(number): Batch size for OTLP exportlogs_flush_interval_ms(number): Flush interval in millisecondslogs_sampling_ratio(number, 0.0-1.0): Log sampling ratelogs_console_output(boolean): Output SDK logs to engine console
Bridge Client Module
Class:modules::bridge_client::BridgeClientModule
Purpose: Connect to remote iii engine and forward/expose functions
url(string): Remote engine WebSocket URLservice_id(string): Service identifierservice_name(string): Service nameexpose(array): Expose local functions to remote engineforward(array): Forward remote functions to local engine
Complete Example
Here’s a production-ready configuration:Minimal Configuration
For development without external dependencies:Configuration Loading
Implementation:src/modules/config.rs
The engine loads configuration in this order:
- Read YAML file (or use defaults if missing)
- Expand environment variables
- Parse YAML into
EngineConfigstruct - Validate module class names
- Create modules with configurations
Docker Configuration
Mount configuration as read-only volume:Ports Reference
| Port | Service | Config Key |
|---|---|---|
| 49134 | WebSocket (workers) | Top-level port |
| 3111 | HTTP API | RestApiModule.config.port |
| 3112 | Stream API (WebSocket) | StreamModule.config.port |
| 9464 | Prometheus metrics | (auto-configured by OtelModule) |
Next Steps
- Engine Overview - Architecture and concepts
- Modules Reference - Module documentation
- Protocol Reference - WebSocket message types