OpenRig

Troubleshooting

Documented against OpenRig 0.7.7. Help text uses "node" where these pages say seat, for a seat's position in the running rig.

Start with the installation, not the rig

rig preflight asks whether this machine can run OpenRig at all. rig doctor checks the install, provider sign-in, writable paths, the daemon port and, where it applies, cmux control; --spec compares a spec against the running rig of the same name. Both work without a running daemon.

rig preflight
rig doctor
rig doctor --spec ./rig.yaml

The daemon

rig daemon status says whether it is up; logs --follow reads what it tried and refused, in its own voice. stop has a shutdown budget and exits non-zero on an incomplete drain, so a non-zero stop is a fact to inspect, not a failure to retry blindly. After a reboot, rig start brings the daemon, the kernel rig and the rigs that were last running back in one move; --last, --all and --rigs are the headless forms. When the daemon is down, rig crash-cart emits the recovery verdict and discovery as JSON without changing anything, and bare rig opens the same recovery cockpit interactively.

rig daemon status
rig daemon logs --follow
rig start --last
rig crash-cart

On a large database, startup can outlast its readiness deadline. rig daemon start then says startup is still pending and exits nonzero, but leaves the daemon running; a second start stays blocked, and rig daemon stop can't reach that process yet. Follow the message: it names the process, its address and the log, and gives the manual restart. Don't start again over it.

The running daemon records its process, port and database path in daemon.json in the OpenRig home folder, and the CLI reads it to find the daemon. A message that daemon.json is missing or malformed means the CLI can't tell which daemon is running; read rig daemon status and the log before starting another.

Two optional settings guard against reaching the wrong daemon. daemon.db_conflict set to stop keeps a second daemon off a database another live daemon holds (the default, warn, only warns); rig daemon start --allow-db-conflict proceeds for one start. On a Mac, transport.local_user_guard makes the CLI refuse a local daemon that runs as another user. It is a guard, not authentication. See Configuration.

A seat looks stuck

Read the record before the pane. rig parked diagnoses stopped seats that owe work; a held row is healthy only while its recorded wake is live. rig heartbeat shows whether in-flight work is being proven, and --nudge sends informational reminders without touching the rows. rig health lists read-only, explainable findings for a seat, a rig or the instance, with severity and status, and rig health explain <finding-id> shows the window, source, rule, evidence and confidence behind one. Empty output is never a healthy assertion. Then, and only then, tmux attach or rig capture the pane, and rig launch <rig> <seat> to start one stopped seat without disturbing the rest. A running seat is left as it is; for a fresh occupant there, use rig seat launch <seat> --fresh --stop --reason "<why>".

rig parked --rig my-rig
rig heartbeat --rig my-rig
rig health --rig my-rig
rig health explain <finding-id>
rig launch my-rig dev.impl

A fresh seat stopped at a native prompt (Claude's bypass-permissions warning, a login or a folder-trust question) keeps its startup context. rig up, rig bundle install and rig ps --nodes print "Startup attention" or "Startup details" for it, ending with the command to run. Once the prompt is answered in that seat's terminal, rig seat continue <seat> delivers the context in the same conversation without relaunching; if it reports an unknown outcome, check rig seat status <seat> before trying again.

rig seat continue <seat>
rig seat status <seat>

Help uses "node" where this page says seat, for a seat's position in the running rig.

Restore came back mixed

A restore is not all-or-nothing. Outcomes are reported per seat: resumed or rebuilt, started fresh or fresh-primed, waiting on a decision or attention, or failed. Mixed outcomes are normal output. Use rig ps --nodes for the live state of the current rig (-A for all rigs), then decide whether to keep a fresh seat, relaunch one, or restore again from a specific snapshot with rig restore-check first.

Service-backed rigs

For a rig that manages an application, rig env status <rig> is the honest health surface; rig env logs and rig env down follow. Do not infer environment truth from rig ps alone.

Last resort

rig destroy is the guarded destructive surface for bad local state: --state recreates an empty state root, --all also removes managed tmux sessions, --backup moves state aside instead of deleting it, and both --yes and --confirm destroy-openrig-state are required. It is the end of the list, not the start.

The web UI

rig ui open still exists as a verb. The web UI is in maintenance mode with best-effort support, and since 0.6.4 the daemon does not serve it unless you run rig config set ui.enabled true and then stop and start the daemon; while it is off, rig ui open prints those steps. The CLI and the terminal UI are the supported surfaces; never diagnose product behaviour from the web UI.

The troubleshooting family

Command What it does (from help) Help source
rig crash-cart Emit the daemon-down recovery verdict + discovery as JSON (read-only). crash-cart.txt
rig daemon Manage the OpenRig daemon daemon.txt
rig daemon logs Show daemon logs daemon.logs.txt
rig daemon start Start the daemon daemon.start.txt
rig daemon status Show daemon status daemon.status.txt
rig daemon stop Stop the daemon (10s shutdown budget; 12s process wait; incomplete drain exits nonzero) daemon.stop.txt
rig destroy Destroy OpenRig local state for recovery destroy.txt
rig doctor Check installation, provider authentication, writable paths, port/daemon and conditional cmux control doctor.txt
rig health Inspect read-only, explainable system health records health.txt
rig health checkpoint Inspect or submit an outcome-boundary lineage census (not a per-edit ritual) health.checkpoint.txt
rig health diagnose Preview policy admission; --apply creates or re-presents bounded diagnostic context health.diagnose.txt
rig health diagnosis Read occurrences and record agent-owned dispositions health.diagnosis.txt
rig health diagnosis list List occurrence summaries; evidence payloads require --full health.diagnosis.list.txt
rig health diagnosis notify Explicitly request human delivery under policy and verified connector readiness health.diagnosis.notify.txt
rig health diagnosis record Record an agent's disposition for one occurrence from a JSON --file health.diagnosis.record.txt
rig health diagnosis show Inspect current state and decisions; expand retained evidence deliberately health.diagnosis.show.txt
rig health explain Explain one health finding from its canonical bounded record health.explain.txt
rig health policy Inspect effective policy and engine state; apply edited JSON with --file health.policy.txt
rig heartbeat Show workflow execution proof state from queue files heartbeat.txt
rig parked Are we parked? Derived diagnosis: stopped seats owing work; HELD is healthy only while its recorded wake is live parked.txt
rig preflight Check system readiness for OpenRig preflight.txt
rig start Start the daemon, verify kernel, and restore rigs that were last running start.txt
rig telemetry Read one bounded page of retained metadata, with explicit history gaps telemetry.txt
rig telemetry events Event metadata only; no payload content telemetry.events.txt
rig telemetry tenures Newest retained occupant tenures for one immutable node (default 32) telemetry.tenures.txt
rig telemetry transitions Active and archived queue-transition metadata telemetry.transitions.txt
rig ui UI commands ui.txt
rig ui open Open the OpenRig UI in the default browser ui.open.txt
rig usage Per-seat token telemetry over time (series + top-N burn) , facts for the oversight detector usage.txt
rig usage cost what each seat's harness reports about cost, beside tokens: kind, source, window and coverage usage.cost.txt
rig usage series raw per-seat usage samples, oldest first usage.series.txt
rig usage top top-N seats by token burn over the window usage.top.txt

Getting help

rig context get help prints the installed guide for helping a user get unstuck (it needs a running daemon). The same text is at /help/agents.

Where it goes next

  • Continuity: snapshots, restore-check and handover.
  • The terminal UI: the HEALTH tab shows the same findings rig health lists.