@openrig/cli 0.4.6 → 0.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (472) hide show
  1. package/daemon/assets/guidance/CULTURE-default.md +19 -0
  2. package/daemon/assets/guidance/openrig-start.md +20 -5
  3. package/daemon/assets/plugins/openrig-core/README.md +1 -1
  4. package/daemon/assets/plugins/openrig-core/skills/applying-a-permission-policy/SKILL.md +120 -0
  5. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/SKILL.md +9 -6
  6. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/precompact-hook.mjs +11 -72
  7. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/restore-from-jsonl.mjs +0 -0
  8. package/daemon/assets/plugins/openrig-core/skills/delegating-work/SKILL.md +43 -0
  9. package/daemon/assets/plugins/openrig-core/skills/forming-an-openrig-mental-model/SKILL.md +36 -22
  10. package/daemon/assets/plugins/openrig-core/skills/messaging-the-human/SKILL.md +108 -0
  11. package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +7 -13
  12. package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +88 -0
  13. package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +189 -105
  14. package/daemon/assets/plugins/openrig-core/skills/queue-handoff/SKILL.md +26 -9
  15. package/daemon/assets/plugins/openrig-core/skills/seat-continuity-and-handover/SKILL.md +11 -9
  16. package/daemon/assets/plugins/openrig-core/skills/session-compaction-and-restore/SKILL.md +162 -0
  17. package/daemon/assets/plugins/openrig-core/skills/software-for-agents/SKILL.md +165 -0
  18. package/daemon/dist/adapters/claude-code-adapter.d.ts +0 -9
  19. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  20. package/daemon/dist/adapters/claude-code-adapter.js +13 -46
  21. package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  22. package/daemon/dist/adapters/claude-resume.d.ts +1 -1
  23. package/daemon/dist/adapters/claude-resume.d.ts.map +1 -1
  24. package/daemon/dist/adapters/claude-resume.js +8 -2
  25. package/daemon/dist/adapters/claude-resume.js.map +1 -1
  26. package/daemon/dist/adapters/cmux-transport.d.ts.map +1 -1
  27. package/daemon/dist/adapters/cmux-transport.js +8 -1
  28. package/daemon/dist/adapters/cmux-transport.js.map +1 -1
  29. package/daemon/dist/adapters/cmux.d.ts +9 -0
  30. package/daemon/dist/adapters/cmux.d.ts.map +1 -1
  31. package/daemon/dist/adapters/cmux.js +21 -0
  32. package/daemon/dist/adapters/cmux.js.map +1 -1
  33. package/daemon/dist/adapters/codex-resume.d.ts +1 -1
  34. package/daemon/dist/adapters/codex-resume.d.ts.map +1 -1
  35. package/daemon/dist/adapters/codex-resume.js +4 -2
  36. package/daemon/dist/adapters/codex-resume.js.map +1 -1
  37. package/daemon/dist/adapters/codex-runtime-adapter.d.ts +3 -0
  38. package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
  39. package/daemon/dist/adapters/codex-runtime-adapter.js +30 -9
  40. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  41. package/daemon/dist/adapters/pi-resume.d.ts +1 -1
  42. package/daemon/dist/adapters/pi-resume.d.ts.map +1 -1
  43. package/daemon/dist/adapters/pi-resume.js +7 -2
  44. package/daemon/dist/adapters/pi-resume.js.map +1 -1
  45. package/daemon/dist/adapters/pi-runtime-adapter.d.ts.map +1 -1
  46. package/daemon/dist/adapters/pi-runtime-adapter.js +4 -1
  47. package/daemon/dist/adapters/pi-runtime-adapter.js.map +1 -1
  48. package/daemon/dist/adapters/yolo-mode.d.ts +23 -0
  49. package/daemon/dist/adapters/yolo-mode.d.ts.map +1 -0
  50. package/daemon/dist/adapters/yolo-mode.js +49 -0
  51. package/daemon/dist/adapters/yolo-mode.js.map +1 -0
  52. package/daemon/dist/build-info.js +3 -3
  53. package/daemon/dist/db/migrations/055_node_permission_policy.d.ts +13 -0
  54. package/daemon/dist/db/migrations/055_node_permission_policy.d.ts.map +1 -0
  55. package/daemon/dist/db/migrations/055_node_permission_policy.js +17 -0
  56. package/daemon/dist/db/migrations/055_node_permission_policy.js.map +1 -0
  57. package/daemon/dist/db/migrations/056_rig_permission_policy.d.ts +13 -0
  58. package/daemon/dist/db/migrations/056_rig_permission_policy.d.ts.map +1 -0
  59. package/daemon/dist/db/migrations/056_rig_permission_policy.js +17 -0
  60. package/daemon/dist/db/migrations/056_rig_permission_policy.js.map +1 -0
  61. package/daemon/dist/db/migrations/057_node_policy_provenance.d.ts +19 -0
  62. package/daemon/dist/db/migrations/057_node_policy_provenance.d.ts.map +1 -0
  63. package/daemon/dist/db/migrations/057_node_policy_provenance.js +26 -0
  64. package/daemon/dist/db/migrations/057_node_policy_provenance.js.map +1 -0
  65. package/daemon/dist/db/migrations/058_rig_policy_provenance.d.ts +15 -0
  66. package/daemon/dist/db/migrations/058_rig_policy_provenance.d.ts.map +1 -0
  67. package/daemon/dist/db/migrations/058_rig_policy_provenance.js +22 -0
  68. package/daemon/dist/db/migrations/058_rig_policy_provenance.js.map +1 -0
  69. package/daemon/dist/domain/builtin-policy-reference.d.ts +13 -0
  70. package/daemon/dist/domain/builtin-policy-reference.d.ts.map +1 -0
  71. package/daemon/dist/domain/builtin-policy-reference.js +58 -0
  72. package/daemon/dist/domain/builtin-policy-reference.js.map +1 -0
  73. package/daemon/dist/domain/claude-compaction-enforcer.d.ts +3 -0
  74. package/daemon/dist/domain/claude-compaction-enforcer.d.ts.map +1 -1
  75. package/daemon/dist/domain/claude-compaction-enforcer.js +19 -3
  76. package/daemon/dist/domain/claude-compaction-enforcer.js.map +1 -1
  77. package/daemon/dist/domain/cmux-layout-service.d.ts +36 -0
  78. package/daemon/dist/domain/cmux-layout-service.d.ts.map +1 -1
  79. package/daemon/dist/domain/cmux-layout-service.js +100 -28
  80. package/daemon/dist/domain/cmux-layout-service.js.map +1 -1
  81. package/daemon/dist/domain/context-monitor.d.ts +2 -0
  82. package/daemon/dist/domain/context-monitor.d.ts.map +1 -1
  83. package/daemon/dist/domain/context-monitor.js +14 -0
  84. package/daemon/dist/domain/context-monitor.js.map +1 -1
  85. package/daemon/dist/domain/feed/attention-aggregator.js +1 -1
  86. package/daemon/dist/domain/feed/attention-aggregator.js.map +1 -1
  87. package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts.map +1 -1
  88. package/daemon/dist/domain/hosts/hosts-registry-reader.js +12 -10
  89. package/daemon/dist/domain/hosts/hosts-registry-reader.js.map +1 -1
  90. package/daemon/dist/domain/hosts/hosts-registry-writer.d.ts.map +1 -1
  91. package/daemon/dist/domain/hosts/hosts-registry-writer.js +3 -2
  92. package/daemon/dist/domain/hosts/hosts-registry-writer.js.map +1 -1
  93. package/daemon/dist/domain/hosts/read-through.js +1 -1
  94. package/daemon/dist/domain/hosts/read-through.js.map +1 -1
  95. package/daemon/dist/domain/hosts/remote-daemon-http.d.ts.map +1 -1
  96. package/daemon/dist/domain/hosts/remote-daemon-http.js +8 -5
  97. package/daemon/dist/domain/hosts/remote-daemon-http.js.map +1 -1
  98. package/daemon/dist/domain/native-resume-probe.d.ts +1 -1
  99. package/daemon/dist/domain/native-resume-probe.d.ts.map +1 -1
  100. package/daemon/dist/domain/native-resume-probe.js +11 -4
  101. package/daemon/dist/domain/native-resume-probe.js.map +1 -1
  102. package/daemon/dist/domain/node-inventory.d.ts +3 -12
  103. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  104. package/daemon/dist/domain/node-inventory.js +57 -15
  105. package/daemon/dist/domain/node-inventory.js.map +1 -1
  106. package/daemon/dist/domain/permission-policy/policy-ref.d.ts +89 -0
  107. package/daemon/dist/domain/permission-policy/policy-ref.d.ts.map +1 -0
  108. package/daemon/dist/domain/permission-policy/policy-ref.js +171 -0
  109. package/daemon/dist/domain/permission-policy/policy-ref.js.map +1 -0
  110. package/daemon/dist/domain/permission-policy/policy-spec.d.ts +34 -0
  111. package/daemon/dist/domain/permission-policy/policy-spec.d.ts.map +1 -0
  112. package/daemon/dist/domain/permission-policy/policy-spec.js +106 -0
  113. package/daemon/dist/domain/permission-policy/policy-spec.js.map +1 -0
  114. package/daemon/dist/domain/plugin-vendor-service.d.ts +2 -0
  115. package/daemon/dist/domain/plugin-vendor-service.d.ts.map +1 -1
  116. package/daemon/dist/domain/plugin-vendor-service.js +23 -0
  117. package/daemon/dist/domain/plugin-vendor-service.js.map +1 -1
  118. package/daemon/dist/domain/projection-lane.d.ts +7 -0
  119. package/daemon/dist/domain/projection-lane.d.ts.map +1 -0
  120. package/daemon/dist/domain/projection-lane.js +28 -0
  121. package/daemon/dist/domain/projection-lane.js.map +1 -0
  122. package/daemon/dist/domain/ps-projection.d.ts +19 -0
  123. package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
  124. package/daemon/dist/domain/ps-projection.js +46 -6
  125. package/daemon/dist/domain/ps-projection.js.map +1 -1
  126. package/daemon/dist/domain/queue-repository.d.ts +14 -10
  127. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  128. package/daemon/dist/domain/queue-repository.js +33 -12
  129. package/daemon/dist/domain/queue-repository.js.map +1 -1
  130. package/daemon/dist/domain/restore-orchestrator.d.ts +14 -0
  131. package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  132. package/daemon/dist/domain/restore-orchestrator.js +90 -6
  133. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  134. package/daemon/dist/domain/review/compose.d.ts +77 -4
  135. package/daemon/dist/domain/review/compose.d.ts.map +1 -1
  136. package/daemon/dist/domain/review/compose.js +152 -16
  137. package/daemon/dist/domain/review/compose.js.map +1 -1
  138. package/daemon/dist/domain/review/fleet-compose.js +1 -1
  139. package/daemon/dist/domain/review/fleet-compose.js.map +1 -1
  140. package/daemon/dist/domain/review/gather.d.ts +1 -1
  141. package/daemon/dist/domain/review/gather.d.ts.map +1 -1
  142. package/daemon/dist/domain/review/gather.js +92 -67
  143. package/daemon/dist/domain/review/gather.js.map +1 -1
  144. package/daemon/dist/domain/review/proof-io.d.ts +2 -0
  145. package/daemon/dist/domain/review/proof-io.d.ts.map +1 -0
  146. package/daemon/dist/domain/review/proof-io.js +38 -0
  147. package/daemon/dist/domain/review/proof-io.js.map +1 -0
  148. package/daemon/dist/domain/rig-expansion-service.d.ts.map +1 -1
  149. package/daemon/dist/domain/rig-expansion-service.js +10 -1
  150. package/daemon/dist/domain/rig-expansion-service.js.map +1 -1
  151. package/daemon/dist/domain/rig-repository.d.ts +45 -0
  152. package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  153. package/daemon/dist/domain/rig-repository.js +75 -1
  154. package/daemon/dist/domain/rig-repository.js.map +1 -1
  155. package/daemon/dist/domain/rigspec-codec.d.ts.map +1 -1
  156. package/daemon/dist/domain/rigspec-codec.js +6 -0
  157. package/daemon/dist/domain/rigspec-codec.js.map +1 -1
  158. package/daemon/dist/domain/rigspec-exporter.d.ts.map +1 -1
  159. package/daemon/dist/domain/rigspec-exporter.js +8 -0
  160. package/daemon/dist/domain/rigspec-exporter.js.map +1 -1
  161. package/daemon/dist/domain/rigspec-instantiator.d.ts +18 -1
  162. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  163. package/daemon/dist/domain/rigspec-instantiator.js +202 -10
  164. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  165. package/daemon/dist/domain/rigspec-preflight.d.ts +11 -0
  166. package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
  167. package/daemon/dist/domain/rigspec-preflight.js +35 -1
  168. package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
  169. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  170. package/daemon/dist/domain/rigspec-schema.js +25 -0
  171. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  172. package/daemon/dist/domain/runtime-adapter.d.ts +5 -0
  173. package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
  174. package/daemon/dist/domain/runtime-adapter.js.map +1 -1
  175. package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts +8 -0
  176. package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts.map +1 -0
  177. package/daemon/dist/domain/scope/plan-lock-artifacts.js +57 -0
  178. package/daemon/dist/domain/scope/plan-lock-artifacts.js.map +1 -0
  179. package/daemon/dist/domain/scope/scaffold-placeholder.d.ts +38 -0
  180. package/daemon/dist/domain/scope/scaffold-placeholder.d.ts.map +1 -0
  181. package/daemon/dist/domain/scope/scaffold-placeholder.js +98 -0
  182. package/daemon/dist/domain/scope/scaffold-placeholder.js.map +1 -0
  183. package/daemon/dist/domain/scope/scope-approve.d.ts.map +1 -1
  184. package/daemon/dist/domain/scope/scope-approve.js +22 -1
  185. package/daemon/dist/domain/scope/scope-approve.js.map +1 -1
  186. package/daemon/dist/domain/scope/scope-audit.d.ts.map +1 -1
  187. package/daemon/dist/domain/scope/scope-audit.js +57 -20
  188. package/daemon/dist/domain/scope/scope-audit.js.map +1 -1
  189. package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
  190. package/daemon/dist/domain/seat-handover-service.js +7 -1
  191. package/daemon/dist/domain/seat-handover-service.js.map +1 -1
  192. package/daemon/dist/domain/session-transport.d.ts +17 -0
  193. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  194. package/daemon/dist/domain/session-transport.js +44 -0
  195. package/daemon/dist/domain/session-transport.js.map +1 -1
  196. package/daemon/dist/domain/slices/qitem-membership.d.ts +17 -0
  197. package/daemon/dist/domain/slices/qitem-membership.d.ts.map +1 -0
  198. package/daemon/dist/domain/slices/qitem-membership.js +60 -0
  199. package/daemon/dist/domain/slices/qitem-membership.js.map +1 -0
  200. package/daemon/dist/domain/slices/slice-detail-projector.d.ts +5 -0
  201. package/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -1
  202. package/daemon/dist/domain/slices/slice-detail-projector.js +157 -11
  203. package/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -1
  204. package/daemon/dist/domain/slices/slice-indexer.d.ts +86 -0
  205. package/daemon/dist/domain/slices/slice-indexer.d.ts.map +1 -1
  206. package/daemon/dist/domain/slices/slice-indexer.js +422 -45
  207. package/daemon/dist/domain/slices/slice-indexer.js.map +1 -1
  208. package/daemon/dist/domain/startup-orchestrator.d.ts +9 -0
  209. package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
  210. package/daemon/dist/domain/startup-orchestrator.js +71 -3
  211. package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
  212. package/daemon/dist/domain/successor-session-launcher.d.ts +4 -0
  213. package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
  214. package/daemon/dist/domain/successor-session-launcher.js +2 -0
  215. package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
  216. package/daemon/dist/domain/terminal/cmux-provider-adapter.d.ts +12 -11
  217. package/daemon/dist/domain/terminal/cmux-provider-adapter.d.ts.map +1 -1
  218. package/daemon/dist/domain/terminal/cmux-provider-adapter.js +61 -28
  219. package/daemon/dist/domain/terminal/cmux-provider-adapter.js.map +1 -1
  220. package/daemon/dist/domain/terminal/herdr-adapter.d.ts +27 -10
  221. package/daemon/dist/domain/terminal/herdr-adapter.d.ts.map +1 -1
  222. package/daemon/dist/domain/terminal/herdr-adapter.js +74 -33
  223. package/daemon/dist/domain/terminal/herdr-adapter.js.map +1 -1
  224. package/daemon/dist/domain/transcript-capture.d.ts +3 -0
  225. package/daemon/dist/domain/transcript-capture.d.ts.map +1 -1
  226. package/daemon/dist/domain/transcript-capture.js +28 -0
  227. package/daemon/dist/domain/transcript-capture.js.map +1 -1
  228. package/daemon/dist/domain/transcript-store.d.ts +10 -0
  229. package/daemon/dist/domain/transcript-store.d.ts.map +1 -1
  230. package/daemon/dist/domain/transcript-store.js +26 -0
  231. package/daemon/dist/domain/transcript-store.js.map +1 -1
  232. package/daemon/dist/domain/types.d.ts +21 -0
  233. package/daemon/dist/domain/types.d.ts.map +1 -1
  234. package/daemon/dist/domain/types.js.map +1 -1
  235. package/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts.map +1 -1
  236. package/daemon/dist/domain/workspace/default-workspace-scaffold.js +9 -4
  237. package/daemon/dist/domain/workspace/default-workspace-scaffold.js.map +1 -1
  238. package/daemon/dist/domain/workspace/workspace-doctor.js +1 -1
  239. package/daemon/dist/domain/workspace/workspace-doctor.js.map +1 -1
  240. package/daemon/dist/routes/agent-images.d.ts.map +1 -1
  241. package/daemon/dist/routes/agent-images.js +2 -0
  242. package/daemon/dist/routes/agent-images.js.map +1 -1
  243. package/daemon/dist/routes/mission-control.js +1 -1
  244. package/daemon/dist/routes/mission-control.js.map +1 -1
  245. package/daemon/dist/routes/missions.d.ts +7 -0
  246. package/daemon/dist/routes/missions.d.ts.map +1 -1
  247. package/daemon/dist/routes/missions.js +6 -1
  248. package/daemon/dist/routes/missions.js.map +1 -1
  249. package/daemon/dist/routes/ps.d.ts.map +1 -1
  250. package/daemon/dist/routes/ps.js +5 -1
  251. package/daemon/dist/routes/ps.js.map +1 -1
  252. package/daemon/dist/routes/queue.d.ts.map +1 -1
  253. package/daemon/dist/routes/queue.js +9 -2
  254. package/daemon/dist/routes/queue.js.map +1 -1
  255. package/daemon/dist/routes/rigs.d.ts.map +1 -1
  256. package/daemon/dist/routes/rigs.js +29 -10
  257. package/daemon/dist/routes/rigs.js.map +1 -1
  258. package/daemon/dist/routes/scope-audit.d.ts.map +1 -1
  259. package/daemon/dist/routes/scope-audit.js +141 -135
  260. package/daemon/dist/routes/scope-audit.js.map +1 -1
  261. package/daemon/dist/routes/sessions.js +2 -1
  262. package/daemon/dist/routes/sessions.js.map +1 -1
  263. package/daemon/dist/routes/slices.d.ts.map +1 -1
  264. package/daemon/dist/routes/slices.js +48 -38
  265. package/daemon/dist/routes/slices.js.map +1 -1
  266. package/daemon/dist/routes/transcripts.d.ts.map +1 -1
  267. package/daemon/dist/routes/transcripts.js +62 -33
  268. package/daemon/dist/routes/transcripts.js.map +1 -1
  269. package/daemon/dist/startup.d.ts.map +1 -1
  270. package/daemon/dist/startup.js +42 -12
  271. package/daemon/dist/startup.js.map +1 -1
  272. package/daemon/docs/reference/agent-startup-guide.md +1 -0
  273. package/daemon/docs/reference/rig-spec.md +19 -0
  274. package/daemon/policies/builtin/locked.policy.md +24 -0
  275. package/daemon/policies/builtin/open.policy.md +24 -0
  276. package/daemon/policies/builtin/standard.policy.md +25 -0
  277. package/daemon/policies/builtin/yolo.policy.md +20 -0
  278. package/daemon/policies/examples/my-cautious-dev.policy.md +40 -0
  279. package/daemon/specs/agents/apps/vault-specialist/agent.yaml +2 -1
  280. package/daemon/specs/agents/conveyor/builder/agent.yaml +2 -1
  281. package/daemon/specs/agents/conveyor/lead/agent.yaml +2 -1
  282. package/daemon/specs/agents/conveyor/planner/agent.yaml +2 -1
  283. package/daemon/specs/agents/conveyor/reviewer/agent.yaml +2 -1
  284. package/daemon/specs/agents/design/product-designer/agent.yaml +12 -2
  285. package/daemon/specs/agents/development/implementer/agent.yaml +12 -2
  286. package/daemon/specs/agents/development/qa/agent.yaml +12 -2
  287. package/daemon/specs/agents/development/qa/guidance/role.md +1 -0
  288. package/daemon/specs/agents/factory-rsi/dogfood/agent.yaml +2 -1
  289. package/daemon/specs/agents/factory-rsi/release-manager/agent.yaml +2 -1
  290. package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +12 -2
  291. package/daemon/specs/agents/product-management/pm/agent.yaml +1 -2
  292. package/daemon/specs/agents/research/analyst/agent.yaml +2 -1
  293. package/daemon/specs/agents/research/synthesizer/agent.yaml +2 -1
  294. package/daemon/specs/agents/review/independent-reviewer/agent.yaml +12 -2
  295. package/daemon/specs/agents/shared/agent.yaml +5 -8
  296. package/daemon/specs/agents/shared/runtime/claude-settings.fragment.json +1 -8
  297. package/daemon/specs/agents/shared/skills/core/agent-starters/SKILL.md +132 -0
  298. package/daemon/{assets/plugins/openrig-core/skills → specs/agents/shared/skills/core}/agent-startup-and-context-ingestion/SKILL.md +27 -19
  299. package/daemon/specs/agents/shared/skills/core/attention-queue/SKILL.md +264 -0
  300. package/daemon/specs/agents/shared/skills/core/cross-host-rig-commands/SKILL.md +190 -0
  301. package/daemon/specs/agents/shared/skills/core/human-in-the-loop/SKILL.md +104 -0
  302. package/daemon/specs/agents/shared/skills/core/openrig-architect/SKILL.md +23 -8
  303. package/daemon/specs/agents/shared/skills/core/openrig-cmux/SKILL.md +0 -5
  304. package/daemon/specs/agents/shared/skills/core/openrig-herdr/SKILL.md +1 -6
  305. package/daemon/specs/agents/shared/skills/core/openrig-upgrade/SKILL.md +460 -0
  306. package/daemon/specs/agents/shared/skills/core/rig-bundles-and-shareable-artifacts/SKILL.md +101 -0
  307. package/daemon/specs/agents/shared/skills/core/rig-lifecycle/SKILL.md +22 -11
  308. package/daemon/specs/agents/shared/skills/core/session-source-fork/SKILL.md +160 -0
  309. package/daemon/specs/agents/shared/skills/core/specification-system/SKILL.md +103 -0
  310. package/daemon/specs/agents/shared/skills/core/topology-mutation-and-seat-management/SKILL.md +118 -0
  311. package/daemon/specs/agents/shared/skills/core/watchdog/SKILL.md +125 -0
  312. package/daemon/specs/agents/shared/skills/process/brainstorming/OPENRIG.md +3 -3
  313. package/daemon/specs/agents/shared/skills/process/executing-plans/OPENRIG.md +1 -1
  314. package/daemon/specs/agents/shared/skills/process/frontend-design/SKILL.md +6 -3
  315. package/daemon/specs/agents/shared/skills/process/systematic-debugging/find-polluter.sh +0 -0
  316. package/daemon/specs/agents/shared/skills/process/test-driven-development/SKILL.md +1 -1
  317. package/daemon/specs/agents/shared/skills/process/using-superpowers/OPENRIG.md +1 -1
  318. package/daemon/specs/agents/shared/skills/process/verification-before-completion/SKILL.md +13 -2
  319. package/daemon/specs/agents/shared/skills/process/writing-plans/OPENRIG.md +1 -1
  320. package/daemon/specs/rigs/focused/pm-team/CULTURE.md +1 -1
  321. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/agent.yaml +2 -2
  322. package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/guidance/role.md +5 -4
  323. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/agent.yaml +2 -2
  324. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +3 -5
  325. package/daemon/specs/rigs/launch/kernel/agents/queue/worker/agent.yaml +2 -2
  326. package/daemon/specs/rigs/launch/kernel/culture/CULTURE.md +3 -4
  327. package/daemon/specs/rigs/preview/product-team/CULTURE.md +1 -1
  328. package/dist/bin-wrapper.d.ts.map +1 -1
  329. package/dist/bin-wrapper.js +3 -1
  330. package/dist/bin-wrapper.js.map +1 -1
  331. package/dist/build-info.js +3 -3
  332. package/dist/cli-error.d.ts +33 -0
  333. package/dist/cli-error.d.ts.map +1 -0
  334. package/dist/cli-error.js +94 -0
  335. package/dist/cli-error.js.map +1 -0
  336. package/dist/commands/config-init-workspace.js +1 -1
  337. package/dist/commands/doctor.d.ts +1 -1
  338. package/dist/commands/doctor.d.ts.map +1 -1
  339. package/dist/commands/doctor.js +17 -11
  340. package/dist/commands/doctor.js.map +1 -1
  341. package/dist/commands/host.d.ts.map +1 -1
  342. package/dist/commands/host.js +24 -10
  343. package/dist/commands/host.js.map +1 -1
  344. package/dist/commands/proof.js +1 -1
  345. package/dist/commands/proof.js.map +1 -1
  346. package/dist/commands/ps.d.ts.map +1 -1
  347. package/dist/commands/ps.js +16 -2
  348. package/dist/commands/ps.js.map +1 -1
  349. package/dist/commands/queue.d.ts.map +1 -1
  350. package/dist/commands/queue.js +103 -24
  351. package/dist/commands/queue.js.map +1 -1
  352. package/dist/commands/rig.d.ts.map +1 -1
  353. package/dist/commands/rig.js +122 -0
  354. package/dist/commands/rig.js.map +1 -1
  355. package/dist/commands/scope.js +2 -2
  356. package/dist/commands/scope.js.map +1 -1
  357. package/dist/commands/send.d.ts.map +1 -1
  358. package/dist/commands/send.js +118 -24
  359. package/dist/commands/send.js.map +1 -1
  360. package/dist/commands/setup.d.ts +14 -0
  361. package/dist/commands/setup.d.ts.map +1 -1
  362. package/dist/commands/setup.js +131 -8
  363. package/dist/commands/setup.js.map +1 -1
  364. package/dist/commands/slack.d.ts +37 -0
  365. package/dist/commands/slack.d.ts.map +1 -0
  366. package/dist/commands/slack.js +274 -0
  367. package/dist/commands/slack.js.map +1 -0
  368. package/dist/commands/ui.d.ts +1 -0
  369. package/dist/commands/ui.d.ts.map +1 -1
  370. package/dist/commands/ui.js +2 -0
  371. package/dist/commands/ui.js.map +1 -1
  372. package/dist/commands/up.js +1 -1
  373. package/dist/commands/up.js.map +1 -1
  374. package/dist/commands/whoami.d.ts.map +1 -1
  375. package/dist/commands/whoami.js +3 -3
  376. package/dist/commands/whoami.js.map +1 -1
  377. package/dist/daemon-lifecycle.d.ts.map +1 -1
  378. package/dist/daemon-lifecycle.js +45 -14
  379. package/dist/daemon-lifecycle.js.map +1 -1
  380. package/dist/host-registry.d.ts +6 -1
  381. package/dist/host-registry.d.ts.map +1 -1
  382. package/dist/host-registry.js +15 -6
  383. package/dist/host-registry.js.map +1 -1
  384. package/dist/index.d.ts +3 -0
  385. package/dist/index.d.ts.map +1 -1
  386. package/dist/index.js +6 -1
  387. package/dist/index.js.map +1 -1
  388. package/dist/lib/scope/scaffold-placeholder.d.ts +38 -0
  389. package/dist/lib/scope/scaffold-placeholder.d.ts.map +1 -0
  390. package/dist/lib/scope/scaffold-placeholder.js +98 -0
  391. package/dist/lib/scope/scaffold-placeholder.js.map +1 -0
  392. package/dist/lib/scope/scope-audit.d.ts.map +1 -1
  393. package/dist/lib/scope/scope-audit.js +57 -20
  394. package/dist/lib/scope/scope-audit.js.map +1 -1
  395. package/dist/lib/scope-templates/backlog-deprecation.md +1 -1
  396. package/dist/lib/scope-templates/backlog-tech-debt.md +1 -1
  397. package/dist/lib/scope-templates/bug-fix.md +1 -1
  398. package/dist/lib/scope-templates/implementation-prd.md +1 -1
  399. package/dist/lib/scope-templates/mission-notes.md +7 -2
  400. package/dist/lib/scope-templates/mission-placeholder.md +1 -1
  401. package/dist/lib/scope-templates/mission-progress.md +1 -1
  402. package/dist/lib/scope-templates/mission-release.md +1 -1
  403. package/dist/lib/scope-templates/placeholder.md +1 -1
  404. package/dist/lib/scope-templates/proof.md +1 -1
  405. package/dist/lib/scope-templates/release-feature.md +1 -1
  406. package/dist/lib/scope-templates/research.md +1 -1
  407. package/dist/lib/scope-templates/slice-progress.md +1 -1
  408. package/dist/remote-host-ops.d.ts.map +1 -1
  409. package/dist/remote-host-ops.js +2 -2
  410. package/dist/remote-host-ops.js.map +1 -1
  411. package/dist/slack/config.d.ts +41 -0
  412. package/dist/slack/config.d.ts.map +1 -0
  413. package/dist/slack/config.js +60 -0
  414. package/dist/slack/config.js.map +1 -0
  415. package/dist/slack/inbound.d.ts +75 -0
  416. package/dist/slack/inbound.d.ts.map +1 -0
  417. package/dist/slack/inbound.js +133 -0
  418. package/dist/slack/inbound.js.map +1 -0
  419. package/dist/slack/message.d.ts +26 -0
  420. package/dist/slack/message.d.ts.map +1 -0
  421. package/dist/slack/message.js +60 -0
  422. package/dist/slack/message.js.map +1 -0
  423. package/dist/slack/outbound.d.ts +39 -0
  424. package/dist/slack/outbound.d.ts.map +1 -0
  425. package/dist/slack/outbound.js +52 -0
  426. package/dist/slack/outbound.js.map +1 -0
  427. package/dist/slack/queue-bridge.d.ts +56 -0
  428. package/dist/slack/queue-bridge.d.ts.map +1 -0
  429. package/dist/slack/queue-bridge.js +114 -0
  430. package/dist/slack/queue-bridge.js.map +1 -0
  431. package/dist/slack/secrets.d.ts +21 -0
  432. package/dist/slack/secrets.d.ts.map +1 -0
  433. package/dist/slack/secrets.js +73 -0
  434. package/dist/slack/secrets.js.map +1 -0
  435. package/dist/slack/slack-api.d.ts +49 -0
  436. package/dist/slack/slack-api.d.ts.map +1 -0
  437. package/dist/slack/slack-api.js +110 -0
  438. package/dist/slack/slack-api.js.map +1 -0
  439. package/dist/slack/state-store.d.ts +62 -0
  440. package/dist/slack/state-store.d.ts.map +1 -0
  441. package/dist/slack/state-store.js +132 -0
  442. package/dist/slack/state-store.js.map +1 -0
  443. package/package.json +1 -1
  444. package/ui/dist/assets/{index-zrFqS7gL.js → index-DkNi0RT8.js} +184 -184
  445. package/ui/dist/assets/index-N-SdPj-I.css +32 -0
  446. package/ui/dist/index.html +2 -2
  447. package/daemon/assets/plugins/openrig-core/skills/openrig-architect/SKILL.md +0 -361
  448. package/daemon/assets/plugins/openrig-core/skills/openrig-cmux/SKILL.md +0 -86
  449. package/daemon/assets/plugins/openrig-core/skills/openrig-herdr/SKILL.md +0 -158
  450. package/daemon/assets/plugins/openrig-core/skills/openrig-operator/SKILL.md +0 -222
  451. package/daemon/docs/reference/product-factory-vps-runbook.md +0 -132
  452. package/daemon/specs/agents/shared/skills/core/mission-slice-sop/SKILL.md +0 -113
  453. package/daemon/specs/agents/shared/skills/core/openrig-installer/SKILL.md +0 -142
  454. package/daemon/specs/agents/shared/skills/core/openrig-operator/SKILL.md +0 -110
  455. package/daemon/specs/agents/shared/skills/core/openrig-user/SKILL.md +0 -1245
  456. package/daemon/specs/agents/shared/skills/core/openrig-user-settings/SKILL.md +0 -153
  457. package/daemon/specs/agents/shared/skills/pm/backlog-capture/SKILL.md +0 -43
  458. package/daemon/specs/agents/shared/skills/pm/context-builder/SKILL.md +0 -87
  459. package/daemon/specs/agents/shared/skills/pm/exec-summary/SKILL.md +0 -84
  460. package/daemon/specs/agents/shared/skills/pm/office-hours/SKILL.md +0 -129
  461. package/daemon/specs/agents/shared/skills/pm/plan-review/SKILL.md +0 -98
  462. package/daemon/specs/agents/shared/skills/pm/requirements-writer/SKILL.md +0 -113
  463. package/daemon/specs/agents/shared/skills/pm/ui-mockup/SKILL.md +0 -76
  464. package/daemon/specs/agents/shared/skills/pods/development-team/SKILL.md +0 -148
  465. package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +0 -266
  466. package/daemon/specs/agents/shared/skills/pods/review-team/SKILL.md +0 -210
  467. package/daemon/specs/agents/shared/skills/process/systematic-debugging/CREATION-LOG.md +0 -119
  468. package/daemon/specs/agents/shared/skills/process/systematic-debugging/test-academic.md +0 -14
  469. package/daemon/specs/agents/shared/skills/process/systematic-debugging/test-pressure-1.md +0 -58
  470. package/daemon/specs/agents/shared/skills/process/systematic-debugging/test-pressure-2.md +0 -68
  471. package/daemon/specs/agents/shared/skills/process/systematic-debugging/test-pressure-3.md +0 -69
  472. package/ui/dist/assets/index-CFqxa0zW.css +0 -32
