kind, title, status, topics, domains, applies-when, siblings, prerequisite-reads, last-verified-against-source, last-updated
kind
title
status
topics
domains
applies-when
siblings
prerequisite-reads
last-verified-against-source
last-updated
as-built
CLI Reference — Registered Commands and Options
active
orchestration
coordination
observability
knowledge-and-context
engineering-advisor
operating-advisor
Looking up the complete registered rig command/option surface or locating
the source that implements a command. Use command help for invocation details.
34fdcb8054
2026-10-26
CLI Reference — Registered Commands and Options
Verified against source commit 34fdcb80543903b054a982cc48bb302ae6871682.
The inventory below comes from the actual Commander tree returned by
createProgram() , not a grep of command
strings or an installed CLI from a different commit.
There are 90 top-level registrations , 410 registered command objects
below rig (including groups and the hidden restore apply command), and
1,304 explicitly registered option objects , including the root version
option. Aliases do not add command objects; short/long spellings of one
option do not add option objects. Commander-generated help is additional.
These are counts for that source snapshot, not a claim about a deployed release. The provider-switch and set-runtime rows include the later account-home options; those additions are not included in the snapshot counts. The environment section and the host edit, host remove and terminal attach rows were added later from source at 522d635c, and aren't in the snapshot counts either. With environment, main registers 91 top-level commands.
Reading this reference
Each table row lists one registered command, its positional arguments,
command aliases, and its own declared options . <value> denotes a
required positional/option value; [value] is optional; ... is variadic.
An option marked required was registered with Commander's mandatory
option setting. An option marked (repeatable) collects every value when it is
given more than once. Conditional requirements enforced by an action are not
encoded by this inventory.
Use rig <command> --help for descriptions, choices, defaults, and examples.
Defaults may depend on the current directory, configuration, or action code;
they are not fixed by the flags table. Parent command options are listed on
the parent row, not repeated on every child. The root declares -V, --version;
Commander also provides -h, --help and applicable help [command] handling.
The only explicit command alias at this pin is rig host ls for host list.
An option named --json selects the command's JSON mode; it does not imply
that every verb shares one response schema. The handler and its daemon
route remain the source for result/error shape and side effects.
Entry points and practical routes
Bare rig opens the TUI, the status dashboard rather than an agent conversation, when both
stdin and stdout are terminals. Arguments,
pipes, and redirected streams follow normal CLI parsing.
runFrontDoor and openMissionControl
own the entry behavior; tuiCommand
owns explicit TUI options; rig terminal open saved:kernel --window opens a terminal view
of the OpenRig TUI, the operator and the advisor (in a new tab or window, or the current
Herdr session), and rig tui --shared is the dashboard-only fallback when that view cannot open. A daemon-down transport result can still open the
recovery cockpit; it is not automatically a reason to exit before rendering.
Need
Start here
Install, upgrade, or make a first project
Getting started , then rig setup --help and rig doctor --help.
Inspect live state and diagnose failures
rig ps, rig health, rig doctor; health diagnosis .
Define/start rigs and seats
rig spec, rig agent, rig up, rig create, rig grow, rig seat continue; RigSpec and AgentSpec .
Snapshot, restore, or hand over
rig snapshot, rig restore, rig restore-check, rig restore-packet, rig handover; lifecycle source map .
Find owned work or communicate
rig queue, rig send, rig stream, rig chatroom, rig walk; coordination source map .
Work with projects, missions, slices, and proof
rig scope, rig proof, rig workflow; project workspace and SDLC conventions .
Read/project context and skills
rig context, rig skill, rig package; context source map .
Connect another host or human channel
rig host, rig gateway, rig slack; Slack setup .
Check, share, or start a rig bundle
rig bundle check, rig bundle, rig up <GitHub folder link>; packaging source map .
Find a specialist seat across rigs and hosts
rig roster (read-only).
Read event, queue-transition, and tenure telemetry
rig telemetry.
Do not confuse rig project's coordination/classification surface with
rig scope's project and work-tree commands. Likewise, rig spec manages
rig specifications, rig specs browses the spec library, and
rig workflow specs lists workflow specifications. The tree below preserves
those distinct registrations.
A successful read, queue admission, terminal delivery, proof judgment, and
publication are different operations. Consult the relevant command handler
and workflow runtime when deciding what a
result establishes. This reference does not turn an inventory entry into
permission to perform that operation.
Reproducing the registration inventory
In a development checkout at the stamped commit, after installing its locked
dependencies and building the daemon and CLI, this import walks the registered
tree without parsing arguments or invoking command actions:
This inspects registration, not action semantics or availability of a running
daemon. index.ts imports the command
factories; their implementations live in
packages/cli/src/commands/ .
The tables below retain registration order. Only the command/argument/alias/
option cells are mechanically transcribed; the explanations above are authored.
Registered command tree
Root: rig; declared option: -V, --version.
start
Invocation
Aliases
Declared options
rig start
—
--last--all--rigs <names...>--json
daemon
Invocation
Aliases
Declared options
rig daemon
—
—
rig daemon start
—
--port <port>--host <host>--db <path>--allow-db-conflict--no-kernel--wait-for-kernel--wait-for-kernel-ms <ms>
rig daemon stop
—
—
rig daemon status
—
—
rig daemon logs
—
--follow
status
Invocation
Aliases
Declared options
rig status
—
--json
rig status --json prints one object: daemon, kernel, workspaceRoot, rigs and cmux.
daemon.reachable has three values. true: the daemon answered its health probe (it may still
report healthy: false, and may carry a reason and eventLoop evidence). false: positively down
(state is stopped or stale). null: not confirmed (state is unverified, or running
with reason: "unresponsive" because /healthz did not answer). When reachable is not true,
the sections that were not read are null.
snapshot
Invocation
Aliases
Declared options
rig snapshot <rig>
—
--intended-seats <ids>
rig snapshot list <rig>
—
—
restore
Invocation
Aliases
Declared options
rig restore
—
—
rig restore apply <snapshotId> (hidden)
—
--rig <rig> required
rig restore status <attemptId>
—
--rig <rig> required --json
crash-cart
Invocation
Aliases
Declared options
rig crash-cart
—
--json
gateway
Invocation
Aliases
Declared options
rig gateway
—
—
rig gateway human
—
—
rig gateway human add <entityId>
—
--display-name <name> required --binding <kind:connectorRef:secretsRef:role[:handle=<id>]> required (repeatable)--delivery-class <A|B|C|D> required --away--replace--reason <reason>--actor <actor>--organization <id>--group <id> (repeatable)--policy <text>--policy-file <path>--default
rig gateway human list
—
--json
rig gateway human quiet
—
—
rig gateway human quiet set <entityId>
—
--daily <window>--until <time>--tz <zone>--actor <actor>--json
rig gateway human quiet end <entityId>
—
--actor <actor>--json
rig gateway human quiet clear <entityId>
—
--actor <actor>--json
rig gateway human quiet show <entityId>
—
--json
rig gateway human mode
—
—
rig gateway human mode save <entityId> <name>
—
--availability <value>--expected-back <when>--decision-room <words>--exclude <item...>--quiet <rule>--tz <zone>--account <where>--actor <actor>--json
rig gateway human mode saved <entityId> [name]
—
--json
rig gateway human mode apply <entityId> <name>
—
--until <time>--tz <zone>--actor <actor>--json
rig gateway human mode current <entityId>
—
--json
rig gateway human mode end <entityId>
—
--scheduled--actor <actor>--json
rig gateway human mode account <entityId> <applicationId>
—
--json
rig gateway human mode room <entityId>
—
--json
rig gateway human mode decide <qitemId>
—
--application <id> required --choose <question=option...>--reason <why> required --reversible--irreversible--actor <actor>--json
rig gateway human mode decisions <entityId> <applicationId>
—
--json
rig gateway human show <entityId>
—
--json
rig gateway human set <entityId> <field> <value>
—
--reason <reason>--actor <actor>
rig gateway human remove <entityId>
—
--force
rig gateway channel
—
—
rig gateway channel add <id>
—
--display-name <name> required --binding <slack:connectorRef:secretsRef:channelId> required --organization <id>--group <id> (repeatable)--policy <text>--policy-file <path>--replace
rig gateway channel remove <id>
—
--force
rig gateway org
—
—
rig gateway org set <id>
—
--name <name>--policy <text>--policy-file <path>
rig gateway group
—
—
rig gateway group set <id>
—
--organization <id>--name <name>--policy <text>--policy-file <path>
rig gateway participants
—
--organization <id>--json
rig gateway default [entityId]
—
--clear
Several people may be registered. Organizations, groups, readable policy, shared channels and the default person are
kept in $OPENRIG_HOME/gateway/participants.yaml, never in a person's fragment, so an older daemon still loads every
person after a rollback. human set <entityId> organization|groups|policy <value> writes there (unset clears;
@<path> reads a policy file). participants --json carries each participant's kind, address, organization,
groups, default and policy (a list of { source, text }, organization first), plus default, organizations,
groups, warnings and participantFile. default with no argument prints the current default and its source
(chosen or only-person), or null with the reason. See docs/reference/gateway-participants.md.
human set <entityId> slack-subscription <value> — sets the person's Slack subscription: every-ask (the default) posts every ask to them to Slack; urgent-only posts only asks created with --alert, and other asks wait on Steering and the TUI; unset removes the authored subscription so the default applies. human show prints the value with its origin, authored or default (slack-subscription: every-ask (default)); --json carries it as record.slackSubscription { value, source }.
parked
Invocation
Aliases
Declared options
rig parked [seat]
—
--rig <rig>--json
export
Invocation
Aliases
Declared options
rig export <rig>
—
-o, --output <path>
import
Invocation
Aliases
Declared options
rig import <path>
—
--instantiate--materialize-only--workspace-only--preflight--target-rig <rigId>--rig-root <root>--cwd <path>
ui
Invocation
Aliases
Declared options
rig ui
—
—
rig ui open
—
—
tui
Invocation
Aliases
Declared options
rig tui
—
--shared
rig tui commands
—
--json
package
Invocation
Aliases
Declared options
rig package
—
—
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 rollback <installId>
—
—
rig package list
—
—
bootstrap
Invocation
Aliases
Declared options
rig bootstrap <spec>
—
--plan--yes--cwd <path>--target <path>--skip-version-check--force--json
requirements
Invocation
Aliases
Declared options
rig requirements <spec>
—
--json
discover
Invocation
Aliases
Declared options
rig discover
—
--json--draft
attach
Invocation
Aliases
Declared options
rig attach
—
--self required --rig <rigId> required --node <logicalId>--pod <namespace>--member <name>--runtime <runtime>--cwd <path>--display-name <name>--print-env--json
bind
Invocation
Aliases
Declared options
rig bind <discoveredId>
—
--rig <rigId> required --node <logicalId>--pod <namespace>--member <name>
adopt
Invocation
Aliases
Declared options
rig adopt <path>
—
--bind <logicalId=tmuxSessionOrDiscoveryId> (repeatable)--bindings-file <path>--target-rig <rigId>--rig-root <root>--json
bundle
Invocation
Aliases
Declared options
rig bundle
—
—
rig bundle create <spec>
—
-o, --output <path> required --name <name>--bundle-version <ver>--include-login-files--include-packages <refs...>--rig-root <root>--context-pack <dir> (repeatable)--project-dir <dir>--preset <name>--seat <member=runtime> (repeatable)--notes <text>--min-daemon-version <ver>--min-cli-version <ver>--allow-drift--json
rig bundle configurations <spec>
—
--json
rig bundle inspect <path>
—
--preset <name>--seat <member=runtime> (repeatable)--json
rig bundle install <path>
—
--preset <name>--seat <member=runtime> (repeatable)--non-interruptive--no-non-interruptive--plan--yes--target <root>--cwd <path>--skip-version-check--force--json
rig bundle check <folder>
—
--json
rig bundle history
—
--rig <name>--since <iso>--json
up
Invocation
Aliases
Declared options
rig up <source>
—
--non-interruptive--no-non-interruptive--plan--yes--cwd <path>--env <KEY=VALUE> (repeatable)--name <rig>--target <root>--preset <name>--seat <member=runtime> (repeatable)--existing--fresh <seats...>--json--host <id>
down
Invocation
Aliases
Declared options
rig down <rig>
—
--delete--force--snapshot--yes--json--host <id>
archive
Invocation
Aliases
Declared options
rig archive <rig>
—
--force--json
unarchive
Invocation
Aliases
Declared options
rig unarchive <rig>
—
--json
host
Invocation
Aliases
Declared options
rig host
—
—
rig host add
—
--id <id> required --transport <transport> required --target <target>--user <user>--url <url>--bearer-env <name>--bearer-file <path>--notes <text>--json
rig host select <id>
—
--json
rig host rename <name>
—
--json
rig host edit <id>
—
--target <target>--user <user>--url <url>--notes <text>--json
rig host remove <id>
—
--json
rig host pair <url>
—
--id <id>--timeout <seconds>--human <address>--json
rig host list
ls
--json
rig host doctor <id>
—
--posture <profile>--public-addr <ip>--json
rig host pair needs the target daemon to run with OPENRIG_AUTH_BEARER_TOKEN set,
even when it is bound to a tailnet address and so starts without one: pairing hands
over that token. Without it, the target's POST /api/hosts/pair-request answers 409
pair_target_no_bearer; it answers 409 pair_human_required when no single
registered person can approve (none, or several with no default; name one with
--human) (packages/daemon/src/routes/hosts.ts:167-186).
Registration makes a host visible in topology; remote FEED attention remains opt-in.
The human-readable success output of host add and host pair now includes the FEED
next step alongside the existing host doctor suggestion. For an HTTP entry named
laptop, run this on the local instance to include its attention items:
The key uses the registry id, including any dots, and defaults to false. Registration
does not change that setting. SSH entries instead explain that FEED needs an HTTP entry;
ids reserved by feed settings (such as progress) get a different-id suggestion rather
than an invalid command. --json keeps its single JSON result without these hints.
The host CLI tests execute the advertised command against an isolated config and cover
registration, reserved names and JSON output; pairing responses are simulated, so they
do not establish connectivity to a live peer.
ps
Invocation
Aliases
Declared options
rig ps
—
--json--no-cleanup--resources--nodes--full--verbose--limit <n>--fields <list>--summary--filter <key=value>--active--running-A, --all-rigs--rig <name>--session <name>--include-archived--host <id>--all-hosts--hosts <ids>
--nodes --json — each seat carries the daemon's served needsAttention flag; the CLI doesn't re-derive it, and it is absent when an older daemon doesn't serve it. arbitratedNeedsInput and needsInputEvidence ({ rung, observedAt } or null) come with --full, or by name through --fields. startedWithoutRequired lists the required startup files a handover's successor started without, and the compact read keeps it.
roster
Invocation
Aliases
Declared options
rig roster
—
—
rig roster list
—
--folder <path>--json
rig roster show <id>
—
--folder <path>--json
rig roster find <query>
—
--folder <path>--json
mcp
Invocation
Aliases
Declared options
rig mcp
—
—
rig mcp serve
—
--port <port>--http--bind <host:port>--grant-service <url>--grant-service-header-file <path>--oauth-resource <url>--oauth-issuer <url>
rig mcp token
—
—
rig mcp token add <name>
—
--seat <session> required --rig <name...>--root <name...>--workspace--owner
rig mcp token list
—
--json
rig mcp token revoke <name>
—
—
acp
Invocation
Aliases
Declared options
rig acp
—
—
rig acp run <qitemId> <agent...>
—
--cwd <dir>--permissions-to <session>--load-session <id>--poll-seconds <n>
rig acp serve
—
--to <member@rig>--as <address>--poll-seconds <n>
rig acp cancel <runId>
—
—
rig acp stop <runId> [stopCommand...]
—
—
exec
Invocation
Aliases
Declared options
rig exec
—
—
rig exec harnesses
—
--json
rig exec run <qitemId>
—
--harness <name> required --cwd <dir>--permissions-to <session>--load-session <id>--wait--plan--again--poll-seconds <n>
rig exec status <runIdOrQitemId>
—
--json
rig exec cancel <runId>
—
—
rig exec connector <runId> (hidden)
—
—
agent
Invocation
Aliases
Declared options
rig agent
—
—
rig agent validate <path>
—
--json
spec
Invocation
Aliases
Declared options
rig spec
—
—
rig spec show <rig-id>
—
--json--as-template
rig spec audit <path>
—
--json
rig spec validate <path>
—
--json
rig spec preflight <path>
—
--rig-root <root>--json
transcript
Invocation
Aliases
Declared options
rig transcript <session>
—
--tail <lines>--grep <pattern>--host <id>--json
send
Invocation
Aliases
Declared options
rig send [session] [text]
—
--to <sessions> (repeatable)--pod <name>--rig <name>--verify--force--wait-for-idle <seconds>--raw--dangerously-interact--type-without-checking--reason <text>--urgent--host <id>--from <session>--context <ref>--json
stream
Invocation
Aliases
Declared options
rig stream
—
—
rig stream emit
—
--source <session> required --body <text> required --hint-destination <session>--hint-type <type>--hint-urgency <urgency>--hint-tags <tags>--format <fmt>--interrupt--id <streamItemId>--json
rig stream list
—
--source <session>--hint-destination <session>--tag <tag>--since <iso>--until <iso>--limit <n>--after <sortKey>--include-archived--json
rig stream watch
—
--json
rig stream show <streamItemId>
—
--json
rig stream archive <streamItemId>
—
--json
rig stream subscribe <readerSession>
—
--tags <tags>--type <hintType>--actor <session>--json
rig stream unsubscribe <readerSession>
—
--json
rig stream subscriptions
—
--json
rig stream read
—
--limit <n>--reader <session>--json
rig stream act <streamItemId>
—
--work <qitemId>--decline <reason>--duplicate <id>--reader <session>--json
Stream intake: the stream.intake setting (default queue.worker, or a canonical <seat>@<rig>) receives each emitted item.
It opens an intake row for that seat, which wakes it, or adds a note to that seat's intake row still pending; a critical
or interrupting item makes the row urgent. rig config set stream.intake off keeps emits passive. A runner's
default-permit record (tag runner-permission-permit) opens no row.
queue
Invocation
Aliases
Declared options
rig queue
—
—
rig queue create
—
--source <session>--destination <session> required --body <text>--body-file <path>--body-context <ref>--mission <id>--slice <id>--gate <role>--priority <priority>--tier <tier>--tags <tags>--expires-at <iso>--id <qitemId>--target-repo <name>--summary <text>--human-intent <intent>--alert--human-detail-file <path>--reply-to <qitemId>--human-questions-file <path>--evidence-ref <path>--host <id>--no-nudge--verify--full--json
rig queue claim <qitemId>
—
--destination <session>--full--json
rig queue unclaim <qitemId>
—
--destination <session>--reason <text>--full--json
rig queue update <qitemId>
—
--actor <session>--state <state>--reopen--closure-reason <reason>--closure-target <target>--closure-required-at <iso>--resolution <text>--blocked-on <blocker>--wake-watchdog <jobId>--wake-after <duration>--summary <text>--evidence-ref <path>--note <text>--full--json
rig queue block <qitemId>
—
--on <blocker> required --actor <session>--summary <text>--evidence-ref <path>--note <text>--continuation <text>--wake-watchdog <jobId>--wake-after <duration>--full--json
rig queue resolve <qitemId>
—
--decision <text> required --actor <session>--bearer <token>--no-notify--json
rig queue handoff <qitemId>
—
--from <session>--to <session> required --body <text>--body-file <path>--note <text>--priority <priority>--tier <tier>--tags <tags>--gate <role>--target-repo <name>--summary <text>--evidence-ref <path>--alert--host <id>--no-nudge--full--json
rig queue handoff-and-complete <qitemId>
—
--from <session>--to <session> required --body <text>--body-file <path>--note <text>--priority <priority>--tier <tier>--tags <tags>--gate <role>--target-repo <name>--summary <text>--evidence-ref <path>--alert--host <id>--no-nudge--full--json
rig queue whoami
—
--session <session>--recent-limit <n>--work-candidates--json
rig queue fallback <qitemId>
—
--destination <session> required --reason <text>--json
rig queue show <qitemId>
—
--full--json
rig queue transitions <qitemId>
—
--json--full
rig queue list
—
-a, --all-A, --all-rigs--full--owned--mine-o <format>--destination <session>--source <session>--state <state>--target-repo <name>--limit <n>--json
rig queue overdue
—
--rig <name>-A, --all-rigs--full--limit <n>--json
rig queue undelivered
—
--rig <name>-A, --all-rigs--full--limit <n>--json
rig queue inbox-drop <destinationSession>
—
--sender <session>--body <text>--body-file <path>--tags <tags>--urgency <urgency>--audit <pointer>--id <inboxId>--json
rig queue inbox-absorb <inboxId>
—
--receiver <session> required --json
rig queue inbox-deny <inboxId>
—
--receiver <session> required --reason <text> required --json
rig queue inbox-pending <destinationSession>
—
--json
rig queue outbox-record
—
--sender <session>--destination <session> required --body <text>--body-file <path>--tags <tags>--urgency <urgency>--audit <pointer>--id <outboxId>--json
rig queue outbox-list <senderSession>
—
--limit <n>--json
slack
Invocation
Aliases
Declared options
rig slack
—
—
rig slack setup
—
--channel <id>--inbound-destination <session>--minimum-level-that-posts <level>--minimum-level-that-interrupts <level>--source-label <label>--secrets-env-file <path>--required-scopes <csv>--reactions <mode>--reason <reason>--actor <actor>
rig slack status
—
--json
rig slack manifest
—
--url--json
rig slack verify
—
--json
rig slack channel-map
—
—
rig slack channel-map list
—
--json
rig slack channel-map set <match> <channel>
—
--inbound <seat>--reason <reason>--actor <actor>
rig slack channel-map remove <match>
—
--reason <reason>--actor <actor>
rig slack enable
—
--reason <reason>--actor <actor>
rig slack disable
—
--reason <reason> required --actor <actor>
rig slack post-open-asks
—
--reason <reason>--wait <seconds>--actor <actor>--json
rig slack outbound
—
--json
rig slack inbound
—
—
project
Invocation
Aliases
Declared options
rig project
—
—
rig project experimental
—
—
rig project experimental enable
—
--config <file> required --max-requests <n>--timeout-ms <n>--json
rig project experimental disable
—
--config <file> required --max-requests <n>--timeout-ms <n>--json
rig project experimental status
—
--config <file> required --max-requests <n>--timeout-ms <n>--json
rig project experimental capture
—
--config <file> required --input <file> required --output <file> required --json
rig project decisions
—
—
rig project decisions status
—
--json
rig project candidates
—
--project <id> required --taxonomy <file> required --classifier-version <version> required --evidence-epoch <epoch> required --decisions <file>--experiment <file>--decide--limit <count>--json
rig project wake
—
--project <id> required --taxonomy <file> required --classifier-version <version> required --evidence-epoch <epoch> required --decisions <file>--experiment <file>--decide--limit <count>--json
rig project shadow-status
—
—
rig project shadow-drain
—
--actor <name>
rig project shadow-stop
—
--actor <name>
rig project lease-acquire
—
--session <session> required --evaluate-deadness-first--json
rig project lease-heartbeat
—
--lease-id <id> required --session <session> required --json
rig project lease-show
—
--json
rig project reclaim-classifier
—
--session <session> required --if-dead--reason <text>--json
rig project classify <streamItemId>
—
--session <session> required --lease-id <id> required --attempt-id <id>--execution-id <id>--type <type>--urgency <urgency>--maturity <maturity>--confidence <confidence>--destination <destination>--action <action>--area <area>--scope-ref <id>--duplicate-of <streamItemId>--needs-human <value>--classifier-version <v>--taxonomy-version <v>--candidate-set-version <v>--json
rig project list
—
--session <session>--destination <destination>--area <area>--scope-ref <id>--needs-human <value>--limit <n>--json
rig project show <projectId>
—
--json
view
Invocation
Aliases
Declared options
rig view
—
—
rig view list
—
--json
rig view show <viewName>
—
--rig <rig>--limit <n>--mission <id>--project <name>--json
rig view register
—
--name <name> required --definition <sql> required --session <session> required --json
terminal
Invocation
Aliases
Declared options
rig terminal
—
—
rig terminal open <view>
—
--provider <name>--session <name>--window--expected-plan <id>--json
rig terminal views
—
--json
rig terminal status
—
--provider <name>--session <name>--json
rig terminal attach <session>
—
--read-only
See named terminal sessions to select a
Herdr session per request, including session-bound previews and window reuse.
watchdog
Invocation
Aliases
Declared options
rig watchdog
—
—
rig watchdog register
—
--spec <path>--policy <policy> required --target-session <session> required --interval-seconds <n> required --registered-by <session> required --threshold-bytes <n>--threshold-mb <n>--threshold-tokens <n>--threshold-percent <n>--watched-file <path>--requires-job <jobId>--message <text>--active-wake-interval-seconds <n>--scan-interval-seconds <n>--json
rig watchdog list
—
-a, --all--full--limit <n>--json
rig watchdog show <jobId>
—
--json
rig watchdog status <jobId>
—
--json
rig watchdog stop <jobId>
—
--reason <text>--json
rig watchdog update <jobId>
—
--interval-seconds <n>--message <text>--spec <path>--json
workflow
Invocation
Aliases
Declared options
rig workflow
—
—
rig workflow validate <specPath>
—
--json
rig workflow compile <missionPath>
—
--operation-key <key>--json
rig workflow revise <instanceId>
—
--apply--expected-version <number>--expected-digest <sha256>--operation-key <key>--actor-session <session>--reason <text>--json
rig workflow operation <key>
—
--json
rig workflow instantiate-lifecycle <missionPath>
—
--operation-key <key> required --root-objective <text> required --created-by <session> required --entry-owner <session>--rig <name>--json
rig workflow instantiate <specPath>
—
--root-objective <text> required --created-by <session> required --entry-owner <session>--rig <name>--project <id>--mission <id>--slice <id>--tags <tags>--json
rig workflow project
—
--instance <id> required --current-packet <qitem-id> required --exit <kind> required --actor-session <session> (only when the caller's session can't be derived)--result-note <text>--evidence-ref <ref>--wait-for-proof <scope>--blocked-on <ref>--next-owner <session>--acceptance-candidate <identity>--acceptance-verdict <verdict>--acceptance-evidence-ref <path>--json
rig workflow list
—
--status <s>--json
rig workflow specs
—
--json
rig workflow guidance <instanceId>
—
--packet <id>--component <id>--full--json
rig workflow show <instanceId>
—
--json
rig workflow trace <instanceId>
—
--full--json
rig workflow continue <instanceId>
—
--json
rig workflow run <specPath>
—
--root-objective <text> required --created-by <session> required --entry-owner <session>--rig <name>--project <id>--mission <id>--slice <id>--tags <tags>--json
rig workflow watch <instanceId>
—
--json
rig workflow route <instanceId>
—
--to <session> required --actor-session <session> (only when the caller's session can't be derived)--packet <qitem-id>--reason <text>--json
rig workflow resume <instanceId>
—
--actor-session <session> (only when the caller's session can't be derived)--occurrence <failed-qitem-id>--decision <text>--json
rig workflow abort <instanceId>
—
--reason <text> required --actor-session <session> (only when the caller's session can't be derived)--json
rig workflow status
—
--json
capture
Invocation
Aliases
Declared options
rig capture [session]
—
--rig <name>--pod <name>--lines <n>--history-plus-pane--readable--size <WxH>--host <id>--json
broadcast
Invocation
Aliases
Declared options
rig broadcast [text]
—
--rig <name>--pod <name>--force--host <id>--context <ref>--json
walk
Invocation
Aliases
Declared options
rig walk <seat>
—
--through <items...>--through-profile <ref>--situation <situation>--runtime <runtime>--profile <profile>--rig <rig>--seat-grant <seat>--mission <mission>--slice <slice>--budget <tokens>--pace <duration>--consume-timeout <duration>--consume-poll <duration>--turn-timeout <duration>--json
ask
Invocation
Aliases
Declared options
rig ask <rig> <question>
—
--json--seat <session-name>--session <token>--wake <target>--runtime <runtime>--wake-timeout <seconds>
Wake seat targets must include the rig: member@rig or member@rig@N (1 = newest tenure).
Values without @ go unchanged to the runtime as a session ID or title; a bare member
name is not resolved within <rig>.
Only Claude and Codex tenures can be woken.
chatroom
Invocation
Aliases
Declared options
rig chatroom
—
—
rig chatroom send <rig> <message>
—
--sender <name>
rig chatroom history <rig>
—
--topic <name>--after <id>--since <timestamp>--sender <name>--limit <n>--json
rig chatroom watch <rig>
—
--tmux
rig chatroom topic <rig> <topic-name>
—
--body <text>--sender <name>
rig chatroom wait <rig>
—
--after <id>--topic <name>--sender <name>--timeout <seconds>--json
rig chatroom clear <rig>
—
—
specs
Invocation
Aliases
Declared options
rig specs
—
—
rig specs ls
—
--kind <kind>--include-builtins--json
rig specs show <name-or-id>
—
--kind <kind>--json
rig specs preview <name-or-id>
—
--kind <kind>--json
rig specs add <path>
—
--json
rig specs sync
—
--json
rig specs remove <name-or-id>
—
--json
rig specs rename <name-or-id> <new-name>
—
--json
context
Invocation
Aliases
Declared options
rig context
—
—
rig context work-install
—
--project <id>--mission <id>--slice <id>--deliver--runtime <runtime>--cwd <path>--topology <ids>--apply-skills--json
rig context trace
—
--rig <rig> required --pod <pod>--seat <seat>--name <file> required --json
rig context compose
—
--out <ref> required --from <files...> required
rig context list
—
--json
rig context show <name-or-ref>
—
--json
rig context preview <name-or-ref>
—
--json
rig context get <name-or-ref>
—
--json
rig context profile <name-or-ref>
—
--situation <situation> required --runtime <runtime>--profile <profile>--budget <tokens>--rig <rig>--seat <seat>--mission <mission>--slice <slice>--json
rig context recap-write
—
--rig <rig> required --seat <seat> required --file <path> required
rig context sync
—
--json
rig context add <source>
—
--name <name>--git--checkout--pack <path>--json
rig context source
—
—
rig context source inspect <ref>
—
--json
rig context source update <ref>
—
--json
rig context rm <ref>
—
--json
plugin
Invocation
Aliases
Declared options
rig plugin
—
—
rig plugin list
—
--runtime <runtime>--source <source>--json
rig plugin show <id>
—
--json
rig plugin used-by <id>
—
--json
rig plugin validate <path>
—
--json
skill
Invocation
Aliases
Declared options
rig skill
—
—
rig skill loadout
—
--runtime <runtime> (folder mode; required there)--seat <session> (seat mode; self is this seat)--wait-for-idle <ms>--resend--cwd <path>--project-root <path>--topology <ids>--apply--json
rig skill audit
—
--json
agent-image
Invocation
Aliases
Declared options
rig agent-image
—
—
rig agent-image list
—
--runtime <runtime>--json
rig agent-image show <name-or-id>
—
--json
rig agent-image preview <name-or-id>
—
--json
rig agent-image create <source-session>
—
--name <name> required --image-version <version>--notes <text>--estimated-tokens <n>--lineage <names...>--json
rig agent-image delete <name-or-id>
—
--force--json
rig agent-image pin <name-or-id>
—
--json
rig agent-image unpin <name-or-id>
—
--json
rig agent-image prune
—
--dry-run--force--json
rig agent-image sync
—
--json
Invocation
Aliases
Declared options
rig community-harness
—
—
rig community-harness list
—
--json
environment
Invocation
Aliases
Declared options
rig environment
—
—
rig environment setup
—
--directory <path> required --binding <id>--seat <address>--rig <name>--mcp-url <url>--guest-base-url <origin>--artifact-root <path>--json
rig environment create <binding>
—
--seat <address> required --node <id>--gateway <ref> required --workspace <ref> required --name <name> required --image <digest> required --provider <ref> required --policy <path> required --guest-base-url <origin> required --operation <id>--json
rig environment attach <binding>
—
--seat <address> required --node <id>--gateway <ref> required --workspace <ref> required --name <name> required --image <digest> required --provider <ref> required --policy <path> required --guest-base-url <origin> required --operation <id>--json--resource-id <id> required --fingerprint <value>
rig environment inspect <binding>
—
--live--json
rig environment connect <binding>
—
--generation <id> required
rig environment export <binding>
—
--request <path> required --json
rig environment checkpoint <binding>
—
--generation <id> required --operation <id> required --json
rig environment recreate <binding>
—
--request <path> required --json
rig environment completion <binding>
—
--request <path> required --json
rig environment effect <binding>
—
--effect <name> required --generation <id>--resource-id <id>--operation <id> required --engine-socket <path>--json
It drives the maintained OpenShell reference; see the OpenShell example .
fork
Invocation
Aliases
Declared options
rig fork <source-session>
—
--rig <rig> required --pod <pod-namespace> required --member <member-id> required --keep-image--image-name <name>--image-version <version>--rig-root <path>--json
workspace
Invocation
Aliases
Declared options
rig workspace
—
—
rig workspace validate [root]
—
--kind <kind>--no-recursive--require-frontmatter--max-files <n>--json
rig workspace doctor
—
--workspace <path>--json--strict
mode
Invocation
Aliases
Declared options
rig mode
—
—
rig mode set <mode>
—
--scope <scope>--qualifier <id>--autonomy-scope <v>--heartbeat-cadence <v>--inspection-depth <v>--update-detail <v>--escalation-threshold <v>--concurrency-limit <v>--permission-prompt-posture <v>--expiry-or-stale-rule <v>--evidence <citation>--confirm--bearer <token>--json
rig mode show
—
--json
rig mode effective
—
--rig <id>--project <id>--mission <id>--workstream <id>--qitem <id>--json
rig mode cite
—
--rig <id>--project <id>--mission <id>--workstream <id>--qitem <id>
rig mode unset <scope> [qualifier]
—
--bearer <token>--category <category>--json
rig mode defaults
—
--json
policy
Invocation
Aliases
Declared options
rig policy
—
—
rig policy permissions
—
—
rig policy permissions list
—
--spec <path>--json
rig policy permissions show <nameOrRef>
—
--spec <path>--json
rig policy permissions current
—
--spec <path> required --json
rig policy permissions apply <name>
—
--spec <path>--seat <seat>--reason <text>--operator <address>--json
rig policy list
—
--spec <path>--json
rig policy show <nameOrRef>
—
--spec <path>--json
rig policy current
—
--spec <path> required --json
rig policy apply <name>
—
--spec <path>--seat <seat>--reason <text>--operator <address>--json
whoami
Invocation
Aliases
Declared options
rig whoami
—
--node-id <id>--session <name>--host <id>--all-hosts--hosts <ids>--json--full--verbose--all-peers
config
Invocation
Aliases
Declared options
rig config
—
--json--with-source
rig config get <key>
—
--json--show-source
rig config set <key> <value>
—
—
rig config reset [key]
—
—
rig config init-workspace
—
--root <path>--force--dry-run--json
init-workspace — rig config init-workspace creates missing missions/, exhaust/, SPEC.md, project.yaml, workspace.yaml, and .gitignore entries at the configured workspace root (or --root <path>). Initialization is additive and preserves existing files; a complete six-entry scaffold is a no-op. --force is deprecated compatibility and still preserves existing files. --dry-run reports planned additions without writing; incompatible path types are reported before any writes.
file
Invocation
Aliases
Declared options
rig file
—
—
rig file copy <src> <dst>
—
--dry-run--json
preflight
Invocation
Aliases
Declared options
rig preflight
—
--json
auth
Invocation
Aliases
Declared options
rig auth
—
—
rig auth status
—
--runtime <runtime>--codex-home <dir>--host <id>
rig auth list
—
--runtime <runtime>--codex-home <dir>--host <id>
rig auth save <profile>
—
--runtime <runtime>
rig auth switch <profile>
—
--runtime <runtime>--codex-home <dir>--host <id>
rig auth validate <profile>
—
--runtime <runtime>
rig auth seats
—
—
rig auth seats list
—
--runtime <runtime>
rig auth seats show <seat>
—
--runtime <runtime>
rig auth seats set
—
--runtime <runtime>--seat <seat> required --rig <rig> required --cwd <cwd>--profile <profile>
rig auth seats report
—
--runtime <runtime>
provider
Invocation
Aliases
Declared options
rig provider
—
—
rig provider status
—
--json--refresh--provider <p>--claude-token-file <path>--credential-label <label>--all-hosts--hosts <ids>
rig provider accounts
—
--json--provider <p>--account <a>
rig provider bindings
—
--json--provider <p>--account <a>
rig provider signals
—
--json--provider <p>--account <a>
rig provider precheck
—
--seat <s> required --to-account <a>--token-file <path>--api-key-file <path>--stored-login--json
rig provider switch
—
--seat <s> required --to-account <a>--token-file <path>--api-key-file <path>--stored-login--force-unsafe--clear-account-home--account-home <path>--reason <text>--model <id>--codex-config-profile <name>--dry-run--json
rig provider moves
—
--seat <seat>--limit <n>--json
rig provider moves report
—
--file <path> required --to <seat> required --follows <qitemId>--evidence-ref <ref>--json
usage
Invocation
Aliases
Declared options
rig usage
—
—
rig usage top
—
--window <duration>--top <n>--json
rig usage cost
—
--seat <session>--json
rig usage series
—
--seat <session>--lane <lane>--since <iso>--until <iso>--limit <n>--json
telemetry
Invocation
Aliases
Declared options
rig telemetry
—
—
rig telemetry events
—
--cursor <token>--limit <n>--json--start <mode>--node <id>--rig <id>
rig telemetry transitions
—
--cursor <token>--limit <n>--json--start <mode>--qitem <id>
rig telemetry tenures <node-id>
—
--cursor <token>--limit <n>--json
health
Invocation
Aliases
Declared options
rig health
—
--self--seat <node-id>--rig <rig-id>--instance [instance-id]--severity <severity>--status <status>--limit <count>--json--actor <name>
rig health explain <finding-id>
—
--json
rig health policy
—
--file <path>--json
rig health checkpoint
—
--file <path>--json
rig health diagnose
—
--apply--json
rig health diagnosis
—
—
rig health diagnosis list
—
--json--full
rig health diagnosis show <qitem-id>
—
--json--full
rig health diagnosis record <qitem-id>
—
--file <path> required --json
rig health diagnosis notify <qitem-id>
—
--json
doctor
Invocation
Aliases
Declared options
rig doctor
—
--json--spec <path>
expand
Invocation
Aliases
Declared options
rig expand <rig> <pod-fragment-path>
—
--json--rig-root <path>
add
Invocation
Aliases
Declared options
rig add <rig> <pod-namespace> <member-fragment-path>
—
--json--rig-root <path>
create
Invocation
Aliases
Declared options
rig create <name>
—
--runtime <runtime>--cwd <path>--json
grow
Invocation
Aliases
Declared options
rig grow <rig-id> <members...>
—
--pod <pod>--new-pod <pod>--runtime <runtime>--cwd <path>--json
edge
Invocation
Aliases
Declared options
rig edge
—
—
rig edge add <rig> [from] [to]
—
--kind <kind>--plan--json
rig edge remove <rig> <edge-id>
—
--plan--json
add requires from, to and --kind, and is idempotent: a repeat reports the
existing edge and writes nothing. remove deletes the edge with that ID; a repeat changes nothing and
returns edge_not_found (exit 1). See
changing edges on an existing rig
for input and receipt examples, rollback, and snapshot behavior.
reconcile-session
Invocation
Aliases
Declared options
rig reconcile-session <session>
—
--rig <rigId>--node <logicalId>--no-launch--repair-missing-pane--json
env
Invocation
Aliases
Declared options
rig env
—
—
rig env status <rig>
—
--json
rig env logs <rig> [service]
—
--tail <n>
rig env down <rig>
—
--volumes
unclaim
Invocation
Aliases
Declared options
rig unclaim <sessionRef>
—
--json
release
Invocation
Aliases
Declared options
rig release <rig>
—
--delete--json
launch
Invocation
Aliases
Declared options
rig launch <rig> [nodeRef]
—
--seats <ids>--hold-reason <reason>--snapshot-id <id>--retry-startup-from <member-file>--rig-root <path>--plan--json--host <id>
remove
Invocation
Aliases
Declared options
rig remove <rigId> <nodeRef>
—
--fallback <live-seat>--json
shrink
Invocation
Aliases
Declared options
rig shrink <rig> <podRef>
—
--fallback <live-seat>--json
destroy
Invocation
Aliases
Declared options
rig destroy
—
--state--all--backup--yes--confirm <token>
setup
Invocation
Aliases
Declared options
rig setup
—
--dry-run--json--full--no-herdr--ghostty--no-ghostty--providers <list>--policy <name>--spec <path>--router-line <answer>
restore-check
Invocation
Aliases
Declared options
rig restore-check
—
--json--full--ready--rig <name>--no-queue--no-hooks
restore-packet
Invocation
Aliases
Declared options
rig restore-packet
—
—
rig restore-packet write
—
--source-session <session>--source-jsonl <path>--source-runtime <runtime>--target <dir> required --target-rig <rig>--target-runtime <runtime>--target-workspace-root <path>--default-target-repo <path>--role-pointer <path>--current-work-summary <text>--next-owner <name>--caveat <text> (repeatable)--authority-boundaries <text>--source-trust-ranking <csv>--generator-version <version>--source-session-id-override <id>--source-rig-override <rig>
rig restore-packet read <packet-dir>
—
--json
rig restore-packet validate <packet-dir>
—
--json
compact-plan
Invocation
Aliases
Declared options
rig compact-plan
—
--json--rig <name>--refresh--threshold-tokens <n>--threshold-percent <0-100>
--threshold-tokens and --threshold-percent set the plan's own candidate thresholds (the percentage applies when a seat's context window size is missing). They are not the automatic compaction setting: the output labels them as the plan's own and shows policies.claude_compaction (enabled, threshold_percent) separately, for comparison only, or says it couldn't be read.
compact
Invocation
Aliases
Declared options
rig compact <session>
—
--json--skip-map--cancel--state
heartbeat
Invocation
Aliases
Declared options
rig heartbeat
—
--rig <name>--json--nudge--include-done
seat
Invocation
Aliases
Declared options
rig seat
—
—
rig seat history
—
--rig <id> required --node-id <id> required --snapshot-id <id>--history-session-id <id>--json
rig seat set-typing-guard <seat>
—
--enabled <boolean>--mode <mode>--reason <text> required --json
rig seat held-messages <seat>
—
--limit <n>--offset <n>--id <id>--json
rig seat retire-held-message <seat> <id>
—
--reason <text> required --json
rig seat status <seat>
—
--json
rig seat handover <seat>
—
--source <source>--reason <reason>--operator <address>--dry-run--json
rig seat switch-client <seat>
—
--to-window <n>--client <id>--json
rig seat clear-attention <session>
—
--reason <text>--json
rig seat set-terminal-policy <seat>
—
--preset <preset> required --helper <addresses...>--rig-default--reason <text> required --operator <address>--json--peer-compaction <decision>--peer-model <decision>--self-compaction <decision>--self-model <decision>--openrig-compaction <decision>--openrig-model <decision>
rig seat set-permissions <seat>
—
--mode <mode>--rules <file>--codex-permissions <file>--codex-profile <name>--reason <text> required --operator <address>--json
rig seat set-effort <seat>
—
--effort <level>--clear--reason <text> required --operator <address>--json
rig seat set-permissions-to <seat>
—
--to <person>--clear--deny--reason <text> required --operator <address>--json
rig seat effort <seat>
—
--json
rig seat set-model <seat>
—
--model <id> required --reason <text> required --operator <address>--json
rig seat set-runtime <seat>
—
--runtime <runtime>--reason <text>--model <id>--effort <level>--codex-config-profile <name>--clear-account-home--account-home <path>--token-file <path>--account-label <label>--permission-mode <mode>--confirm-timeout <seconds>--dry-run--confirm <switch-id>--note <text>--recover--json
rig seat set-cwd <seat>
—
--cwd <directory> required --reason <text> required --operator <address>--json
rig seat launch <seat>
—
--fresh required --reason <text>--plan--stop--operator <address>--json
rig seat restart <seat>
—
--keep-conversation required --reason <text>--plan--verify--expect-account <text>--operator <address>--host <id>--json
rig seat continue <seat>
—
--json
rig seat stop <seat>
—
--reason <text> required --operator <address>--json
rig seat clean <seat>
—
--reason <text> required --operator <address>--json
rig seat set-resume-token <session>
—
--token-stdin--reason <text> required --json
A rig seat stop that successfully kills the current session records that it
was intentionally stopped. With other healthy members running, the rig's lifecycleState in
rig ps and the TUI stays running; the stopped member no longer makes it
degraded. Stopping every member
leaves the rig stopped. Node JSON exposes intentionallyStopped in compact,
--full, and --fields output.
Process counts still reflect reality: stopping one of two members leaves
nodeCount: 2, runningCount: 1, and process status: partial. Node lifecycle,
resume information, and attention diagnostics remain available. A crash or
attention condition on another member still affects the rig lifecycle.
Stop intent survives daemon restarts and audit retention. It applies only to the
latest exited session while the seat has no binding; a subsequent session status
change clears it, and a new session starts without it. Existing exits are not
backfilled as intentional stops. If the session disappears between the live
probe and the stop, its unexplained exit still affects rig health. The internal
stop in rig seat launch --fresh --stop does not record final stop intent, so a
refused replacement still degrades a rig with other healthy members running.
rig start --last and rig start --rigs <rig> use the full per-seat lifecycle
for restore selection. A partly running rig with an intentionally stopped member
still appears as a degraded candidate and reports rig_not_stopped (exit 1)
when restore is attempted. Launch scheduling and restore eligibility remain
unchanged.
See per-seat terminal delivery for
off, draft-aware and hold modes, immediate refusal results and held-message inspection.
handover
Invocation
Aliases
Declared options
rig handover <seat>
—
--source <source>--reason <reason>--operator <address>--dry-run--json
startup-proof
Invocation
Aliases
Declared options
rig startup-proof
—
—
rig startup-proof submit
—
--challenge-id <id> required --answer <answer> required --json
scope
Invocation
Aliases
Declared options
rig scope
—
--workspace <path>
rig scope slice
—
—
rig scope slice ls
—
--mission <name>--state <state>--json
rig scope slice show <slice-path>
—
--mission <name>--json
rig scope slice create <mission> <slug>
—
--template <kind>--title <text>--intent <text>--depends-on <dot-id...>--readme-only--json
rig scope slice ship <slice-path> <release-mission>
—
--mission <name>--json
rig scope slice close <slice-path>
—
--reason <reason> required --note <text>--mission <name>--json
rig scope slice move <slice-path> <dest-mission>
—
--mission <name>--json
rig scope slice progress <slice-path>
—
--mission <name>--add <text>--set <text>--section <heading>--status <status>--json
rig scope slice repair <slice-path>
—
--mission <name>--json
rig scope slice stage <slice-path> <new-stage>
—
--successor <id>--mission <name>--json
rig scope slice verified <slice-path>
—
--against <source>--mission <name>--json
rig scope slice approve <slice-path>
—
--mission <name>--scope <scope>--actor <session>--on-behalf-of <human>--re-approve--reason <why>--locked-artifacts <paths>--json
rig scope mission
—
—
rig scope mission ls
—
--json
rig scope mission show <mission>
—
--json
rig scope mission create <name>
—
--template <kind>--id <dot-id>--title <text>--intent <text>--depends-on <dot-id...>--no-notes--no-mission-notes--json
rig scope mission graph <mission>
—
--json
rig scope mission progress <mission>
—
--add <text>--set <text>--section <heading>--status <status>--json
rig scope mission repair <mission>
—
--json
rig scope mission stage <mission> <new-stage>
—
--successor <id>--json
rig scope mission verified <mission>
—
--against <source>--json
rig scope mission approve <mission>
—
--mission <name>--scope <scope>--actor <session>--on-behalf-of <human>--re-approve--reason <why>--locked-artifacts <paths>--json
rig scope resolve-notes <absolute-work-node-dir>
—
--json
rig scope audit
—
--mission <name> required --json
proof
Invocation
Aliases
Declared options
rig proof
—
--workspace <path>
rig proof show [scope]
—
--project <id>--json
rig proof judge <scope-item>
—
--project <id>--verdict <verdict> required --reason <text> required --evidence <ref> (repeatable)--subject <kind:ref>--comparison <ref>--revision <revision>--operation-id <id>--replace--json
rig proof add <slice-path>
—
--mission <name>--artifact-type <type> required --verdict <verdict> required --candidate-sha <sha> required --money-evidence <line> required --slice-id <dot-id>--file <path>--body <text>--name <filename>--replace--evidences <refs>--self-check <text>--media <refs>--json