openrig-user-250a4d — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited openrig-user-250a4d (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This is an as-built guide to the shipped rig CLI. Use current code and rig ... --help as ground truth if anything here ever conflicts with older planning docs.
This is the daily-driving CLI guide for an OpenRig operator. It is not a guide to OpenRig internals or to changing OpenRig behavior — for that, work in the openrig product repo.
OpenRig v0.2.0 is published publicly as @openrig/[email protected] and GitHub Release v0.2.0. It includes the bundled PL-004 Coordination Primitive System: Phase A rig stream / rig queue, Phase B rig project / rig view, Phase C rig watchdog, and Phase D rig workflow / workflow-keepalive.
Do not confuse public package truth with this host's active daemon truth. As of 2026-05-04, the human reports the production daemon has been upgraded to v0.2.0; a local check showed rig --version and the product package version at 0.2.0, with the daemon running on port 7433.
Default posture on this host now:
rig queue, rig stream, rig project, rig view, rig watchdog, andrig workflow as active-host coordination surfaces for PL-004-backed work.
rig queue (daemon-backed SQLite) is thecanonical surface for queue routing since the 2026-05-11 host-CLI fix landed. Use rig queue create / handoff / update / show / list for all substantive work.
rigx queue, rigx stream, rigx project, and rigx view-proto only where thecurrent workflow is still explicitly operating on the temporary substrate coordination layer or a legacy artifact has not migrated. For queue specifically, rigx queue is recovery-only fallback; qitems written via rigx queue are invisible to daemon-backed reads and break fleet-wide routing discipline.
do not fall back to stale pre-upgrade assumptions about this host.
publish, or GitHub release unless a human grants the specific bounded gate. The public release already exists; further release operations need explicit scope.
Most work in OpenRig reduces to this loop:
rig whoami --jsonrig ps --nodes --jsonrig transcript ..., rig ask ..., rig chatroom history ...rig send, rig capture, rig broadcast, lifecycle commandsStart here after launch, compaction, or confusion:
rig whoami --jsonWhat it gives you today:
contextUsage when availableFlags:
rig whoami --session <name>
rig whoami --node-id <id>If the daemon is unreachable but identity can still be inferred, --json may return a partial result instead of crashing.
rig ps
rig ps --json
rig ps --nodes
rig ps --nodes --jsonUse rig ps --nodes --json for the current node inventory across rigs. It is the best machine-readable operator surface for:
Other health surfaces:
rig status
rig daemon status
rig config
rig preflight
rig doctorrig transcript <session> --tail 100
rig transcript <session> --grep "pattern"
rig transcript <session> --jsonrig send <session> "message"
rig send <session> "message" --verify
rig send <session> "message" --force
rig send <session> "message" --jsonUse --verify when you want delivery evidence. Use --force only when you intentionally want to bypass activity-risk checks.
Observed operator nuance for --verify:
Sent to ... + Verified: yes = strong positive delivery evidence.Sent to ... + Verified: no = ambiguous delivery, not automatic failure. We have repeatedly seen the message still land; treat this as verification drift until disproven.Sent to ... line or a hard error = send failure.When you get Verified: no, do not immediately retry blindly. First check one of:
rig capture <session>rig capture <session>
rig capture <session> --lines 50
rig capture --rig <name>
rig capture --pod <name> --rig <name>
rig capture --rig <name> --jsonCapture discipline:
rig capture <session> --lines 80.--lines 120 when the latest activity is ambiguous.--lines 200 or more only for explicit recovery/debug reconstruction, such as post-compaction restore, context-wall diagnosis, or a failed handoff.rig transcript <session> --tail ..., rig transcript <session> --grep ..., queue files, or status commands over large pane captures.rig broadcast --rig <name> "message"
rig broadcast --pod <name> "message"
rig broadcast "message"
rig broadcast --rig <name> "message" --jsonWithout --rig or --pod, broadcast targets all running sessions.
rig chatroom send <rig> <message> [--sender <name>]
rig chatroom history <rig> [--topic <name>] [--after <id>] [--since <ts>] [--sender <name>] [--limit <n>] [--json]
rig chatroom wait <rig> [--after <id>] [--topic <name>] [--sender <name>] [--timeout <seconds>] [--json]
rig chatroom clear <rig>
rig chatroom topic <rig> <topic-name> [--body <text>] [--sender <name>]
rig chatroom watch <rig> [--tmux]Key commands:
send — post a messagehistory — retrieve with composable filters (sender, since, after, topic)wait — block until new matching messages arrive (polls history, times out honestly)clear — delete all messages for the rig (destructive, rig-scoped)topic — set a topic markerwatch — SSE or tmux-based live streamRoundtable protocol:
rig chatroom history my-rig --limit 5rig chatroom history my-rig --json > /tmp/old-room.jsonrig chatroom clear my-rigrig chatroom topic my-rig "ROUND START"rig chatroom send my-rig "position..." --sender <session>rig chatroom wait my-rig --timeout 120rig chatroom topic my-rig "ROUND CLOSED"See docs/planning/roadmaps/chatroom-roundtable-protocol.md for the full protocol.
rig askrig ask <rig> "question"
rig ask <rig> "question" --jsonCurrent shipped behavior:
This is an evidence/context command. It is not a hidden second-LLM call.
rig up <source>
rig up <source> --plan
rig up <source> --yes
rig up <source> --json<source> can be:
.rigbundle pathBare names are special:
rig up launches from the spec libraryrig up treats the name as an existing-rig restore/power-on targetrig up fails loudly on ambiguityCurrent behavior notes:
--target <root> is only for .rigbundle / package installation. It does not change agent cwd.local: agent_ref values resolve relative to the rig spec directory, not your shell cwd.agents/ tree beside the YAML or rewrite those refs to path:/absolute/pathrig up --cwd <path> exists as a launch working-directory override applied to all members for that run (verify with rig up --help)6af2754 adds member-level starter_ref for named AgentStarter registry entries. Active host availability still depends on the running daemon; rig-real-17812d5 does not resolve starter_ref.
Legacy/spec-specific surfaces still ship too:
rig bootstrap <spec> [--plan] [--yes] [--json]
rig requirements <spec> [--json]starter_refSource >= 6af2754 lets a RigSpec member set:
starter_ref:
name: my-team-starter--claude-codeThe daemon resolves the named entry from the Agent Starter registry, applies the credential scan, and prepends the starter content as guidance_merge on fresh launch. It supports Claude and Codex members, rejects terminal members, rejects starter_ref + session_source.mode: fork, and allows starter_ref + session_source.mode: rebuild.
Runtime-truth rule: verify active daemon/runtime provenance before depending on this. If the live daemon is still rig-real-17812d5, starter_ref is source truth only and should not be used against the active control plane. After a runtime at or after 6af2754 is active, rig up --plan --json should expose a resolve_starter stage with detail.starterContent.
rig down <rig> # <rig> = rig name or id (active rig)
rig down <rig> --snapshot
rig down <rig> --delete
rig down <rig> --force
rig down <rig> --jsonrig down accepts a rig name or id (symmetric with rig up); the earlier name-to-404 caveat is resolved in v0.3.3. An ambiguous name matching more than one active rig is refused with the matching ids; re-run with rig down <id>.
If --snapshot succeeds, human output includes the restore hint.
rig release <rigId>
rig release <rigId> --delete
rig release <rigId> --jsonUse rig release for adopted/claimed-session rigs when you want OpenRig to stop managing the rig but leave the tmux sessions alive. This is the safe recovery/reset surface for the "sessions still exist, management is broken or stale" case. If the rig contains OpenRig-launched nodes, rig release refuses loudly instead of pretending the mixed rig is safe to detach.
rig snapshot <rigId>
rig snapshot list <rigId>
rig restore <snapshotId> --rig <rigId>rig restore requires --rig <rigId>.
Claude Code autonomy note:
rig whoami on boot may require the local permission allow list to include Bash(rig:*)rig export <rigId> -o rig.yaml
rig import <path> [--instantiate] [--materialize-only] [--preflight] [--target-rig <rigId>] [--rig-root <root>]
rig bundle create <spec> -o out.rigbundle
rig bundle inspect <bundle>
rig bundle install <bundle> [--plan] [--yes] [--target <root>] [--json]This still ships, but is explicitly marked legacy:
rig package validate <path>
rig package plan <path> [--target <dir>] [--runtime <runtime>] [--role <name>]
rig package install <path> [--target <dir>] [--runtime <runtime>] [--role <name>] [--allow-merge]
rig package list
rig package rollback <installId>rig discover
rig discover --json
rig discover --draftrig bind <discoveredId> --rig <rigId> --node <logicalId>
rig bind <discoveredId> --rig <rigId> --pod <namespace> --member <name>There is no shipped top-level rig claim command. The current adoption surface is discover, bind, adopt, and unclaim.
rig attach --self --rig <rigId> --node <logicalId>
rig attach --self --rig <rigId> --node <logicalId> --print-env
rig attach --self --rig <rigId> --pod <namespace> --member <name> --runtime <runtime>Use rig attach --self when the current agent should attach itself directly instead of going through discover + bind.
Current proven behavior:
tmux: attaches as a normal tmux-backed node, preserving inbound rig send / rig capturetmux: attaches as external_cli--print-env prints the OPENRIG_NODE_ID and OPENRIG_SESSION_NAME exports for the current shellRecommended flow:
rig attach --self --rig <rigId> --node <logicalId> --print-env > /tmp/openrig-self-attach.env
. /tmp/openrig-self-attach.env
rig whoami --jsonNotes:
rig whoami --json is the right verificationrig ps --nodes --json is currently the more reliable verification surface--display-name <name> when you want a stable human session label recordedrig adopt <path> --bind <logicalId=tmuxSessionOrDiscoveryId>
rig adopt <path> --bind <logicalId=...> --bind <logicalId=...> --json
rig adopt <path> --bindings-file <bindings.yaml>
rig adopt <path> --bind <logicalId=...> --target-rig <rigId> --rig-root <root>Use rig adopt when the sessions already exist and you want OpenRig to start managing them.
A bindings file is the durable map from authored logical IDs to live sessions. Shape:
bindings:
dev1.impl2: dev1-impl2@rigged-buildout
dev1.qa: dev1-qa@rigged-buildoutSpec + bindings is the proven recovery pair for adopted rigs. Spec gives OpenRig the intended topology. Bindings tells OpenRig which discovered live session belongs in each logical node.
This workflow is proven for the case where the external tmux sessions are still alive:
rig release <rigId> --delete
rig discover --json
rig adopt <spec.yaml> --bindings-file <bindings.yaml>What this does:
Important limits:
sessions still aliveThis is the proven workflow when a rig is already managed, but a new pod was created outside OpenRig and you want to add it later:
rig adopt <pod-fragment.yaml> --bindings-file <pod.bindings.yaml> --target-rig <rigId>Use this when:
rig discover --jsonWhat to prepare:
Verification loop:
rig discover --json
rig adopt <fragment.yaml> --bindings-file <bindings.yaml> --target-rig <rigId>
rig ps --nodes --json
rig export <rigId> -o rig.yamlSuccess looks like:
rig discoverrig ps --nodes --jsonrig export includes the new podOne rig can contain both:
rig expand / rig launchCurrent safety rule:
rig release is for claimed/adopted-only rigsrig release fails with contains_launched_nodesThe proven operator pattern is:
rig ps --nodes --jsonrig sendThis lets ordinary agents ask the manager for OpenRig help instead of every agent needing to be an OpenRig expert.
rig expand <rig-id> <pod-fragment-path> [--rig-root <path>] [--json]
rig launch <rigId> <nodeRef> [--json]
rig remove <rigId> <nodeRef> [--json]
rig shrink <rigId> <podRef> [--json]
rig unclaim <sessionRef> [--json]rig spec validate <path> [--json]
rig spec preflight <path> [--rig-root <root>] [--json]
rig agent validate <path> [--json]rig specs ls [--kind <kind>] [--json]
rig specs show <name-or-id> [--json]
rig specs preview <name-or-id> [--json]
rig specs add <yaml-or-directory> [--json]
rig specs sync [--json]
rig specs remove <name-or-id> [--json]
rig specs rename <name-or-id> <new-name> [--json]rig specs add <directory> installs a full spec tree when the directory contains rig.yaml or agent.yaml.
rig mcp serve [--port <port>]Current shipped MCP tools:
rig_uprig_downrig_psrig_statusrig_snapshot_createrig_snapshot_listrig_restorerig_discoverrig_bindrig_bundle_inspectrig_agent_validaterig_rig_validaterig_rig_nodesrig_sendrig_capturerig_chatroom_sendrig_chatroom_watchWhen the CLI behaves strangely, use the smallest truthful check first:
rig whoami --json
rig daemon status
rig ps --nodes --jsonSpecific operator rules:
Sent to ... + Verified: no is ambiguous delivery, not automatic failure. Check reply, rig capture, transcript evidence, or queue/outbox state before retrying.rig whoami --json can happen when identity is still inferable but the daemon-backed path is degraded.If you hit the unified-exec warning, inspect for stale one-shot helpers before touching live seats:
ps -axo pid,ppid,command | rg 'tmux send-keys|rig queue create|tmux attach|codex|claude'Safe cleanup target:
tmux send-keys ...Do not mass-kill:
tmux attach ...codex ...claude ...For deeper host/runtime triage, use the companion openrig-operator skill.
Design assumptions that hold in the shipped CLI:
--jsonrig whoami --jsonrig transcript <your-session> --tail 100rig ps --nodes --jsonrig chatroom history <rig> --limit 50Do not assume these exist unless the shipped help starts listing them:
rig claimrig blamerig replayrig env IS shipped (was previously listed as not-present). It exposes status, logs, and down for service-backed rigs and managed apps; verify with rig env --help.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.