$npx -y skills add mvschwarz/openrig --skill openrig-installerUse when installing or upgrading OpenRig on a host, especially the V0.3.1 upgrade flow which includes the substrate-kernel → daemon-managed-kernel migration ceremony. Covers npm install, rig setup, rig daemon start (auto-boots kernel), and the canonical verification commands. NOT
| 1 | # OpenRig Installer |
| 2 | |
| 3 | This skill teaches the operator agent how to install + upgrade |
| 4 | OpenRig cleanly. The V0.3.1 upgrade is the one with the migration |
| 5 | ceremony (substrate kernel → daemon-managed kernel); other upgrades |
| 6 | follow the same install / setup / start shape with no migration. |
| 7 | |
| 8 | ## Fresh install |
| 9 | |
| 10 | ```bash |
| 11 | npm install -g @openrig/cli |
| 12 | rig setup |
| 13 | ``` |
| 14 | |
| 15 | `rig setup` is idempotent — safe to re-run if a step fails. It probes |
| 16 | host prereqs (tmux present, Node version, writable state path, |
| 17 | optional cmux), then invokes `rig daemon start` per the L2 factoring |
| 18 | (OQ-B). The daemon's start path auto-boots the kernel rig per the |
| 19 | V0.3.1 slice 05 kernel-rig-as-default logic. |
| 20 | |
| 21 | ## Verification after install |
| 22 | |
| 23 | ```bash |
| 24 | rig ps --nodes --rig kernel --json |
| 25 | ``` |
| 26 | |
| 27 | Should report 4 members (advisor.lead + operator.agent + |
| 28 | operator.human + queue.worker) all ready. If a runtime is unavailable |
| 29 | the daemon picks the matching variant (`rig-claude-only.yaml` or |
| 30 | `rig-codex-only.yaml`); the topology stays the same shape with the |
| 31 | unavailable runtime omitted from the agent membership. |
| 32 | |
| 33 | Entry point for chatting with the rig: |
| 34 | |
| 35 | ```bash |
| 36 | rig capture advisor-lead@kernel |
| 37 | ``` |
| 38 | |
| 39 | Or click the CMUX button on the topology graph in the UI at |
| 40 | `/topology`. |
| 41 | |
| 42 | ## V0.3.1 upgrade ceremony (one-time migration) |
| 43 | |
| 44 | Operators with a kernel spec stored outside the daemon-managed |
| 45 | location (any pre-V0.3.1 layout, typically wherever you kept your |
| 46 | own `rigs/kernel/` directory) must migrate to |
| 47 | `~/.openrig/specs/rigs/kernel/` as a one-time step during the V0.3.1 |
| 48 | upgrade. The V0.3.1 upgrade IS the migration moment; it's not a |
| 49 | separate ceremony. |
| 50 | |
| 51 | ### Migration steps |
| 52 | |
| 53 | 1. **Snapshot first.** Take a snapshot of the running substrate |
| 54 | kernel so the migration is reversible: |
| 55 | |
| 56 | ```bash |
| 57 | rig snapshot kernel |
| 58 | ``` |
| 59 | |
| 60 | 2. **Stop the substrate kernel** (so the migration doesn't race a |
| 61 | running rig): |
| 62 | |
| 63 | ```bash |
| 64 | rig down kernel --snapshot |
| 65 | ``` |
| 66 | |
| 67 | 3. **Copy your existing kernel spec** into the daemon-managed |
| 68 | location: |
| 69 | |
| 70 | ```bash |
| 71 | mkdir -p ~/.openrig/specs/rigs/kernel |
| 72 | cp -r /path/to/old/kernel-spec/* ~/.openrig/specs/rigs/kernel/ |
| 73 | ``` |
| 74 | |
| 75 | 4. **Upgrade the CLI + daemon**: |
| 76 | |
| 77 | ```bash |
| 78 | npm install -g @openrig/cli@0.3.1 |
| 79 | rig daemon stop |
| 80 | rig daemon start |
| 81 | ``` |
| 82 | |
| 83 | At this point the new daemon detects `~/.openrig/specs/rigs/kernel.yaml` |
| 84 | exists and skips the V0.3.1 builtin-kernel boot (the |
| 85 | already-managed-rig branch). The substrate-rooted topology |
| 86 | continues to run under daemon management. |
| 87 | |
| 88 | 5. **Verify** the migrated kernel matches expectations: |
| 89 | |
| 90 | ```bash |
| 91 | rig ps --nodes --rig kernel --json |
| 92 | ``` |
| 93 | |
| 94 | 6. **Decommission the old copy** (only after verifying the |
| 95 | daemon-managed copy works): |
| 96 | |
| 97 | ```bash |
| 98 | rm -rf /path/to/old/kernel-spec |
| 99 | ``` |
| 100 | |
| 101 | ### If migration fails |
| 102 | |
| 103 | The pre-step snapshot is the rollback. `rig restore <snapshot-id> |
| 104 | --rig kernel` revives the prior topology. Then `npm install -g |
| 105 | @openrig/cli@0.3.0` rolls the CLI back and you can retry later. |
| 106 | |
| 107 | ## Operator agent's role in install + upgrade |
| 108 | |
| 109 | The operator agent shepherds operators through these steps when the |
| 110 | user asks "how do I upgrade?" or "what's the V0.3.1 ceremony?". The |
| 111 | agent reads this skill on demand via `find-skills` — it does not |
| 112 | need to memorize the steps; it consults the canonical reference |
| 113 | (this file) and walks the operator through. |
| 114 | |
| 115 | ## 3-part error remediation |
| 116 | |
| 117 | | What failed | Why it matters | Fix | |
| 118 | |---|---|---| |
| 119 | | `npm install -g @openrig/cli` permission denied | Global install needs writable npm prefix; macOS Homebrew default is usually writable; some custom Node installs aren't | Either fix the npm prefix permissions or use `sudo npm install -g`; check `npm config get prefix` | |
| 120 | | `rig setup` host prereq fail | tmux, Node version, or writable state path missing | `rig doctor` lists each missing piece + the install command; run those, retry `rig setup` | |
| 121 | | `rig daemon start` auth-block error | Neither Claude Code nor Codex authenticated; kernel rig requires at least one | Run `claude auth login` OR `codex login`; then retry `rig daemon start` | |
| 122 | | `rig daemon start` "kernel already managed" | An existing managed rig named `kernel` exists; the daemon skips builtin-boot per design | This is the expected path after migration — no action needed | |
| 123 | | `rig ps --rig kernel --json` returns empty | Daemon healthy but no kernel rig managed; likely the migration step copied content but did not boot | `rig up kernel` from |