Atlas / Skills / iii-hq / Iii Engine Config

Iii Engine ConfigSAFE

skills/iii-hq/iii-engine-config

Effortlessly compose, extend, and observe every service in real-time for the first time ever.

Verdict
SAFE
Grade
B
Trust score
89 /100
Version
—
Hosts
—
License
—
Stars
18,867
01

Overview

Effortlessly compose, extend, and observe every service in real-time for the first time ever.

Read from source at commit af5298a11de6OBSERVED · 2026-10-28
Advertisement
02

What it tells the agent

The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.

---
name: iii-engine-config
description: >-
  Configure a managed iii engine through worker-compose.yaml or a directly supervised engine
  through config.yaml. Use for engine ports, RBAC via the rbac-proxy worker, observer limits,
  streams, sandboxes, and configuration storage.
---

# Engine Config

iii has two engine configuration modes. Do not mix them.

## Managed Compose engine

The presence of `engine:` means that Compose owns the engine process. Engine worker values are
direct mappings; there is no nested `config:` field.

```yaml
namespace: orders
engine:
  url: ws://127.0.0.1:49134
  registration_namespace_grace_ms: 5000
  workers:
    configuration:
      adapter:
        name: fs
        config:
          directory: ./config
    iii-worker-manager:
      host: 127.0.0.1
      port: 49134
    iii-http-functions: {}
    iii-stream:
      host: 127.0.0.1
      port: 3112
    iii-sandbox:
      auto_install: true
containers: {}
```

Start it with:

```bash
iii compose --namespace orders-daemon --up --file worker-compose.yaml
```

`engine.url` defaults to `ws://127.0.0.1:49134` and uses Compose's `${VAR:-default}` expansion.
`engine.workers` stays opaque until the engine reads the generated YAML, so its values use
`${VAR:default}` and retain numeric types. Compose materializes an owner-only config under
`<project-dir>/.iii/compose/<daemon-namespace>/` and removes it after clean shutdown. With
`III_COMPOSE_STATE_DIR`, it uses `<state-root>/<project-slug>/<daemon-namespace>/`. Changing `engine:`
requires restarting Compose. Do not combine a managed file with explicit `--engine`.

Allowed engine worker base names are:

- `configuration`
- `iii-worker-manager`
- `iii-http-functions`
- `iii-stream`
- `iii-sandbox`

Use `#instance` for another instance of an allowed worker. `iii-engine-functions`,
`iii-telemetry`, and `iii-observability` are injected automatically and must not be declared.

HTTP, cron, queue, state, pubsub, bridge, application, and custom workers belong under
`containers:`. Add registry packages with:

```bash
iii trigger -n orders-daemon compose::add worker=state
```

## Observers

Since 0.25 the engine reads an optional top-level `observers:` section (`iii-observe` explains the
model). Every key is optional; these are the defaults:

```yaml
observers:
  local_dispatch: true            # let SDKs run a worker's own functions in-process
  max_per_connection: 1024        # observers one connection may own (LIMIT_EXCEEDED)
  max_per_function: 4096          # observers one function may have (LIMIT_EXCEEDED)
  max_observe_depth: 8            # deeper activations are dropped (LOOP_GUARD)
  observer_grace_ms: 30000        # suspended observers of a disconnected worker wait this long
  disposed_retention_ms: 3600000  # a worker back after the grace period is told they were disposed
  owner_ack_timeout_ms: 30000     # an unacknowledged add fails with OWNER_TIMEOUT
  activation_timeout_ms: 30000    # an unanswered activation frees its slot and counts as TIMEOUT
  default_max_in_flight: 64       # max_in_flight of an observer that sets none
  max_queue_per_observer: 1024    # queued activations beyond max_in_flight (then OVERFLOW)
```

- In `config.yaml` it sits next to `workers:`. In a managed Compose file it goes under
  `engine.observers` and is passed through as written.
- Unknown keys and zero counts or depth are rejected at load; zero timeouts only warn. Changes need
  an engine restart.
