iii-getting-started
Install the iii engine, set up your first worker, and get a working backend running. Use when a user wants to start a new iii project, install the SDK, or needs help with initial setup and configuration.
By iii-hq · 2,507 installs
npx skills add iii-hq/iii --skill iii-getting-started
Source repository · Upstream listing
Getting Started with iii
iii replaces your API framework, task queue, cron scheduler, pub/sub, state store, and observability
pipeline with a single engine and three primitives: Function , Trigger , Worker .
Step 1: Install the Engine
Verify it installed:
Step 2: Create a Project
iii project init learn iii scaffolds the harness template and starts it in one step; the
installer offers the same when you answer "y" at its prompt. iii project init template quickstart
scaffolds the Quickstart with a Python and a TypeScript worker.
Step 3: Start the Project
The file's engine: section starts the engine; containers: starts project workers. The engine
commonly listens on ws://localhost:49134 . Keep this foreground supervisor running.
namespace dev names the daemon and becomes III NAMESPACE for every worker it starts, so your
workers register and call each other in dev ; that is why the iii trigger commands below pass
n dev . Engine owned functions ( engine:: , configuration:: ) stay in default , and SDK calls
to them resolve there without a namespace (see iii sdk reference ).
Step 4: Install the SDK
Pick your language:
Step 5: Write Your First Worker
TypeScript
Python
Rust
registerTrigger logs a one time deprecation warning in iii 0.25. It keeps working, and it is still
the way to bind to the http , cron , queue, state , stream , and pub/sub workers, which have not
moved to source functions yet. To run a function after another one, use iii.observe (see
iii observe ).
Step 6: Test It
The http trigger type comes from the http worker. Add it once through the running Compose
daemon, then call your endpoint:
Expected response:
Add Existing Workers
To add a capability that already exists, browse https://workers.iii.dev/ and add it through the
running Compose daemon:
compose::add resolves dependencies, writes exact versions to worker compose.yaml , and restarts
the affected project. A local worker can be declared as a path:// container or added by path.
Install Agent Skills
Get all iii skills for your AI coding agent:
Skills teach your agent the top level iii model: functions, triggers, workers, observers, registry
access, SDKs, engine configuration, architecture patterns, and error handling. Worker backed capabilities
live with the worker docs and registry entries.
Adapting This Pattern
Add more functions to the same worker: each gets its own registerFunction + registerTrigger
calls
Use :: separator for function IDs to namespace them: orders::create , orders::validate
Add cron triggers with { type: 'cron', config: { expression: '0 0 9 ' } } (7 field: sec
min hour day month weekday year)
Add queue triggers with { type: 'durable:subscriber', config: { topic: 'my queue' } }
Use iii.trigger() to invoke other functions from within a function
Use iii.observe({ function id: "hello::greet" }, "audit::record") to run a registered function
after every successful call of another one (see iii observe )
Use state::get / state::set to persist data across function calls
Use iii trigger n <daemon compose::add worker=<name when the capability already exists in
the worker registry
Recommended Next Steps
After getting your first worker running:
1. Register functions, triggers, and workers : see iii core primitives
2. Observe functions and engine events : see iii observe
3. Choose the right SDK APIs : see iii sdk reference
4. Configure the engine : see iii engine config
5. Explore backend patterns : see iii architecture patterns
6. Handle failures well : see iii error handling
Key Resources
[Quickstart Guide](https://iii.dev/docs/quickstart)
[SDK Reference: Node.js](https://iii.dev/docs/reference/sdk node)
[SDK Reference: Python](https://iii.dev/docs/reference/sdk python)
[SDK Reference: Rust](https://iii.dev/docs/reference/sdk rust)
[Compose](https://iii.dev/docs/using iii/compose)
[Configuration](https://iii.dev/docs/using iii/configuration)
[Console](https://iii.dev/docs/using iii/console)
[Observers](https://iii.dev/docs/using iii/observers)
[Upgrading from 0.24.x](https://iii.dev/docs/upgrading/from 0 24 x)
Every docs page is also available as Markdown by adding a .md suffix to its URL.
Pattern Boundaries
For function and trigger registration patterns, worker creation, worker registry access, trigger
payload schemas, invocation modes, channels, custom triggers, and HTTP invoked functions, prefer
iii core primitives
For observing functions and engine events, and for migrating off registerTrigger , prefer
iii observe
For language specific SDK APIs, prefer iii sdk reference
For engine configuration, prefer iii engine config
For worker backed HTTP, cron, queue, pubsub, state, stream, and observability behavior, use the matching worker page on https://workers.iii.dev/
Stay with iii getting started for installation, initial setup, and first worker guidance
When to Use
Use this skill when the task is about installing iii, creating a new project, or writing a first
worker.
Triggers when the request asks for setup help, quickstart guidance, or getting started with iii.
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.