Agent skill · software engineering · iii-hq

iii-worker-manager

WebSocket listener that SDK workers connect to. Use to expose the engine to trusted (internal) and untrusted (RBAC-protected) workers, gate function and trigger registration, and audit or transform every invocation through a middleware function. Mounts channel WebSocket endpoints on every listener.

Why this skill is useful

Provides specific configuration patterns and middleware integration for WebSocket listeners that the AI wouldn't reliably generate on its own.

What it needs

About 4k tokens when loaded. Last updated 2026-08-07. 18,563 stars on the source repository.

What this skill does

iii-worker-manager The iii-worker-manager is a mandatory engine worker that opens WebSocket listeners. The base engine.workers.iii-worker-manager entry sets the main port (49134 by default); #instance entries open separate listeners with their own RBAC, middleware, and registration hooks. Channels are mounted on every listener at /ws/channels/{channelid}. When to Use Exposing the engine to an untrusted network — add a second iii-worker-manager entry with an rbac block and an authfunctionid instead of opening the main engine port. Restricting which functions a connected worker can invoke — combine exposefunctions filters (operator-side) with forbiddenfunctions from AuthResult (per-session, hard deny). Auditing, rate-limiting, or enriching every invocation — set middlewarefunctionid on the listener; the middleware decides whether to call the target and what to return. Per-tenant or per-session namespace isolation — return functionregistrationprefix from the auth function so every function/trigger this session registers is transparently prefixed without the worker code knowing. Gating dynamic registration — wire onfunctionregistrationfunctionid, ontriggerregistrationfunctionid, or ontriggertyperegistrationfunctionid to validate or rewrite registrations. Boundaries The infrastructure carve-out (engine::channels::create, engine::workers::register, engine::log::, engine::baggage::) is always allowed on RBAC listeners regardless of exposefunctions. Adding one of those IDs to forbiddenfunctions denies it but logs a warning — workers may behave unpredictably (broken setup, lost logs, missing context). The first iii-worker-manager entry is the main engine port and should remain internal. Only RBAC-protected listeners belong on external networks. The middleware is not a pre-handler — it must invoke the target function itself (typically via iii.trigger) and return its result. Returning early without invoking simply skips the call. …

How to use it

Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:

@skills iii-hq/skills--dc8a9b

View the source on GitHub

Browse the @skills marketplace