- `observers.local_dispatch: false` turns off in-process calls for every worker.
- Inspect live observers with `engine::observers::list({ function_id?, namespace?, worker? })` and
  `engine::observers::get({ id })` (results are filtered to functions the caller may invoke).
  `engine::observers::dispose({ id })` is allowed for the observing worker and unrestricted callers.
- Metrics: `iii.observer.activations.total{function_id,delivery}`,
  `iii.observer.dropped.total{function_id,reason}`, `iii.observers{state}`,
  `iii.observer.reports.total{function_id}`,
  `iii.observer.activation.failures.total{function_id,reason}`; locally dispatched calls are counted
  in `iii.invocations.total` with `dispatch="local"`.

## RBAC with `rbac-proxy`

Keep the engine port internal and put the `rbac-proxy` worker in front of it when
untrusted workers, browsers, or agents need to connect:

```bash
iii trigger -n orders-daemon compose::add worker=rbac-proxy
```

`rbac-proxy` opens its own WebSocket port, speaks the worker protocol verbatim, and at the boundary
authenticates each connection (`rbac.auth_function_id`), gates every invocation and trigger binding
(`rbac.expose_functions`, plus `allowed_functions` / `forbidden_functions` from the auth result),
namespaces a session's registrations (`function_registration_prefix`), runs
`middleware_function_id` and the registration hooks, and filters `engine::*` discovery results to
what the caller may invoke. Its settings live in the `configuration` worker under id `rbac-proxy`:

```yaml
host: 0.0.0.0
port: 49200                        # the public RBAC port
engine_url: ws://127.0.0.1:49134   # the trusted internal engine listener
rbac:
  auth_function_id: my-project::auth-function
  expose_functions:
    - match("api::*")
```

RBAC is mandatory on untrusted networks: only the proxy's port may face one, never the engine port,
and a public proxy must always set `auth_function_id`. Full schema: https://workers.iii.dev/workers/rbac-proxy.

Observers under RBAC (0.25 engine): creating one requires that the session may invoke both the
observed function and the target, or it fails with `FORBIDDEN`. The engine's `rbac:` settings
accept `on_observer_registration_function_id`, a hook with the same contract as
`on_trigger_registration_function_id`: an object answer may rewrite `function_id`,
`target_function_id`, `args`, `filters`, and `metadata`; any other answer denies with `FORBIDDEN`.
Sessions with a `middleware_function_id` get no local dispatch, so the middleware always 
03

Trust audit

SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
none-observed
Shell
none-observed
Dependencies
pinned
Secrets in source
none-found

Findings (1)

MEDIUMInventory / provenance · inv.symlink · CWE-1104
sdk/packages/node/iii/local.yml
sdk/packages/node/iii/local.yml
Why it matters. link not followed

Gates applied: no_behavioural_pass.

Audited 2026-10-28 · audit v0.4.1 · source sha af5298a11de6full audit observations/trust-audit/skill/iii-hq__iii-engine-config.json · Report an issue / request a re-scan
04

Audit history

Every audit this skill has had.

DateSourceVerdictGradeScoreChange
2026-10-28af5298a11de6SAFEB89first audit
05

Questions

What does the iii-engine-config — iii-hq/iii skill do?

Effortlessly compose, extend, and observe every service in real-time for the first time ever.

Is iii-engine-config — iii-hq/iii safe to install?

The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.

What can iii-engine-config — iii-hq/iii access on my machine?

The audit observed no filesystem, network or shell use at all in its source.

How current is this page?

The grade is for one exact copy of the source (af5298a11de6), read on 2026-10-28. The repository is watched, and a new audit runs when it changes — this is the first audit.

Add this badge to your README

Shows this page's audit result and links back to it. It updates when the audit does.

ModelsAtlas audit badge

Markdown
[![ModelsAtlas audit: Iii Engine Config](https://modelsatlas.com/skills/iii-hq/iii-engine-config/badge.svg)](https://modelsatlas.com/skills/iii-hq/iii-engine-config/)

Not your listing, or something out of date? Claim or update your listing.

Advertisement