Skip to content
Back to skills

Using Iii

ASecurity

engine: workers: configuration: {} containers: state: worker: package://api.workers.iii.dev/state version: "0.22.2" config_name: state api: worker: path://./workers/api start_after: [state] scripts: run: pnpm start ``` Registry packages require an explicit version. `path://` workers use `scripts.run` from the Compose file or `scripts.start` from their `iii.worker.yaml` manifest. Start a project and keep its daemon in the foreground: ```bash iii compose build --file worker-compose.yaml iii com...

  • 18,821 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 20, 2026
developmentrustbashkubernetesapi

Works with

  • api

Security analysis

A100/100

Pro scans all 21 files and shows the line behind each finding

Scanned September 20, 2026

npx -y skills add iii-hq/iii --skill using-iii --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Using Iii?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Using Iii
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/iii-hq-using-iii-388401f6/badge)](https://www.skillsdirectory.com/skills/iii-hq-using-iii-388401f6)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
<!-- generated by iii-skill-render. DO NOT EDIT (changes here are overwritten on the next render). Edit docs/next/using-iii/workers.mdx. -->


Workers are processes that connect to iii over WebSocket and register functions and trigger types.
When a worker disconnects, its registrations stop being callable until it reconnects.

## Worker identity and namespaces

A worker's identity is `(namespace, name)`. Two namespaces may use the same name; within one
namespace the name is exclusive. A duplicate live owner is rejected with
`WORKER_NAMESPACE_CONFLICT`.

The `namespace:` field in `worker-compose.yaml` selects the namespace for its containers. The
Compose daemon's `--namespace` separately addresses that daemon's `compose::*` functions.

## Declare workers with Compose

Project workers live under `containers:` in `worker-compose.yaml`:

```yaml
# namespace: default
engine:
  workers:
    configuration: {}
containers:
  state:
    worker: package://api.workers.iii.dev/state
    version: "0.22.2"
    config_name: state
  api:
    worker: path://./workers/api
    start_after: [state]
    scripts:
      run: pnpm start
```

Registry packages require an explicit version. `path://` workers use `scripts.run` from the Compose
file or `scripts.start` from their `iii.worker.yaml` manifest.

Start a project and keep its daemon in the foreground:

```bash
iii compose build --file worker-compose.yaml
iii compose --namespace dev --up --file worker-compose.yaml
```

`build` downloads all declared `package://` workers before startup. `--up` then reuses the shared
package cache. The command skips local `path://` workers.

The presence of `engine:` makes the daemon own and stop the engine. Without it, pass `--engine` or
set `III_URL` to connect to an engine managed elsewhere.

## Add a registry worker

`compose::add` resolves the package graph, writes exact versions into the Compose file, and restarts
the project:

```bash
iii trigger -n dev compose::add worker=state
iii trigger -n dev compose::add worker=queue@0.21.5
```

Pass `file=/absolute/path/worker-compose.yaml` when the daemon's working directory is not the
project directory. A registry root whose kind is `engine` is rejected because the engine already
supplies it.

Find published workers at [workers.iii.dev](https://workers.iii.dev/) and inspect a package's page
before adding it.

## Operate workers

```bash
iii trigger -n dev compose::status file=worker-compose.yaml
iii compose logs state --follow --namespace dev
iii trigger -n dev compose::restart file=worker-compose.yaml worker=state
iii trigger -n dev compose::update file=worker-compose.yaml worker=state
iii trigger -n dev compose::down file=worker-compose.yaml
```

`compose::restart worker=` restarts one container. `compose::update worker=` edits the package pin
and restarts the project. `compose::down` stops containers in reverse dependency order.

Use `engine::workers::list` and `engine::workers::info` for the engine's live connection view. Use
`compose::status` for process ownership, PID, and the last supervisor error.
Use `iii compose logs <worker> --follow --namespace <daemon>` for live raw stdout and stderr.

## Configuration

Packages ship defaults. A container can name its configuration-worker entry with `config_name` and
override values with `config_override`. Precedence is package default, stored configuration value,
then `config_override`.

```yaml
containers:
  http:
    worker: package://api.workers.iii.dev/http
    version: "0.21.3"
    config_name: http
    config_override:
      host: 0.0.0.0
      port: 3111
```

Compose passes the merged value through `III_CONFIG` and, when declared, publishes it to
`III_CONFIG_NAME`. See [Configuration](./configuration).

## Engine-managed exceptions

`configuration`, `iii-worker-manager`, `iii-http-functions`, `iii-stream`, and `iii-sandbox` remain
engine-owned. Put them under `engine.workers` for managed Compose, or in `config.yaml` only when an
external supervisor owns the engine. Internal `iii-engine-functions`, `iii-telemetry`, and
`iii-observability` are injected automatically. They must not be added as Compose package roots.

To configure the RBAC listener for untrusted workers, declare `iii-worker-manager` in
`engine.workers` (or direct-engine `config.yaml`); its full schema is on the
[iii-worker-manager page](https://workers.iii.dev/workers/iii-worker-manager).

## Workers outside Compose

Compose is optional for a process managed by Kubernetes, systemd, another host, or an SDK-driven
development command. Give it the engine URL and a worker name; once connected it participates in
the same function and trigger mesh. Compose only owns processes declared in its file.

## Migrating an existing project

0.23 removed `iii worker`, `worker::*`, and engine-side startup of project workers. Follow the
[manual migration guide](../upgrading/workers-to-compose) before starting an older project.

## Authoring workers

For SDK connection code, manifests, functions, triggers, and publishing, see
[Creating Workers / Workers](../creating-workers/workers).

Files in this skill

  • cli.mdx1.8 KB
  • cli.mdx.skill.md1.8 KB
  • compose.mdx47.5 KB
  • compose.mdx.skill.md47.4 KB
  • configuration.mdx7.6 KB
  • configuration.mdx.skill.md7.5 KB
  • console.mdx7.5 KB
  • console.mdx.skill.md7.5 KB
  • deployment.mdx3.2 KB
  • deployment.mdx.skill.md3.2 KB
  • engine.mdx3.1 KB
  • engine.mdx.skill.md2.8 KB
  • functions.mdx10.9 KB
  • functions.mdx.skill.md10.9 KB
  • namespaces.mdx7.6 KB
  • namespaces.mdx.skill.md7.6 KB
  • triggers.mdx11.4 KB
  • triggers.mdx.skill.md11.4 KB
  • workers-registry.mdx1.6 KB
  • workers-registry.mdx.skill.md1.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…