Why this change
iii is built on three primitives: Workers, Functions, and Triggers. Every concept in the system maps to one of these:- Workers are long-running processes that connect to the engine and provide capabilities — HTTP serving, queue processing, cron scheduling, state management, stream handling, and anything else the engine needs to operate.
- Functions are units of work. A worker registers functions, and any other worker (or the engine itself) can invoke them by ID.
- Triggers are the rules that cause functions to fire — an HTTP request, a cron schedule, a queue message, a state change.
workers:. The SDK connects workers. The docs describe workers. There is one concept, one name, and one mental model.
The previous Worker struct (representing a connected SDK runtime over WebSocket) has been renamed to WorkerConnection to avoid collision.
What changed
Config YAML
The top-levelmodules: key is now workers:, and each entry uses name: with a short identifier instead of class: with a Rust-style path.
The
modules: key is still accepted for backward compatibility, but workers: is the canonical form going forward.Worker name mapping
Adapter name mapping
Adapter entries insideconfig.adapter also switched from class: to name: with short identifiers:
Full config example
- Before
- After
Rust API
Crate module path
Themodules Rust module has been renamed to workers, and the trait definition file moved from module.rs to traits.rs.
Trait renames
Type alias and struct renames
Macro renames
EngineBuilder API
Implementation struct renames
WorkerConnection (was Worker)
TheWorker struct that represented a connected remote SDK runtime has been renamed to WorkerConnection and moved to a separate module.
Migration examples
Custom worker
- Before
- After
Custom adapter
- Before
- After
Migration checklist
- Rename
modules:toworkers:in all config YAML files - Replace
class:withname:using the new short identifiers (see tables above) - Replace adapter
class:withname:using short identifiers (kv,redis,builtin, etc.) - Update Rust imports from
iii::modules::toiii::workers:: - Update
iii::modules::module::Moduletoiii::workers::traits::Worker - Replace
register_module!withregister_worker! - Replace
add_module()/register_module()onEngineBuilderwithadd_worker()/register_worker() - Rename any
*Module/*CoreModulestruct references to the new*Worker/*Managernames - Update
crate::workers::Workerreferences tocrate::worker_connections::WorkerConnection