Files
billbenetti a34cb55ad7 fix(cli): add --full to rig workflow trace so a long trail comes back complete (#2656) (#2667)
rig workflow trace gains --full, which passes ?full=true to the daemon's existing GET /api/workflow/<id>/trace route; there is no new daemon route. Without the flag the request has no query, as before. --json prints the daemon payload unchanged. Human output adds one line naming the --full command when the trail came back with trailCompleteness recent. docs/as-built/cli-reference.md lists the option.
2026-11-07 05:04:32 -08:00

67 KiB

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.
README.md
codemap.md
../reference/help.md
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:

node --input-type=module <<'JS'
import { createProgram } from './packages/cli/dist/index.js';
const root = createProgram();
const rows = [];
function walk(command, prefix = '') {
  const path = prefix ? `${prefix} ${command.name()}` : command.name();
  rows.push({
    path,
    aliases: command.aliases(),
    arguments: command.registeredArguments.map(a => ({
      name: a.name(), required: a.required, variadic: a.variadic,
    })),
    options: command.options.map(o => ({
      flags: o.flags, required: Boolean(o.mandatory),
    })),
  });
  for (const child of command.commands) walk(child, path);
}
walk(root);
console.log(JSON.stringify({
  topLevel: root.commands.length,
  registeredCommands: rows.length - 1,
  declaredOptions: rows.reduce((n, row) => n + row.options.length, 0),
  rows,
}, null, 2));
JS

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:

rig config set feed.subscriptions.laptop.enabled true

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

community-harness

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