Skip to content
Back to skills

Using Iii

ASecurity

{/* TODO: Re-link worker references to https://workers.iii.dev/workers/<name> once the Worker Docs migration ships. */} {/* TODO: Add back once worker init is merged. <Note> This page covers using existing workers. For creating new workers (`iii worker init`), registering functions and triggers, and building or publishing worker images, see [Creating Workers / Workers](../creating-workers/workers). </Note> */}

  • 18,821 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 3, 2026
developmentbashexpressfastapidockertestingapi

Works with

  • cli
  • api

Security analysis

A100/100

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

Scanned September 3, 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-a866e595/badge)](https://www.skillsdirectory.com/skills/iii-hq-using-iii-a866e595)

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/0-16-0/using-iii/workers.mdx. -->

# Workers


{/* TODO: Re-link worker references to https://workers.iii.dev/workers/<name> once the Worker Docs migration ships. */}

{/* TODO: Add back once worker init is merged. <Note> This page covers using existing workers. For creating new workers (`iii worker init`), registering functions and triggers, and building or publishing worker images, see [Creating Workers / Workers](../creating-workers/workers). </Note> */}

## Worker lifecycle

Workers connect to iii over WebSocket. When a worker connects it becomes visible to the entire iii
system and every other worker within it. When a worker disconnects, its functions and triggers stop
being callable until it reconnects.

<Note>
  For the SDK calls that establish the connection from worker code, see [Creating Workers /
  Workers](../creating-workers/workers#connecting-to-the-engine).
</Note>

## Managing workers

The `iii worker` CLI commands cover the full lifecycle of every worker in your project: finding new
ones in the registry, installing them into `config.yaml` and `iii.lock`, controlling their running
state, inspecting their logs, and removing them when they're no longer needed.

### Finding workers

We maintain a worker registry which you can explore at [workers.iii.dev](https://workers.iii.dev/).
The registry contains many workers that encapsulate common services. See
[Worker Registry](./workers-registry) for more information on the worker registry.

### Adding a worker

<Note>
  You need iii [installed](../install) and [running](./engine) before adding a worker. To
  spin up a temporary iii instance for testing, run `iii --use-default-config` (see [Default
  configuration](./engine#default-configuration)).
</Note>

`iii worker add <name>` installs a worker into your project:

```bash
iii worker add iii-state
```

The worker is added to `config.yaml` and started automatically. To force a redownload of an existing
worker, use `iii worker reinstall <name>` (equivalent to `add --force`).

<Note>
  For local paths, Docker / OCI images, and version pinning, see [Worker Registry / Adding a
  worker](./workers-registry#adding-a-worker).
</Note>

### Listing workers

`iii worker list` shows every worker declared in your project's `config.yaml` along with its current
status:

```bash
iii worker list
```

### Starting and stopping workers

Added workers start automatically with the engine. To control them manually, use the `start`,
`stop`, and `restart` commands:

{/* TODO: drop the `-y` once `iii worker stop` is made non-interactive (planned). */}

```bash
iii worker start <name>        # start one worker
iii worker stop -y <name>      # stop one worker (-y skips the confirmation prompt)
iii worker restart <name>      # stop then start
```

<Note>
  To call functions inside running workers (directly with `worker.trigger` / `iii trigger`, or by
  binding them to events with optional condition gates), see [Triggers](./triggers).
</Note>

### Inspecting a worker

To check a specific worker's state, follow its logs, or run a command inside the worker's sandbox,
use:

```bash
iii worker status <name>             # config, sandbox state, recent logs
iii worker logs <name>               # stream the worker's logs
iii worker exec <name> -- <command>  # run a command inside the worker
```

### Updating a worker

`iii worker update` re-resolves locked workers and writes the new pins back to `iii.lock`. Pass a
worker name to update one, or omit it to update every locked worker:

```bash
iii worker update <worker-name>   # one worker
iii worker update                 # every locked worker
```

### Removing a worker

`iii worker remove` drops a worker from `config.yaml` and the engine tears down the running worker
process:

{/* TODO: drop the `-y` once `iii worker remove` / `iii worker clear` are made non-interactive (planned). */}

```bash
iii worker remove -y <worker-name>   # -y skips the confirmation when the worker is running
```

Downloaded artifacts remain on disk after removal. To delete them too, use
`iii worker clear -y <worker-name>`. Omit the name to clear every worker's artifacts.

## Worker skills

Every worker also ships with skills for Agentic work. Skills are managed by the `skills` worker, an
actively developed content-registry worker added to a project like any other.

Skill bodies load lazily. Top-level entries stay small; agents fetch deeper content via
`iii://<worker>/<leaf>` section URIs only when a function reference resolves to one.

We ship high level skills as well which make it possible for any agent to make immediate use of iii
and its workers.

{/* TODO: Re-document this section against the skills worker's stable API. The current text reflects v0.2.4 at https://workers.iii.dev/workers/skills, and the surface may change before stable release. */}

## Available functions and triggers

Functions and triggers come from connected workers. To use a trigger of a given type, you need the
worker that provides it to be connected. For example if you add `http` triggers via the iii-http
worker then you can now expose endpoints for your function just as you would in a web framework like
Express or FastAPI.

## Versioning

iii workers follow semver. A project records the resolved version of every managed worker in
`iii.lock`, which makes installs reproducible across machines and platforms.

### Version pins

Installing without a version specifier picks the latest release. Append `@<version>` to a registry
name to pin a specific release rather than tracking the latest:

```bash
iii worker add iii-state@1.2.0
```

The pin is recorded in `iii.lock` and replays on every subsequent install.

### The lockfile (iii.lock)

`iii.lock` is a YAML file at your project root. It pins each managed worker to a specific version
and source so the same worker set installs the same way across machines and platforms. Binary
workers can pin per-platform artifacts (macOS, Linux, Windows) in the same lockfile.

Commit `iii.lock` alongside `config.yaml` for reproducible installs. Two commands operate on the
lockfile directly:

```bash
iii worker sync            # install workers exactly from iii.lock
iii worker sync --frozen   # CI form: verify the lockfile without mutating local files
iii worker verify          # report drift between config.yaml and iii.lock
```

[`iii worker update`](#updating-a-worker) is the third lockfile-related command; it re-resolves pins
to the latest permitted versions and writes them back to `iii.lock`.

{/* TODO: Add a dedicated lockfile reference page for the per-field schema (top-level fields, LockedWorker, BinaryArtifact, ImageSource, manifest hash format). The dx-improves source includes `docs/workers/managed-worker-lockfile.mdx` which can be ported. */}

## Authoring workers

Creating a new worker, registering functions and triggers in worker code, and building or publishing
a worker image are out of scope for this page. See
[Creating Workers / Workers](../creating-workers/workers).

Files in this skill

  • cli.mdx2.8 KB
  • cli.mdx.skill.md2.8 KB
  • console.mdx7.2 KB
  • console.mdx.skill.md7.2 KB
  • deployment.mdx3.2 KB
  • deployment.mdx.skill.md3.2 KB
  • engine.mdx2.8 KB
  • engine.mdx.skill.md2.7 KB
  • functions.mdx6.9 KB
  • functions.mdx.skill.md7 KB
  • triggers.mdx11.3 KB
  • triggers.mdx.skill.md11.3 KB
  • workers-registry.mdx1.6 KB
  • workers-registry.mdx.skill.md1.7 KB
  • workers.mdx7.5 KB
  • workers.mdx.skill.md7 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…