@@ -1,1245 +0,0 @@
1
- ---
2
- name: openrig-user
3
- description: Use when operating OpenRig with the `rig` CLI and you need the shipped command surface for identity, inventory, communication, lifecycle, specs, recovery, or agent-facing JSON output.
4
- ---
5
-
6
- # OpenRig User
7
-
8
- This is an as-built guide to the shipped `rig` CLI.
9
- Use current code and `rig ... --help` as ground truth if anything here ever conflicts with older planning docs.
10
-
11
- This is not the config-layer or builder guide. Use the substrate control-plane guidance for `rigx`
12
- and experimental overlays. Use the OpenRig builder guidance when changing OpenRig behavior,
13
- doctrine, or release posture.
14
-
15
- ## Coordination primitives — when to use which
16
-
17
- Three coordination surfaces, used together for forward-momentum work. Internalize this
18
- on first read — it shapes every turn you take in a rig.
19
-
20
- ### `rig send <seat> "<text>"` — intra-pod direct messaging / nudges
21
-
22
- Use when you need to ask a quick question or give a teammate context that does not
23
- carry handoff semantics. **NOT for durable work.** NOT for state that must survive
24
- across turns. The message lands in the target's pane; there is no durable queue
25
- record. The CLI prints `Sent to ...` (and `Verified: yes/no` with `--verify`); read
26
- the receipt and move on.
27
-
28
- Example:
29
-
30
- ```bash
31
- rig send reviewer@acme-web "Heads up — filing the per-commit handoff on the search-filters slice at the current tip." --verify
32
- ```
33
-
34
- ### `rig queue create --source <X> --destination <Y> --tags <...> --body "<...>"` — durable work item
35
-
36
- Use for any substantive work that must not fall through chat — slice handoffs,
37
- guard verdicts, QA results, full-tip reviews, multi-item batches. Survives agent
38
- restarts. Tracked in the daemon SQLite schema. Surfaces in Project / queue views
39
- + in the destination seat's inbox. Tag with mission / slice / gate / checkpoint
40
- so future-you (and any peer) can find it.
41
-
42
- Body discipline: substantive bodies go through a temp-file pattern, not inline
43
- `--body` with raw backticks — `rig queue create` body parsing breaks on
44
- unescaped backticks and rejects flag-like tokens.
45
-
46
- Example:
47
-
48
- ```bash
49
- rig queue create \
50
- --source builder@acme-web \
51
- --destination reviewer@acme-web \
52
- --tags "mission:site-relaunch,slice:02-search-filters,gate:guard,handoff:per-commit,checkpoint:bug-1" \
53
- --body "$(cat /tmp/per-commit-body.txt)"
54
- ```
55
-
56
- ### `rig queue handoff <qitem-id> --to <next> ...` — hot-potato handoff
57
-
58
- Use when you have completed your turn on a qitem and the work moves to the next
59
- owner. **This is forward momentum.** The ball passes to the destination seat;
60
- chain-of-record (the prior qitem id) is preserved so the verdict trail is intact;
61
- tags carry the phase boundary forward (e.g. `gate:guard` → `gate:qa`).
62
-
63
- Example:
64
-
65
- ```bash
66
- rig queue handoff qitem-20260601012431-d78aa805 \
67
- --to qa@acme-web \
68
- --tags "mission:site-relaunch,slice:02-search-filters,gate:qa,handoff:adversarial-dogfood"
69
- ```
70
-
71
- ### §1b doctrine — turn ends by passing the ball
72
-
73
- **A turn ends by passing the ball, never by going idle holding the slice waiting
74
- on a confirmation the process does not include.** If the work was authorized, the
75
- per-commit guard + adversarial QA + orch heavy-verify are the guardrails — not an
76
- operator pre-commit gate. Do the authorized work and pass the ball.
77
-
78
- Valid pauses are only:
79
-
80
- - A genuine blocker — file a blocked-state qitem against the blocking peer or
81
- surface explicitly to orch.
82
- - A scope-or-architecture question that requires owner input and changes the
83
- plan — surface to orch with the specific decision needed.
84
-
85
- Implementing already-authorized work is neither of these. Proceed without
86
- phantom-gating on an imagined "next prompt" or "operator confirmation" that the
87
- process does not require.
88
-
89
- ### Anti-patterns
90
-
91
- - Using `rig send` for durable work → use `rig queue create` instead. Sends do
92
- not survive restarts and do not show up in queue/project views.
93
- - Idle-holding a slice for an imagined "next prompt" or "operator confirmation"
94
- that the process does not require → pass the ball via `rig queue handoff` and
95
- proceed to the next slice or stand by for the inbound verdict. See the §1b
96
- doctrine above.
97
- - Hand-coding `rigx queue` for new work → `rig queue` is the daemon-backed
98
- canonical surface since the 2026-05-11 host-CLI fix. `rigx queue` is a
99
- recovery-only fallback; qitems written via `rigx queue` are invisible to
100
- daemon-backed reads and break fleet-wide routing discipline.
101
- - Inlining a multi-line / backtick-heavy body into `rig queue create --body`
102
- → write the body to `/tmp/<descriptive-name>.txt` first, then
103
- `--body "$(cat /tmp/<file>.txt)"`. The body parser does not tolerate raw
104
- backticks or flag-like tokens inline.
105
-
106
- ## Runtime-Gated Coordination Primitives
107
-
108
- OpenRig v0.3.1 is published publicly as `@openrig/cli@0.3.1` and GitHub Release
109
- `v0.3.1`. It includes the bundled PL-004 Coordination Primitive System: Phase A
110
- `rig stream` / `rig queue`, Phase B `rig project` / `rig view`, Phase C
111
- `rig watchdog`, and Phase D `rig workflow` / `workflow-keepalive`.
112
-
113
- These are shipped product surfaces in v0.3.x, but they require a compatible
114
- v0.3.x daemon and matching SQLite schema at runtime — the installed package
115
- version is not automatically the version of the daemon serving you. If a
116
- coordination command behaves unexpectedly, confirm the running daemon with
117
- `rig whoami --json` and daemon status before assuming a product bug.
118
-
119
- Default posture:
120
-
121
- - Treat daemon `rig queue`, `rig stream`, `rig project`, `rig view`, `rig watchdog`, and
122
- `rig workflow` as the product coordination surfaces when the active daemon is v0.2.0 or newer.
123
- - **CANONICAL SURFACE NOTE (2026-05-11)**: `rig queue` (daemon-backed SQLite) became
124
- the canonical queue-routing surface when the 2026-05-11 host-CLI fix landed. The
125
- coordination model is now load-bearing at the top of this skill — see
126
- "Coordination primitives — when to use which" above for the send / queue /
127
- queue-handoff usage model and the §1b doctrine. Auxiliary queue verbs:
128
- `rig queue update / show / list` complement `rig queue create / handoff`
129
- for in-flight inspection and state mutation.
130
- - Use temporary substrate overlays such as `rigx queue`, `rigx stream`, `rigx project`, and
131
- `rigx view-proto` only where the current OpenRig workstream explicitly says that legacy/control
132
- layer is still in use. For queue specifically, `rigx queue` is recovery-only fallback;
133
- qitems written via `rigx queue` are invisible to daemon-backed reads and break fleet-wide
134
- routing discipline.
135
- - If a daemon-backed coordination command fails, debug the command/runtime/schema edge directly;
136
- do not assume the right workaround is to drop back to a config-layer primitive.
137
- - Do not perform daemon stop/start, production DB copy/mutation, release, publish, or other
138
- consequence-boundary actions unless the operator/workstream has granted that specific gate.
139
-
140
- ## First-user workspace setup
141
-
142
- When booting into a rig on a host where the workspace is unset, gap-ridden, or
143
- points at a stale layout, address that before substantive project work. The
144
- shipped surface is small + bounded — reach for the canonical commands rather
145
- than improvising.
146
-
147
- ### Detect workspace state at boot
148
-
149
- Agent-actionable when the daemon is reachable.
150
-
151
- ```bash
152
- rig workspace validate --json
153
- rig workspace validate <path> --kind <user|project|knowledge|lab|delivery> --json
154
- ```
155
-
156
- `rig workspace validate` walks the workspace root and emits a structured
157
- frontmatter-gap report against the v0 contract. Exit code is non-zero when
158
- gaps exist (operators chain into hygiene fix loops). Default root is the
159
- current directory; pass a positional path to validate elsewhere. `--kind`
160
- scopes the contract to a specific workspace kind; omit for a kind-agnostic
161
- structural check.
162
-
163
- If `rig workspace validate` reports a non-zero `gapCount` OR the workspace
164
- root is unset / unwritable, the workspace needs instantiation — see the next
165
- section.
166
-
167
- ### Instantiate the canonical workspace scaffold
168
-
169
- Agent-actionable. Idempotent on existing dirs without `--force`.
170
-
171
- ```bash
172
- rig config init-workspace
173
- rig config init-workspace --root <path>
174
- rig config init-workspace --dry-run --json
175
- ```
176
-
177
- `rig config init-workspace` scaffolds the canonical workspace layout at the
178
- configured `workspace.root` (default `~/.openrig/workspace`):
179
-
180
- - `missions/` — release missions + slices
181
- - `artifacts/` — work artifacts produced inside the workspace
182
- - `evidence/` — non-dogfood evidence (release evidence, proof packets, etc.)
183
- - `progress/` — progress index + per-mission rails
184
- - `field-notes/` — operator + agent observations
185
- - `specs/` — spec library (rig + agent + workflow YAML lives here)
186
- - `dogfood-evidence/` — dogfood proof packets + run artifacts
187
-
188
- The scaffold seeds one example mission (`getting-started`) with multiple
189
- slices, and drops a workspace README.md + STEERING.md so a fresh install has
190
- browsable Project content. `--root <path>` targets a non-default root for
191
- this call; `--dry-run` reports what would be created without writing.
192
- `--force` overwrites existing FILES but never deletes
193
- directories — operator content is safe.
194
-
195
- ### Redirect the workspace root
196
-
197
- Operator-gated when persistent. Agent-actionable when one-shot via env-var.
198
-
199
- For a single command:
200
-
201
- ```bash
202
- OPENRIG_WORKSPACE_ROOT=<path> rig <command> ...
203
- ```
204
-
205
- For a persistent host-level redirect, the operator changes the config file or
206
- runs the setter:
207
-
208
- ```bash
209
- rig config set workspace.root <path>
210
- ```
211
-
212
- ConfigStore precedence: `OPENRIG_WORKSPACE_ROOT` env > config-file
213
- `workspace.root` > built-in default `~/.openrig/workspace`. The same
214
- precedence governs `OPENRIG_WORKSPACE_SPECS_ROOT` → `workspace.specs_root`
215
- (default `<workspace_root>/specs`).
216
-
217
- Prefer the env-var form for one-shot redirects (transparent to operators);
218
- reserve `rig config set` for changes the operator owns.
219
-
220
- ### Build a workspace from scratch
221
-
222
- Agent-actionable. Same surface as the canonical scaffold above; the
223
- `workspace.root` cascade handles non-existent host paths.
224
-
225
- ```bash
226
- rig config init-workspace --root /path/to/new/workspace
227
- ```
228
-
229
- The command creates the root dir if missing (idempotent: existing root +
230
- populated subdirs is a no-op). Run
231
- `rig workspace validate /path/to/new/workspace --json` after to confirm the
232
- contract holds.
233
-
234
- ### Create a workflow inside an existing workspace
235
-
236
- Authoring is operator-or-agent; validation + instantiation are
237
- agent-actionable.
238
-
239
- Workflow spec files live at:
240
-
241
- ```
242
- <workspace_root>/specs/workflows/<name>.yaml
243
- ```
244
-
245
- `<workspace_root>` resolves via the ConfigStore precedence named above.
246
- There is no `rig workflow create` verb in v0.3.x — the spec YAML is authored
247
- directly. Template by hand from the documented schema, or copy a built-in
248
- starter from `<openrig install>/dist/builtins/workflow-specs/` and adapt.
249
- Once written:
250
-
251
- ```bash
252
- rig workflow validate <workspace_root>/specs/workflows/<name>.yaml --json
253
-
254
- rig workflow instantiate <workspace_root>/specs/workflows/<name>.yaml \
255
- --root-objective "<one-line objective for the run>" \
256
- --created-by <your-session>@<your-rig> \
257
- --json
258
- ```
259
-
260
- Both `--root-objective <text>` and `--created-by <session>` are REQUIRED
261
- on `instantiate` — omitting either yields a Commander required-option
262
- error before the daemon is contacted. `--entry-owner <session>` is an
263
- optional override for the entry-step owner; default routing is per the
264
- workflow spec.
265
-
266
- `validate` returns a structured ok/error report; `instantiate` creates a
267
- workflow instance + entry-step qitem. Inspect existing surface state with:
268
-
269
- ```bash
270
- rig workflow specs --json # list registered specs (built-in + operator-authored)
271
- rig workflow list --json # list active workflow instances
272
- rig workflow show <instanceId> --json
273
- ```
274
-
275
- ## v0.3.x Starter, Workspace, And Plugin Surfaces
276
-
277
- OpenRig v0.3.0 adds `rig agent-image`, `rig context-pack`, `rig workspace`, and
278
- `rig config init-workspace`. It also shifts fresh-user starter guidance toward
279
- `product-team` for human-directed work and `conveyor` for workflow-oriented
280
- work. Treat `demo` as legacy/test content unless a task specifically asks for
281
- the old demo spec.
282
-
283
- OpenRig v0.3.1 adds public package/source surfaces for Plugin Primitive v0,
284
- Claude Auto-Compaction Policy, migration `040_workflow_specs_diagnostic`,
285
- Library Explorer finishing, Settings Destination Explorer, Dashboard/For You
286
- vellum refresh, storytelling adapter, and action outcome + inline error UX.
287
-
288
- `rig plugin` is read-only at v0:
289
-
290
- ```bash
291
- rig plugin list
292
- rig plugin show <id>
293
- rig plugin used-by <id>
294
- rig plugin validate <path>
295
- ```
296
-
297
- There is no `rig plugin install` verb in v0.3.1. Plugin installation remains
298
- explicit operator copy/symlink to `$OPENRIG_HOME/plugins/<plugin-id>/`.
299
-
300
- Claude auto-compaction policy is opt-in default-off. The v0.3.1 package and
301
- this host's active daemon ship `policies.claude_compaction.*` ConfigStore keys,
302
- but no behavior changes unless the operator enables the policy.
303
-
304
- Known v0.3.0/v0.3.1 caveats:
305
- - `rig down` now accepts a rig name or id (symmetric with `rig up`): the earlier
306
- name-to-404 caveat (the D1 path) is resolved in v0.3.3. An ambiguous name
307
- matching more than one active rig is refused with the matching ids; re-run
308
- with `rig down <id>`.
309
- - `rig queue` / `rig view` JSON and limit compatibility drift is an open
310
- follow-up from host-adoption proof; treat it as a compatibility caveat, not a
311
- daemon-health failure.
312
- - Queue/view JSON/limit drift is now refined as a wrapper-layer routing issue,
313
- not a daemon-layer issue; use human-readable output for affected wrapper
314
- commands until v0.3.2.
315
- - First v0.3.1 daemon start hit a plugin-vendor fallback health-probe timeout;
316
- controlled retry succeeded. Manual retry is the current workaround.
317
- - Topology mobile drawer restoration and plugin source-label taxonomy are
318
- v0.3.2 carry-forwards.
319
-
320
- ## Recovery and Resilience (v0.3.4+)
321
-
322
- v0.3.4's theme is Recovery + Resilience. The surfaces below compose into a
323
- single boot-to-running-rig path that survives crashes, hand-resumed sessions,
324
- profile-load drift, and partial workspace state without silently fudging
325
- status.
326
-
327
- ### `rig start` — recovery entrypoint
328
-
329
- `rig start` is the top-level recovery sequencer. It does not invent recovery;
330
- it composes existing primitives (daemon start + kernel verify + per-rig
331
- restore) into one call.
332
-
333
- ```bash
334
- rig start # interactive: daemon + kernel + pick-and-restore
335
- rig start --last # headless: restore all rigs that were last running
336
- rig start --all # headless: restore all rigs with restore-usable snapshots
337
- rig start --rigs <name> [<name>...] # headless: restore only the named rigs
338
- rig start --json # JSON output for agents
339
- ```
340
-
341
- Framing: `rig start` is the RECOVERY entry point, not the getting-started
342
- hero. The fresh-user boot hero remains `rig up <starter>` (typically
343
- `rig up product-team`). Reach for `rig start` after a host reboot, daemon
344
- restart, or any "bring my rigs back" moment.
345
-
346
- ### `rig reconcile-session` — no-launch adopt of a hand-resumed session
347
-
348
- When an operator has externally resumed an agent session (e.g. attached a
349
- shell, restarted a runtime by hand) and you want OpenRig to reconcile its
350
- lifecycle state without re-launching or sending input, use:
351
-
352
- ```bash
353
- rig reconcile-session <session>
354
- rig reconcile-session <session> --rig <rigId> --node <logicalId>
355
- rig reconcile-session <session> --no-launch
356
- rig reconcile-session <session> --json
357
- ```
358
-
359
- This is a no-launch, no-input adopt. `--rig`/`--node` disambiguate when the
360
- canonical session name does not uniquely resolve. `--no-launch` is accepted
361
- for explicitness (it is the only mode this command has).
362
-
363
- ### Five-term restore status vocabulary
364
-
365
- The shipped restore vocabulary is intentionally honest. It surfaces in
366
- `rig up` / `rig restore` / `rig ps`. Use the term that fits — do not collapse
367
- to a generic "ok/failed":
368
-
369
- - `resumed` — seat resumed from its original session/snapshot and is live.
370
- - `fresh-primed` — seat opted into `--fresh` and was freshly started.
371
- - `awaiting-decision` — zero-session honest state. There is no resumable
372
- session AND no `--fresh` opt-in was given; the seat is waiting for an
373
- operator decision. Previously fudged as `failed`; that was wrong — nothing
374
- is broken, the system is asking for input.
375
- - `attention_required` — seat is in a state needing operator attention; not
376
- a transport failure. Clear via `rig seat clear-attention` once the
377
- attention has been resolved.
378
- - `failed` — the send transport or launch genuinely failed.
379
-
380
- This replaces the prior collapsed model (the v0.3.3 four-term vocabulary, in
381
- which `rebuilt` was a term, is retired).
382
-
383
- ### `rig seat clear-attention` — audited reconcile of stuck attention
384
-
385
- When a seat is stuck in `attention_required`, do NOT hand-edit SQLite to
386
- fake-clear the state. Use the evidence-gated, operator-attested, audited
387
- reconcile:
388
-
389
- ```bash
390
- rig seat clear-attention <session>
391
- rig seat clear-attention <session> --reason "operator attested: founder re-authed, confirmed live"
392
- rig seat clear-attention <session> --json
393
- ```
394
-
395
- `--reason <text>` is the operator-attestation override path; without it the
396
- command runs the evidence gate. Either way the action is audited.
397
-
398
- ### Periodic snapshots — crash-insurance floor
399
-
400
- The daemon ships a periodic-snapshot scheduler. It runs independently of
401
- teardown events and provides the crash-insurance floor that prior
402
- event-only/teardown-only snapshots could not provide on hard crashes.
403
-
404
- Config keys (SettingsStore):
405
- - `snapshots.periodic.enabled` — default `true`
406
- - `snapshots.periodic.interval_seconds` — default `300`
407
- - `snapshots.periodic.retention_keep` — default `10`
408
-
409
- Newest-wins semantics: when both `auto-periodic` and `auto-pre-down`
410
- snapshots exist for a rig, the freshest of the two is selected for restore.
411
- A newer `auto-periodic` beats a stale `auto-pre-down` (the crash fix); a
412
- genuinely-fresher `auto-pre-down` still wins on graceful cycles. Manual
413
- snapshots are handled separately. See
414
- `packages/daemon/src/domain/snapshot-repository.ts` for the ordering rule.
415
-
416
- The last-snapshot floor surfaces in `rig ps` / status output so an operator
417
- can see at a glance how recent the crash-insurance floor is.
418
-
419
- ### Codex profile-v2 preflight
420
-
421
- Profile-bearing launch/restore surfaces run a profile-load preflight. When
422
- profile-load issues are detected, the failure is honest and actionable
423
- (named error + remediation pointer) instead of a silent partial launch that
424
- would later look like an attention_required seat with no explanation.
425
-
426
- ### cmux launch readiness
427
-
428
- cmux-backed launches no longer produce silent partial workspace state. When
429
- parts of the workspace are missing, the launch surfaces partial state
430
- honestly and the UI exposes a one-click open-missing affordance.
431
-
432
- (See also `## Token-Efficient Defaults (v0.4.0+)` below for the compact-by-default read-command surface that lands in 0.4.0.)
433
-
434
- ## Token-Efficient Defaults (v0.4.0+)
435
-
436
- v0.4.0 flips the five most frequently invoked read-commands from firehose-by-default to compact-by-default, and `rig queue list` adopts the docker / kubectl read-command grammar. **All defaults preserve breadth and capability — the firehose is one explicit flag away.**
437
-
438
- ### `rig ps` — consolidated all-rigs default + the disclosure ladder (v0.4.4)
439
-
440
- ```bash
441
- rig ps # ALL ACTIVE RIGS, one compact row each + rollup line + count line + ladder footer (default)
442
- rig ps --json # bare array of ALL non-archived rigs (incl. stopped; existing keys + additive attentionCount)
443
- rig ps --rig <name> # one rig's detail
444
- rig ps --nodes # compact node inventory (current rig — session default, LOCAL only)
445
- rig ps --nodes --rig <name> # compact node inventory, named rig
446
- rig ps --nodes -A # fleet node inventory, projected rows
447
- rig ps --nodes -A --full # complete per-node records (the ONLY full fan-out; resumeToken VALUE retained here for downstream consumers)
448
- rig ps --nodes --session <sess> # narrow to one canonical session
449
- rig ps --include-archived # archived history as rows (otherwise ONE count line)
450
- rig ps --active # opt-in active-state filter (does NOT change the all-states default — ps surfaces topology/readiness, where stopped/recoverable/attention IS the actionable signal)
451
- ```
452
-
453
- **v0.4.4 consolidated default + disclosure ladder (OPR.0.4.4.21)**:
454
- - **The default is the fleet MAP**: every active rig as one O(rigs) compact row, with the host rollup ("N rigs · M seats · K need attention"), the archived/stopped count line, and the drill-ladder footer. The v0.4.0 current-rig default is RETIRED — it hid running rigs from the operator's field of view.
455
- - **`-A` has exactly ONE meaning**: the `--nodes` fleet widener. Bare `rig ps -A` errors (all-rigs IS the default; archived history stays behind `--include-archived`).
456
- - **The session-rig default applies ONLY to `--nodes`, and only locally.** Implicit scope defaults don't cross host boundaries: `rig ps --host <id> --nodes` requires an explicit `--rig` or `-A`; multi-host fan-out is rollup-only by default; the full explicit ladder (`--all-hosts --nodes -A`, `--full` for complete records) fans out per-node with hostId-stamped projected rows.
457
- - **STATED JSON contract**: default `--json` = bare array of ALL non-archived rigs INCLUDING stopped ones (scope-not-shape: existing keys preserved, additive `attentionCount`); only the human table folds stopped rigs into the count line.
458
- - **Resume-token security unchanged**: compact output never carries token material; `--full` retains it for consumers that legitimately need it.
459
-
460
- **The casual status glance is just `rig ps`.** The old fleet firehose is the explicit last rung: `rig ps --nodes -A --full`. The ~77,000-token incident class stays closed (compact + O(rigs) default + explicit ladder).
461
-
462
- ### `rig host` — the multi-host registry verbs (v0.4.4)
463
-
464
- ```bash
465
- rig host add --id <id> --transport ssh --target <tailnet-alias> --user openrig
466
- rig host add --id <id> --transport http --url http://100.x.y.z:7433 --bearer-env MY_TOKEN
467
- rig host list # pointers only — never secret values
468
- rig host doctor <id> # stepwise: transport -> rig binary -> daemon -> identity
469
- rig host doctor <id> --posture product-factory-vps [--public-addr <ip>]
470
- ```
471
-
472
- Exactly three verbs (capped); the VPS factory bootstrap is script + runbook
473
- (`docs/reference/product-factory-vps-runbook.md`). **Transport posture is
474
- DECIDED and documented** (cli-reference §Cross-host execution): ssh = pane ops
475
- (`send`/`capture`), http = daemon REST (`up`/`down`/`launch`), `ps`/`whoami`
476
- follow the DECLARED transport; fan-out is http-only; no cross-transport
477
- fallback; no http parity for send/capture in 0.4.4. Posture/doctor UNKNOWN is
478
- never pass — each unknown carries the command that verifies it.
479
-
480
- ### `rig whoami` — compact-by-default + `--full` (`--verbose` alias)
481
-
482
- ```bash
483
- rig whoami # compact: identity + peers names + edges + transcript path
484
- rig whoami --json # compact JSON (~192 tokens)
485
- rig whoami --full # complete payload (~909 tokens; v0.3.4 default shape)
486
- rig whoami --verbose # alias of --full
487
- ```
488
-
489
- The first command every agent runs on boot AND every compaction-restore. The compact default keeps identity-recovery essentials (`identity`, `peers` names + sessionNames, `edges` directional `kind` + `to.sessionName`, `transcriptPath`). `--full` adds `contextUsage`, `commands`, `peersNote`, `runtimeContext`. The compact-default is an ALLOWLIST projection — future payload fields default to `--full` and cannot silently re-bloat the every-boot path.
490
-
491
- ### `rig queue list` — active-frontier + docker/kubectl grammar
492
-
493
- ```bash
494
- rig queue list # active, compact, CURRENT-rig (docker-ps default)
495
- rig queue list -a # + closed/done history within current breadth (docker -a)
496
- rig queue list -A # cross-rig breadth (kubectl -A)
497
- rig queue list --full # add body + chain-of-record + transition history
498
- rig queue list -o json # compact JSON (token-safe, machine-parseable)
499
- rig queue list --full -o json # full JSON
500
- rig queue list --mine # just the caller's items
501
- rig queue list --destination <s> # destined to <s>
502
- rig queue list --source <s> # sourced by <s>
503
- rig queue show <qitemId> # full single item (kubectl describe)
504
- ```
505
-
506
- Four orthogonal axes (scope × history × field-breadth × encoding), all composable. **STOP using bare `rig queue list` as the cross-rig firehose.** Default is now active + compact + current-rig. The cross-rig + history + full-body firehose (the ~64,000-token bomb on this host) is opt-in via `-A -a --full`.
507
-
508
- ### `rig restore-check` — summary + not-ready-only default + `--full`
509
-
510
- ```bash
511
- rig restore-check # summary counts + not-ready seats (with reasons) only
512
- rig restore-check --full # complete per-seat readiness across the fleet (v0.3.4 default)
513
- rig restore-check --rig <name> # narrow
514
- rig restore-check --as <session> # narrow to one seat
515
- ```
516
-
517
- Closes the largest measured bomb (~79,000 → low thousands). Summary correctly identifies EVERY not-ready seat (no false-ready omission); detail is dropped only for ready seats.
518
-
519
- ### `rig context` — compact summary + `--full`
520
-
521
- ```bash
522
- rig context # compact summary
523
- rig context --full # complete current payload
524
- rig context --rig <name> # narrow to one rig
525
- rig context --threshold 80 # filter to seats at/above 80%
526
- ```
527
-
528
- Lower leverage than the others but keeps the read-command surface compact-by-default after the upgrade.
529
-
530
- ### Why this matters
531
-
532
- This release closes the host-version-aged token-burn class: on this host the read-commands accumulated to ~225,000 tokens of context-window cost over a typical orchestrator session, almost all of it firehose-when-a-glance-was-wanted. Compact defaults restore the lean-monitoring doctrine: a narrow status check must be cheap. The full payloads remain one flag away when actually needed.
533
-
534
- ### Token-efficiency-boot-guardrail pack (interim) — CLI-prohibitions RETIRE at host-upgrade
535
-
536
- The interim `token-efficiency-boot-guardrail` pack (the CLI-command prohibitions on `rig queue list` unfiltered, `rig ps --nodes --json` unfiltered, `rig restore-check`, `rig context`, `rig whoami --json`) is a host-version workaround for the bloated defaults this release closes. **The CLI-command-prohibitions half retires when 0.4.0 lands on the host.** The pack's bounded-local-search rule + scope / over-flag discipline GRADUATE to a standing convention (`conventions/bounded-local-search-and-flag-scope`) and continue to apply host-independently.
537
-
538
- ### `rig scope mission|slice progress` — deterministic progress updates (slice 33)
539
-
540
- ```bash
541
- rig scope mission progress <mission> --status <state> --milestone <text>
542
- rig scope slice progress <slice-path> --status <state> --note <text>
543
- ```
544
-
545
- Replaces hand-editing `PROGRESS.md` with markdown. Writes the canonical structure the OpenRig PROGRESS UI page reads. `rig scope mission create` + `rig scope slice create` now scaffold `PROGRESS.md` automatically per `conventions/scope-and-versioning/README.md`.
546
-
547
- ### `rig scope mission|slice stage / verified / reconcile` — deterministic maturity vocabulary (slice 35)
548
-
549
- ```bash
550
- rig scope slice stage <slice> <new-stage> # wip / provisional / established / canonical / superseded / retired
551
- rig scope slice stage <slice> superseded --successor <id> # superseded REQUIRES --successor (rejected otherwise)
552
- rig scope mission stage <mission> <new-stage> # same enum + rules at mission tier
553
-
554
- rig scope slice verified <slice> --against "<source>" # stamp `verified: <today> against <source>`; --against MANDATORY
555
- rig scope mission verified <mission> --against "<source>"
556
-
557
- rig scope slice reconcile <slice> # idempotent repair: backfill PROGRESS.md, conform id/stage/verified, repair ghosts
558
- rig scope mission reconcile <mission> # mission-tier idempotent repair
559
-
560
- rig scope slice show <slice> # derives read-time effective-reliability from (stage × verified)
561
- # — stale-`verified` `canonical` reported as effectively `provisional`
562
- ```
563
-
564
- Composes with slice 33's `progress` + scaffolding to make `rig scope` the **deterministic enforcer** of `conventions/scope-and-versioning` §1 (dot-IDs) + §2 (maturity vocabulary). Agents update `stage` / `verified` / `id` through commands rather than hand-editing markdown and drifting. The `--against` MANDATORY rule on `verified` is the anti-stale keystone: bare timestamps are rejected because a bare timestamp is exactly what lets stale trackers lie while looking fresh. **STOP hand-editing the `stage` / `verified` / `id` fields in scope frontmatter; use the new verbs.** Existing missions / slices with `id:null` ghosts or missing `PROGRESS.md` are repaired idempotently via `reconcile`.
565
-
566
- ### The SDLC control plane — convention sections, the two locks, `rig proof` (v0.4.4)
567
-
568
- The Living Notes UI is a plain projection of well-formed on-disk markdown. The conventions live in ONE shipped document — **`docs/reference/sdlc-conventions.md`** (in the CLI package) — and the operating procedure is the **`mission-slice-sop`** skill. The command surface:
569
-
570
- ```bash
571
- rig scope slice create <mission> <slug> [--template <kind>] # scaffolds ## Intent / ## Mini-requirements / ## Proof contract
572
- # + proof/ + PROOF.md + IMPLEMENTATION-PRD.md — EVERY template kind
573
-
574
- rig scope slice approve <slice> --scope spec # PLAN-LOCK: "the PRD matches my intent; this set gets built"
575
- rig scope slice approve <slice> --scope delivery # PROOF-LOCK: the terminal sign-off (default scope; fires the freeze)
576
-
577
- rig proof add <slice> --artifact-type qa --verdict PASS \
578
- --candidate-sha <tip> --money-evidence "<one line>" \
579
- --evidences "1,3" --media "walk.webm" \
580
- --self-check "<looked at it>" # C1 proof drop into proof/; --evidences joins the drop to its
581
- # proof-contract items and --media names the curated proof/-relative
582
- # media it stands behind (what the DELIVERED section pairs + renders)
583
-
584
- rig scope audit <mission> # deterministic backstop — flags missing sections / malformed
585
- # proof contract / invalid C1 headers; ADVISORY, never blocks
586
- ```
587
-
588
- The flow: intent → mini-requirements + proof contract (→ mockups for UI slices) → plan-lock → build the locked set → QA visual compare → `rig proof` drops → proof-lock. Approval is freeze/sign-off, **never** proven-green — proven-green requires recorded C1 verdicts.
589
-
590
- ### `rig skill audit` — skill cascade provenance (slice 10)
591
-
592
- ```bash
593
- rig skill audit # human report of findings
594
- rig skill audit --json # structured findings
595
- rig skill audit --severity warn # stale + mirror-drift only
596
- rig skill audit --rig <name> # narrow to embedded skill copies for one rig
597
- ```
598
-
599
- Read-only audit of the skill cascade. Detects `missing` / `stale` / `self-referential` / `invalid-date` / `mirror-drift` across the canonical `openrig-work/skills/` → product mirror → hub cwd → installed plugin chain. Findings route back to the lifecycle for shaped propagation runs. **False-green prevention**: when audit evidence is unavailable, the CLI emits `unable-to-audit` with exit code `2` rather than reporting `clean`.
600
-
601
- ### `rig seat clear-attention` — extended to derived projection staleness (slice 16)
602
-
603
- v0.3.4 shipped `clear-attention` gating on `session.startupStatus` only. v0.4.0 extends the verb to also reach **restoreOutcome-derived** attention (seat is `startupStatus=ready` + `sessionStatus=running` but carries `restoreOutcome=failed` / `continuityOutcome=failed`). Same evidence-gated audit row applies; the `--reason <text>` operator-attestation override carries the runtime / cwd-uncertainty disclosure honestly.
604
-
605
- ## Core Loop
606
-
607
- Most work in OpenRig reduces to this loop:
608
- - recover identity: `rig whoami` (compact default; add `--full` only when you need the heavy payload)
609
- - inspect inventory: `rig ps --nodes` (compact default; add `--full` only when you need the firehose)
610
- - read context: `rig transcript ...`, `rig ask ...`, `rig chatroom history ...`
611
- - act: `rig send`, `rig capture`, `rig broadcast`, lifecycle commands
612
-
613
- ## Agent-Managed Apps
614
-
615
- An agent-managed app is a deployable OpenRig unit made of:
616
- - the software or service
617
- - one specialist agent dedicated to that software
618
-
619
- Treat the specialist as the domain delegate for that app.
620
- The current canonical example is:
621
- - rig: `secrets-manager`
622
- - pod: `vault`
623
- - member: `specialist`
624
- - logical ID: `vault.specialist`
625
- - session: `vault-specialist@secrets-manager`
626
-
627
- Typical operator loop:
628
-
629
- ```bash
630
- rig up secrets-manager --cwd /path/to/project
631
- rig ps --nodes --rig secrets-manager --json
632
- rig send vault-specialist@secrets-manager "Check Vault health and report back." --verify
633
- rig env status secrets-manager
634
- rig env logs secrets-manager
635
- ```
636
-
637
- Cross-rig communication is valid when the target session resolves uniquely.
638
- Example:
639
-
640
- ```bash
641
- rig send vault-specialist@secrets-manager "Read secret/data/dogfood and report the value." --verify
642
- ```
643
-
644
- Use the specialist instead of teaching every peer the same app-specific toolchain.
645
- For Vault, ask `vault.specialist` to do secrets-domain work rather than improvising curl or Vault CLI usage in unrelated agents.
646
-
647
- ## Identity and Recovery
648
-
649
- Start here after launch, compaction, or confusion:
650
-
651
- ```bash
652
- rig whoami --json
653
- ```
654
-
655
- What it gives you today:
656
- - identity: rig, logical ID, pod/member, session name, runtime
657
- - peers and directional edges
658
- - transcript info
659
- - `contextUsage` when available
660
-
661
- Flags:
662
- ```bash
663
- rig whoami --session <name>
664
- rig whoami --node-id <id>
665
- ```
666
-
667
- If the daemon is unreachable but identity can still be inferred, `--json` may return a partial result instead of crashing.
668
-
669
- `WhoamiResult` (v0.3.3+) carries a required `peersNote` field with three pointers
670
- the agent can use to navigate the rest of the rig from a cold start. The
671
- human-formatted CLI output preserves the literal `Peers:` line prefix verbatim
672
- (parser/test compatibility) and surfaces the clarifier in-band beneath it; the
673
- JSON form exposes `peersNote` directly for programmatic consumers.
674
-
675
- ## Inventory and Monitoring
676
-
677
- ```bash
678
- rig ps
679
- rig ps --json
680
- rig ps --nodes
681
- rig ps --nodes --rig <name> --json
682
- rig ps --nodes -A --json
683
- rig ps --nodes -A --full --json
684
- ```
685
-
686
- Use `rig ps --nodes --rig <name> --json` for one rig's node inventory, or `rig ps --nodes -A --json` for fleet-wide projected node inventory. Use `--full` only when a downstream consumer truly needs complete per-node records. The node inventory surface carries:
687
- - session name
688
- - runtime
689
- - session/startup status
690
- - restore outcome
691
- - attach/resume commands
692
- - latest error
693
-
694
- Other health surfaces:
695
-
696
- ```bash
697
- rig status
698
- rig daemon status
699
- rig config
700
- rig preflight
701
- rig doctor
702
- rig env status <rig>
703
- rig env logs <rig>
704
- rig env down <rig>
705
- ```
706
-
707
- ## Transcript and Communication
708
-
709
- ### Transcript access
710
-
711
- ```bash
712
- rig transcript <session> --tail 100
713
- rig transcript <session> --grep "pattern"
714
- rig transcript <session> --json
715
- ```
716
-
717
- ### Send to one session
718
-
719
- ```bash
720
- rig send <session> "message"
721
- rig send <session> "message" --verify
722
- rig send <session> "message" --force
723
- rig send <session> "message" --json
724
- ```
725
-
726
- Use `--verify` when you want delivery evidence. Use `--force` only when you intentionally want to bypass activity-risk checks.
727
-
728
- As of v0.3.3 (slice 17), content beginning with `--` or `-` is safe:
729
- `rig send <session> "content starting with -- or - is now safe"` delivers
730
- literally. The daemon's `send_text` path carries an explicit `--`
731
- end-of-options sentinel so tmux no longer parses dash-prefixed content
732
- as its own flags. The CLI surface itself is unchanged. For multi-line
733
- or large bodies handed off as durable work, use
734
- `rig queue create --body-file <path>` (`-` for stdin) — that's the
735
- queue-side surface, not `rig send`.
736
-
737
- `--verify` delivery outcomes (v0.3.3+):
738
- - `delivered` — text + Enter both succeeded and capture re-confirmed the body landed.
739
- - `rendered-unconfirmed` — text + Enter both succeeded but capture could not re-confirm the body (TUI redraw race or scroll). The message landed; the post-send re-check could not prove it. Treat as landed-but-unconfirmable, NOT failure.
740
- - `failed` — the send transport itself failed.
741
-
742
- The legacy `Verified: yes/no` line is preserved verbatim (parser/test
743
- compatibility). A new `Delivery: <outcome>` line carries the named outcome
744
- above.
745
-
746
- Observed operator nuance for `--verify`:
747
- - `Sent to ...` + `Verified: yes` (`Delivery: delivered`) = strong positive delivery evidence.
748
- - `Sent to ...` + `Verified: no` + `Delivery: rendered-unconfirmed` = the message landed; capture could not re-prove it. Don't blind-retry — check reply / `rig capture` / transcript before sending again.
749
- - `Sent to ...` + `Verified: no` + `Delivery: failed` = send-transport failure.
750
- - no `Sent to ...` line or a hard error = send failure.
751
-
752
- When you get `Verified: no`, do not immediately retry blindly. First check one of:
753
- - a direct reply from the target
754
- - `rig capture <session>`
755
- - transcript evidence
756
- - queue/outbox state if the message asked for a durable handoff
757
-
758
- ### Capture terminal output
759
-
760
- ```bash
761
- rig capture <session>
762
- rig capture <session> --lines 50
763
- rig capture --rig <name>
764
- rig capture --pod <name> --rig <name>
765
- rig capture --rig <name> --json
766
- ```
767
-
768
- ### Broadcast
769
-
770
- ```bash
771
- rig broadcast --rig <name> "message"
772
- rig broadcast --pod <name> "message"
773
- rig broadcast "message"
774
- rig broadcast --rig <name> "message" --json
775
- ```
776
-
777
- Without `--rig` or `--pod`, broadcast targets all running sessions.
778
-
779
- ### Chatroom
780
-
781
- ```bash
782
- rig chatroom send <rig> <message> [--sender <name>]
783
- rig chatroom history <rig> [--topic <name>] [--after <id>] [--since <ts>] [--sender <name>] [--limit <n>] [--json]
784
- rig chatroom wait <rig> [--after <id>] [--topic <name>] [--sender <name>] [--timeout <seconds>] [--json]
785
- rig chatroom clear <rig>
786
- rig chatroom topic <rig> <topic-name> [--body <text>] [--sender <name>]
787
- rig chatroom watch <rig> [--tmux]
788
- ```
789
-
790
- **Key commands:**
791
- - `send` — post a message
792
- - `history` — retrieve with composable filters (sender, since, after, topic)
793
- - `wait` — block until new matching messages arrive (polls history, times out honestly)
794
- - `clear` — delete all messages for the rig (destructive, rig-scoped)
795
- - `topic` — set a topic marker
796
- - `watch` — SSE or tmux-based live stream
797
-
798
- **Roundtable protocol:**
799
- 1. Inspect old room: `rig chatroom history my-rig --limit 5`
800
- 2. Save if needed: `rig chatroom history my-rig --json > /tmp/old-room.json`
801
- 3. Clear if needed: `rig chatroom clear my-rig`
802
- 4. Set topic: `rig chatroom topic my-rig "ROUND START"`
803
- 5. Post: `rig chatroom send my-rig "position..." --sender <session>`
804
- 6. Monitor: `rig chatroom wait my-rig --timeout 120`
805
- 7. Close: `rig chatroom topic my-rig "ROUND CLOSED"`
806
-
807
- See `docs/planning/roadmaps/chatroom-roundtable-protocol.md` for the full protocol.
808
-
809
- ### `rig ask`
810
-
811
- ```bash
812
- rig ask <rig> "question"
813
- rig ask <rig> "question" --json
814
- ```
815
-
816
- Current shipped behavior:
817
- - queries the daemon for evidence
818
- - returns rig summary
819
- - returns transcript excerpts
820
- - may return chat excerpts
821
- - returns insufficiency state and optional guidance
822
-
823
- This is an evidence/context command. It is not a hidden second-LLM call.
824
-
825
- ## Lifecycle
826
-
827
- ### Bring a rig up
828
-
829
- ```bash
830
- rig up <source>
831
- rig up <source> --plan
832
- rig up <source> --yes
833
- rig up <source> --cwd /path/to/project
834
- rig up <source> --existing
835
- rig up <source> --fresh <seat...>
836
- rig up <source> --json
837
- ```
838
-
839
- `<source>` can be:
840
- - a rig spec path
841
- - a `.rigbundle` path
842
- - a bare name
843
-
844
- Bare names are special:
845
- - if they match a library spec, `rig up` launches from the spec library
846
- - if they do not match a library spec, `rig up` treats the name as an existing-rig restore/power-on target
847
- - if both exist, `rig up` fails loudly on ambiguity
848
-
849
- Resume-original-by-default (v0.3.4+):
850
- - For an existing rig, `rig up <name>` resumes each seat from its original session/snapshot by default (operation A). Seats that successfully resume report `resumed`.
851
- - `--fresh <seat...>` is the per-seat opt-in for deliberate fresh-prime (operation B). Named seats are reported as `fresh-primed`.
852
- - `--existing` forces existing-rig restore semantics on a bare name, bypassing library-spec resolution. Useful when a rig name collides with a library spec name.
853
- - Example: `rig up --existing my-rig --fresh dev-impl` — resume everything in `my-rig` except `dev-impl`, which is freshly primed.
854
- - Seats with no resumable session land in `awaiting-decision` (zero-session honest state, NOT `failed`); see the five-term restore vocabulary in "Recovery and Resilience" below.
855
-
856
- `--plan` (v0.3.4+):
857
- - `rig up <source> --plan` produces a read-only restore plan preview. It surfaces per-seat resume/fresh-prime intent and any awaiting-decision seats without mutating state. Honest async timeout: a stuck plan reports the timeout rather than hanging silently.
858
-
859
- Current behavior notes:
860
- - `--target <root>` is only for `.rigbundle` / package installation. It does not change agent cwd.
861
- - `rig up --cwd` is shipped. `rig up --cwd <path>` sends a per-run cwd override for all members in that launch.
862
- - `local:` `agent_ref` values resolve relative to the rig spec directory, not your shell cwd.
863
- - if you copy a built-in spec elsewhere, keep its `agents/` tree beside the YAML or rewrite those refs to `path:/absolute/path`
864
- - `rig specs add <directory>` installs a full spec tree when the directory contains `rig.yaml` or `agent.yaml`.
865
-
866
- Legacy/spec-specific surfaces still ship too:
867
-
868
- ```bash
869
- rig bootstrap <spec> [--plan] [--yes] [--json]
870
- rig requirements <spec> [--json]
871
- ```
872
-
873
- ### Tear a rig down
874
-
875
- ```bash
876
- rig down <rig> # <rig> = rig name or id (active rig)
877
- rig down <rig> --snapshot
878
- rig down <rig> --delete
879
- rig down <rig> --force
880
- rig down <rig> --json
881
- ```
882
-
883
- If `--snapshot` succeeds, human output includes the restore hint.
884
-
885
- ### Archive a stopped rig (recoverable) — v0.3.3+
886
-
887
- ```bash
888
- rig archive <rig> [--json]
889
- rig unarchive <rig> [--json]
890
- ```
891
-
892
- `rig archive` marks a stopped rig as archived (sets `archivedAt`) without
893
- discarding it. The rig is preserved for later restoration via `rig unarchive`,
894
- which clears `archivedAt` and returns the rig to the active set.
895
-
896
- Archive vs delete:
897
- - `rig down --delete` — permanent removal; not recoverable.
898
- - `rig archive` — recoverable; the rig is hidden from the default active view but its record + snapshots are preserved.
899
-
900
- Visibility in `rig ps`:
901
- - `rig ps` — active rigs only (default).
902
- - `rig ps --include-archived` — includes archived rigs, marked with `*`.
903
-
904
- SSE events `rig.archived` / `rig.unarchived` drive Project / dashboard updates;
905
- consumers that depend on the rig list should subscribe rather than poll.
906
-
907
- ### Environment services
908
-
909
- ```bash
910
- rig env status <rig>
911
- rig env logs <rig> [service]
912
- rig env down <rig>
913
- ```
914
-
915
- Use these for service-backed rigs and agent-managed apps.
916
- For `secrets-manager`, these are the fastest CLI surfaces for:
917
- - confirming whether Vault is healthy
918
- - reading Vault container logs
919
- - stopping the Vault env without tearing down the specialist session first
920
-
921
- ### Release management without killing live claimed sessions
922
-
923
- ```bash
924
- rig release <rigId>
925
- rig release <rigId> --delete
926
- rig release <rigId> --json
927
- ```
928
-
929
- Use `rig release` for adopted/claimed-session rigs when you want OpenRig to stop managing the rig but leave the tmux sessions alive.
930
- This is the safe recovery/reset surface for the "sessions still exist, management is broken or stale" case.
931
- If the rig contains OpenRig-launched nodes, `rig release` refuses loudly instead of pretending the mixed rig is safe to detach.
932
-
933
- ### Snapshots and restore
934
-
935
- ```bash
936
- rig snapshot <rigId>
937
- rig snapshot list <rigId>
938
- rig restore <snapshotId> --rig <rigId>
939
- ```
940
-
941
- `rig restore` requires `--rig <rigId>`.
942
-
943
- Claude Code autonomy note:
944
- - unattended `rig whoami` on boot may require the local permission allow list to include `Bash(rig:*)`
945
-
946
- ### Import/export and bundles
947
-
948
- ```bash
949
- rig export <rigId> -o rig.yaml
950
- rig import <path> [--instantiate] [--materialize-only] [--preflight] [--target-rig <rigId>] [--rig-root <root>]
951
- rig bundle create <spec> -o out.rigbundle
952
- rig bundle inspect <bundle>
953
- rig bundle install <bundle> [--plan] [--yes] [--target <root>] [--json]
954
- ```
955
-
956
- ### Legacy package surface
957
-
958
- This still ships, but is explicitly marked legacy:
959
-
960
- ```bash
961
- rig package validate <path>
962
- rig package plan <path> [--target <dir>] [--runtime <runtime>] [--role <name>]
963
- rig package install <path> [--target <dir>] [--runtime <runtime>] [--role <name>] [--allow-merge]
964
- rig package list
965
- rig package rollback <installId>
966
- ```
967
-
968
- ## Discovery and Topology Mutation
969
-
970
- ### Discover unmanaged tmux sessions
971
-
972
- ```bash
973
- rig discover
974
- rig discover --json
975
- rig discover --draft
976
- ```
977
-
978
- ### Bind a discovered session
979
-
980
- ```bash
981
- rig bind <discoveredId> --rig <rigId> --node <logicalId>
982
- rig bind <discoveredId> --rig <rigId> --pod <namespace> --member <name>
983
- ```
984
-
985
- There is no shipped top-level `rig claim` command.
986
- The current adoption surface is `discover`, `bind`, `adopt`, and `unclaim`.
987
-
988
- ### Self-attach the current shell or agent
989
-
990
- ```bash
991
- rig attach --self --rig <rigId> --node <logicalId>
992
- rig attach --self --rig <rigId> --node <logicalId> --print-env
993
- rig attach --self --rig <rigId> --pod <namespace> --member <name> --runtime <runtime>
994
- ```
995
-
996
- Use `rig attach --self` when the current agent should attach itself directly instead of going through `discover` + `bind`.
997
-
998
- Current proven behavior:
999
- - inside `tmux`: attaches as a normal tmux-backed node, preserving inbound `rig send` / `rig capture`
1000
- - outside `tmux`: attaches as `external_cli`
1001
- - `--print-env` prints the `OPENRIG_NODE_ID` and `OPENRIG_SESSION_NAME` exports for the current shell
1002
-
1003
- Recommended flow:
1004
-
1005
- ```bash
1006
- rig attach --self --rig <rigId> --node <logicalId> --print-env > /tmp/openrig-self-attach.env
1007
- . /tmp/openrig-self-attach.env
1008
- rig whoami --json
1009
- ```
1010
-
1011
- Notes:
1012
- - for tmux-backed self-attach, `rig whoami --json` is the right verification
1013
- - for raw/external self-attach, `rig ps --nodes --rig <rigId-or-name> --json` is currently the more reliable verification surface
1014
- - if the current shell is outside tmux, pass `--display-name <name>` when you want a stable human session label recorded
1015
-
1016
- ### Adopt a topology and bind live sessions
1017
-
1018
- ```bash
1019
- rig adopt <path> --bind <logicalId=tmuxSessionOrDiscoveryId>
1020
- rig adopt <path> --bind <logicalId=...> --bind <logicalId=...> --json
1021
- rig adopt <path> --bindings-file <bindings.yaml>
1022
- rig adopt <path> --bind <logicalId=...> --target-rig <rigId> --rig-root <root>
1023
- ```
1024
-
1025
- Use `rig adopt` when the sessions already exist and you want OpenRig to start managing them.
1026
-
1027
- A bindings file is the durable map from authored logical IDs to live sessions. Shape:
1028
-
1029
- ```yaml
1030
- bindings:
1031
- dev1.impl2: dev1.impl2@rigged-buildout
1032
- dev1.qa: dev1.qa@rigged-buildout
1033
- ```
1034
-
1035
- Spec + bindings is the proven recovery pair for adopted rigs.
1036
- Spec gives OpenRig the intended topology. Bindings tells OpenRig which discovered live session belongs in each logical node.
1037
-
1038
- ### Proven adopted-rig recovery workflow
1039
-
1040
- This workflow is proven for the case where the external tmux sessions are still alive:
1041
-
1042
- ```bash
1043
- rig release <rigId> --delete
1044
- rig discover --json
1045
- rig adopt <spec.yaml> --bindings-file <bindings.yaml>
1046
- ```
1047
-
1048
- What this does:
1049
- - removes OpenRig management without killing the sessions
1050
- - re-discovers those same sessions as unmanaged
1051
- - re-attaches them to the topology defined by the spec + bindings
1052
-
1053
- Important limits:
1054
- - this is for `sessions still alive`
1055
- - spec alone is not enough for adopted rigs; you also need bindings
1056
- - this does not yet mean OpenRig can recreate dead external sessions from nothing
1057
-
1058
- ### Add unmanaged pods into an existing rig
1059
-
1060
- This is the proven workflow when a rig is already managed, but a new pod was created outside OpenRig and you want to add it later:
1061
-
1062
- ```bash
1063
- rig adopt <pod-fragment.yaml> --bindings-file <pod.bindings.yaml> --target-rig <rigId>
1064
- ```
1065
-
1066
- Use this when:
1067
- - the target rig already exists
1068
- - the new sessions are live and visible in `rig discover --json`
1069
- - you want additive topology growth, not a full rebuild
1070
-
1071
- What to prepare:
1072
- - a pod fragment spec with only the new pod
1073
- - a bindings file mapping the new logical IDs to the live session names
1074
-
1075
- Verification loop:
1076
-
1077
- ```bash
1078
- rig discover --json
1079
- rig adopt <fragment.yaml> --bindings-file <bindings.yaml> --target-rig <rigId>
1080
- rig ps --nodes --rig <target-rig-name> --json
1081
- rig export <rigId> -o rig.yaml
1082
- ```
1083
-
1084
- Success looks like:
1085
- - the new sessions stop appearing in `rig discover`
1086
- - the new logical IDs appear in `rig ps --nodes --rig <target-rig-name> --json`
1087
- - `rig export` includes the new pod
1088
-
1089
- ### Mixed-origin rigs are allowed
1090
-
1091
- One rig can contain both:
1092
- - adopted nodes bound from already-running sessions
1093
- - OpenRig-launched nodes created later with `rig expand` / `rig launch`
1094
-
1095
- Current safety rule:
1096
- - `rig release` is for claimed/adopted-only rigs
1097
- - if a rig contains launched nodes, `rig release` fails with `contains_launched_nodes`
1098
-
1099
- ### Manager-assisted recovery
1100
-
1101
- The proven operator pattern is:
1102
- - keep one OpenRig manager session outside the rig it manages
1103
- - address the target by rig name, not cached rig ID
1104
- - resolve the current owner from fresh `rig ps --nodes -A --json`
1105
- - send the manager the spec path, bindings path, and verification steps with `rig send`
1106
-
1107
- This lets ordinary agents ask the manager for OpenRig help instead of every agent needing to be an OpenRig expert.
1108
-
1109
- ### Add/remove running topology parts
1110
-
1111
- ```bash
1112
- rig expand <rig-id> <pod-fragment-path> [--rig-root <path>] [--json]
1113
- rig launch <rigId> <nodeRef> [--json]
1114
- rig launch <rigId> --seats <a,b,c> [--hold-reason <text>] [--json]
1115
- rig remove <rigId> <nodeRef> [--json]
1116
- rig shrink <rigId> <podRef> [--json]
1117
- rig unclaim <sessionRef> [--json]
1118
- ```
1119
-
1120
- Node-granular managed partial restore (v0.3.4+):
1121
- - `rig launch <rigId> <nodeRef>` relaunches a single seat by logical id or node id through orchestration.
1122
- - `rig launch <rigId> --seats <a,b,c>` relaunches a comma-separated subset of seats.
1123
- - `--hold-reason <text>` records a reason for holding non-target seats during the partial launch.
1124
- - This is a SUPPORTED managed path. The prior `pod_aware_launch_unsupported` dead-end is retired; pod-aware narrow launch now goes through this surface rather than ad-hoc rebuilds.
1125
-
1126
- ### Add a member to an existing pod — v0.3.3+
1127
-
1128
- ```bash
1129
- rig add <rig> <member-fragment-path> [--json]
1130
- rig add-member <rig> <member-fragment-path> [--json]
1131
- ```
1132
-
1133
- `rig add` (alias `rig add-member`) is the top-level verb for the `add_member`
1134
- converge op. It adds a single member to an existing pod from a YAML/JSON member
1135
- fragment file. The fragment must declare the target pod; the daemon resolves
1136
- the pod by that declared identity, validates the member, runs preflight, and
1137
- launches the member in place.
1138
-
1139
- HTTP outcomes:
1140
- - `201` — member added; per-node launch state included in the response.
1141
- - `400` — `validation_failed` or `preflight_failed` (the fragment or its launch posture is rejected before any state change).
1142
- - `409` — `member_conflict` (a member with that identity already exists in the pod).
1143
-
1144
- Use `rig add` when you want additive growth inside a pod without re-running
1145
- the full `rig expand` pod-fragment path or rebuilding the rig.
1146
-
1147
- ## Specs and Validation
1148
-
1149
- ### Validate specs
1150
-
1151
- ```bash
1152
- rig spec validate <path> [--json]
1153
- rig spec preflight <path> [--rig-root <root>] [--json]
1154
- rig agent validate <path> [--json]
1155
- ```
1156
-
1157
- ### Spec library
1158
-
1159
- ```bash
1160
- rig specs ls [--kind <kind>] [--json]
1161
- rig specs show <name-or-id> [--json]
1162
- rig specs preview <name-or-id> [--json]
1163
- rig specs add <yaml-or-directory> [--json]
1164
- rig specs sync [--json]
1165
- rig specs remove <name-or-id> [--json]
1166
- rig specs rename <name-or-id> <new-name> [--json]
1167
- ```
1168
-
1169
- ## MCP
1170
-
1171
- ```bash
1172
- rig mcp serve [--port <port>]
1173
- ```
1174
-
1175
- Current shipped MCP tools:
1176
- - `rig_up`
1177
- - `rig_down`
1178
- - `rig_ps`
1179
- - `rig_status`
1180
- - `rig_snapshot_create`
1181
- - `rig_snapshot_list`
1182
- - `rig_restore`
1183
- - `rig_discover`
1184
- - `rig_bind`
1185
- - `rig_bundle_inspect`
1186
- - `rig_agent_validate`
1187
- - `rig_rig_validate`
1188
- - `rig_rig_nodes`
1189
- - `rig_send`
1190
- - `rig_capture`
1191
- - `rig_chatroom_send`
1192
- - `rig_chatroom_watch`
1193
-
1194
- ## Troubleshooting and Weird States
1195
-
1196
- When the CLI behaves strangely, use the smallest truthful check first:
1197
-
1198
- ```bash
1199
- rig whoami --json
1200
- rig daemon status
1201
- rig ps --nodes
1202
- ```
1203
-
1204
- Specific operator rules:
1205
- - `Sent to ...` + `Verified: no` is ambiguous delivery, not automatic failure. Check reply, `rig capture`, transcript evidence, or queue/outbox state before retrying.
1206
- - partial `rig whoami --json` can happen when identity is still inferable but the daemon-backed path is degraded.
1207
- - the unified-exec-process warning is a host/tooling-layer signal, not automatic proof that the OpenRig topology is unhealthy.
1208
-
1209
- If you hit the unified-exec warning, inspect for stale one-shot helpers before touching live seats:
1210
-
1211
- ```bash
1212
- ps -axo pid,ppid,command | rg 'tmux send-keys|rig queue create|tmux attach|codex|claude'
1213
- ```
1214
-
1215
- Safe cleanup target:
1216
- - orphaned one-shot wrappers like `tmux send-keys ...`
1217
-
1218
- Do not mass-kill:
1219
- - `tmux attach ...`
1220
- - `codex ...`
1221
- - `claude ...`
1222
-
1223
- For deeper host/runtime triage, use the companion `openrig-operator` skill if it is available in your seat.
1224
-
1225
- ## JSON and Error Posture
1226
-
1227
- Design assumptions that hold in the shipped CLI:
1228
- - many operator commands support `--json`
1229
- - error messages are intended to say what happened, why it matters, and what to do next
1230
- - daemon-backed commands fail loudly when the daemon is stopped or unhealthy
1231
- - restore failure is not something you should silently reinterpret as success
1232
-
1233
- ## After-Compaction Recovery Checklist
1234
-
1235
- 1. `rig whoami --json`
1236
- 2. `rig transcript <your-session> --tail 100`
1237
- 3. `rig ps --nodes`
1238
- 4. `rig chatroom history <rig> --limit 50`
1239
-
1240
- ## Commands That Do Not Exist
1241
-
1242
- Do not assume these exist unless the shipped help starts listing them:
1243
- - `rig claim`
1244
- - `rig blame`
1245
- - `rig replay`