Skip to content

Troubleshooting ​

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

This is a revision of the existing troubleshooting page: it keeps that page's shape (the symptom, the surface that shows the truth, the recovery command) and adds the verbs the old page did not know about.

Start with the installation, not the rig ​

rig preflight asks whether this machine can run OpenRig at all. rig doctor verifies the install: packaged assets, Node, tmux, writable state paths and the daemon port; --spec compares a spec against the running rig of the same name. Both work without a running daemon.

bash
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.

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

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 relaunch one seat without disturbing the rest.

bash
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

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 &lt;rig&gt; 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. It is unmaintained and replaced by the terminal UI; never diagnose product behaviour from it.

The troubleshooting family ​

CommandWhat it does (from help)Help source
rig crash-cartEmit the daemon-down recovery verdict + discovery as JSON (read-only).crash-cart.txt
rig daemonManage the OpenRig daemondaemon.txt
rig daemon logsShow daemon logsdaemon.logs.txt
rig daemon startStart the daemondaemon.start.txt
rig daemon statusShow daemon statusdaemon.status.txt
rig daemon stopStop the daemon (10s shutdown budget; 12s process wait; incomplete drain exits nonzero)daemon.stop.txt
rig destroyDestroy OpenRig local state for recoverydestroy.txt
rig doctorVerify OpenRig install healthdoctor.txt
rig healthInspect read-only, explainable system health recordshealth.txt
rig health checkpointInspect or submit an outcome-boundary lineage census (not a per-edit ritual)health.checkpoint.txt
rig health diagnosePreview policy admission; --apply creates or re-presents bounded diagnostic contexthealth.diagnose.txt
rig health diagnosisRead occurrences and record agent-owned dispositionshealth.diagnosis.txt
rig health diagnosis listList occurrence summaries; evidence payloads require --fullhealth.diagnosis.list.txt
rig health diagnosis notifyExplicitly request human delivery under policy and verified connector readinesshealth.diagnosis.notify.txt
rig health diagnosis recordhealth.diagnosis.record.txt
rig health diagnosis showInspect current state and decisions; expand retained evidence deliberatelyhealth.diagnosis.show.txt
rig health explainExplain one health finding from its canonical bounded recordhealth.explain.txt
rig health policyInspect effective policy and engine state; apply edited JSON with --filehealth.policy.txt
rig heartbeatShow workflow execution proof state from queue filesheartbeat.txt
rig parkedAre we parked? Derived diagnosis: stopped seats owing work; HELD is healthy only while its recorded wake is liveparked.txt
rig preflightCheck system readiness for OpenRigpreflight.txt
rig startStart the daemon, verify kernel, and restore rigs that were last runningstart.txt
rig uiUI commandsui.txt
rig ui openOpen the OpenRig UI in the default browserui.open.txt
rig usagePer-seat token telemetry over time (series + top-N burn) , facts for the oversight detectorusage.txt
rig usage seriesraw per-seat usage samples, oldest firstusage.series.txt
rig usage toptop-N seats by token burn over the windowusage.top.txt

Where it goes next ​

Read as Markdown

Self-contained SOP. No outbound links. OpenRig 0.5.14.