@openrig/cli 0.6.6 → 0.6.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 (637) hide show
  1. package/README.md +97 -28
  2. package/daemon/assets/claude-team-permissions.cjs +262 -0
  3. package/daemon/assets/onboarding/02-self-and-competent-action.md +20 -13
  4. package/daemon/assets/plugins/openrig-core/.claude-plugin/plugin.json +1 -1
  5. package/daemon/assets/plugins/openrig-core/.codex-plugin/plugin.json +1 -1
  6. package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus-health.cjs +41 -0
  7. package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus.cjs +69 -12
  8. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/SKILL.md +13 -2
  9. package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/precompact-hook.mjs +4 -0
  10. package/daemon/assets/plugins/openrig-core/skills/messaging-the-human/SKILL.md +6 -0
  11. package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +1 -1
  12. package/daemon/assets/plugins/openrig-core/skills/refocusing/SKILL.md +31 -4
  13. package/daemon/assets/plugins/openrig-core/skills/refocusing/scripts/trace-to-root.py +24 -13
  14. package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/SKILL.md +3 -0
  15. package/daemon/assets/plugins/openrig-core/skills/seat-continuity-and-handover/SKILL.md +42 -0
  16. package/daemon/assets/plugins/openrig-core/skills/session-compaction-and-restore/SKILL.md +6 -0
  17. package/daemon/assets/skills/rigs/SKILL.md +133 -0
  18. package/daemon/context-packs/help/help.md +48 -19
  19. package/daemon/context-packs/help/manifest.yaml +1 -1
  20. package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
  21. package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +239 -43
  22. package/daemon/context-packs/reference/getting-started.md +356 -212
  23. package/daemon/context-packs/reference/instance-layout.md +5 -0
  24. package/daemon/context-packs/reference/manifest.yaml +4 -1
  25. package/daemon/context-packs/reference/rig-spec.md +48 -20
  26. package/daemon/context-packs/reference/whats-new.md +96 -0
  27. package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
  28. package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
  29. package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
  30. package/daemon/context-packs/skills/claude-compaction-restore/SKILL.md +13 -2
  31. package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
  32. package/daemon/context-packs/skills/claude-compaction-restore/scripts/precompact-hook.mjs +4 -0
  33. package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
  34. package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
  35. package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
  36. package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
  37. package/daemon/context-packs/skills/core/messaging-the-human/SKILL.md +6 -0
  38. package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
  39. package/daemon/context-packs/skills/core/openrig-architect/SKILL.md +3 -0
  40. package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
  41. package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
  42. package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
  43. package/daemon/context-packs/skills/core/openrig-skills/SKILL.md +1 -1
  44. package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
  45. package/daemon/context-packs/skills/core/openrig-software-factory/SKILL.md +19 -12
  46. package/daemon/context-packs/skills/core/openrig-software-factory/manifest.yaml +1 -1
  47. package/daemon/context-packs/skills/core/openrig-software-factory/references/worked-example.md +17 -16
  48. package/daemon/context-packs/skills/core/openrig-upgrade/SKILL.md +2 -0
  49. package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
  50. package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
  51. package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
  52. package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
  53. package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
  54. package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
  55. package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
  56. package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
  57. package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
  58. package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
  59. package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
  60. package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
  61. package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
  62. package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
  63. package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
  64. package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
  65. package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
  66. package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
  67. package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
  68. package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
  69. package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
  70. package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
  71. package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
  72. package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
  73. package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
  74. package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
  75. package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
  76. package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
  77. package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
  78. package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
  79. package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
  80. package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
  81. package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
  82. package/daemon/context-packs/skills/refocusing/SKILL.md +31 -4
  83. package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
  84. package/daemon/context-packs/skills/refocusing/scripts/trace-to-root.py +24 -13
  85. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/SKILL.md +3 -0
  86. package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
  87. package/daemon/context-packs/skills/seat-continuity-and-handover/SKILL.md +42 -0
  88. package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
  89. package/daemon/context-packs/skills/session-compaction-and-restore/SKILL.md +6 -0
  90. package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
  91. package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
  92. package/daemon/context-packs/world-example/manifest.yaml +1 -1
  93. package/daemon/context-packs/world-public/manifest.yaml +1 -1
  94. package/daemon/dist/adapters/claude-code-adapter.d.ts +1 -1
  95. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  96. package/daemon/dist/adapters/claude-code-adapter.js +23 -13
  97. package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  98. package/daemon/dist/adapters/codex-resume.d.ts.map +1 -1
  99. package/daemon/dist/adapters/codex-resume.js +17 -0
  100. package/daemon/dist/adapters/codex-resume.js.map +1 -1
  101. package/daemon/dist/adapters/codex-runtime-adapter.js +2 -2
  102. package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
  103. package/daemon/dist/adapters/kernel-authority.d.ts.map +1 -1
  104. package/daemon/dist/adapters/kernel-authority.js +29 -11
  105. package/daemon/dist/adapters/kernel-authority.js.map +1 -1
  106. package/daemon/dist/adapters/pi-readiness.d.ts +15 -0
  107. package/daemon/dist/adapters/pi-readiness.d.ts.map +1 -0
  108. package/daemon/dist/adapters/pi-readiness.js +90 -0
  109. package/daemon/dist/adapters/pi-readiness.js.map +1 -0
  110. package/daemon/dist/adapters/pi-runner-protocol.d.ts.map +1 -1
  111. package/daemon/dist/adapters/pi-runner-protocol.js +1 -0
  112. package/daemon/dist/adapters/pi-runner-protocol.js.map +1 -1
  113. package/daemon/dist/adapters/pi-runner.d.ts.map +1 -1
  114. package/daemon/dist/adapters/pi-runner.js +13 -2
  115. package/daemon/dist/adapters/pi-runner.js.map +1 -1
  116. package/daemon/dist/adapters/tmux.d.ts.map +1 -1
  117. package/daemon/dist/adapters/tmux.js +9 -6
  118. package/daemon/dist/adapters/tmux.js.map +1 -1
  119. package/daemon/dist/build-info.js +3 -3
  120. package/daemon/dist/db/all-migrations.d.ts.map +1 -1
  121. package/daemon/dist/db/all-migrations.js +4 -0
  122. package/daemon/dist/db/all-migrations.js.map +1 -1
  123. package/daemon/dist/db/migrations/096_rig_install_root.d.ts +3 -0
  124. package/daemon/dist/db/migrations/096_rig_install_root.d.ts.map +1 -0
  125. package/daemon/dist/db/migrations/096_rig_install_root.js +5 -0
  126. package/daemon/dist/db/migrations/096_rig_install_root.js.map +1 -0
  127. package/daemon/dist/db/migrations/097_thread_part_map.d.ts +3 -0
  128. package/daemon/dist/db/migrations/097_thread_part_map.d.ts.map +1 -0
  129. package/daemon/dist/db/migrations/097_thread_part_map.js +20 -0
  130. package/daemon/dist/db/migrations/097_thread_part_map.js.map +1 -0
  131. package/daemon/dist/domain/activity-taxonomy.d.ts +7 -0
  132. package/daemon/dist/domain/activity-taxonomy.d.ts.map +1 -1
  133. package/daemon/dist/domain/activity-taxonomy.js.map +1 -1
  134. package/daemon/dist/domain/agent-activity-store.d.ts +12 -0
  135. package/daemon/dist/domain/agent-activity-store.d.ts.map +1 -1
  136. package/daemon/dist/domain/agent-activity-store.js +55 -30
  137. package/daemon/dist/domain/agent-activity-store.js.map +1 -1
  138. package/daemon/dist/domain/agent-images/agent-image-types.d.ts +1 -1
  139. package/daemon/dist/domain/agent-images/agent-image-types.d.ts.map +1 -1
  140. package/daemon/dist/domain/bootstrap-orchestrator.d.ts.map +1 -1
  141. package/daemon/dist/domain/bootstrap-orchestrator.js +6 -4
  142. package/daemon/dist/domain/bootstrap-orchestrator.js.map +1 -1
  143. package/daemon/dist/domain/bundle-install-context.d.ts +2 -2
  144. package/daemon/dist/domain/bundle-install-context.d.ts.map +1 -1
  145. package/daemon/dist/domain/bundle-install-context.js +16 -3
  146. package/daemon/dist/domain/bundle-install-context.js.map +1 -1
  147. package/daemon/dist/domain/bundle-types.d.ts +1 -1
  148. package/daemon/dist/domain/bundle-types.d.ts.map +1 -1
  149. package/daemon/dist/domain/chat-repository.d.ts +5 -0
  150. package/daemon/dist/domain/chat-repository.d.ts.map +1 -1
  151. package/daemon/dist/domain/chat-repository.js +8 -0
  152. package/daemon/dist/domain/chat-repository.js.map +1 -1
  153. package/daemon/dist/domain/claim-service.d.ts.map +1 -1
  154. package/daemon/dist/domain/claim-service.js +5 -4
  155. package/daemon/dist/domain/claim-service.js.map +1 -1
  156. package/daemon/dist/domain/claude-activity-hooks.d.ts +3 -0
  157. package/daemon/dist/domain/claude-activity-hooks.d.ts.map +1 -1
  158. package/daemon/dist/domain/claude-activity-hooks.js +8 -1
  159. package/daemon/dist/domain/claude-activity-hooks.js.map +1 -1
  160. package/daemon/dist/domain/claude-compaction-enforcer.d.ts +34 -2
  161. package/daemon/dist/domain/claude-compaction-enforcer.d.ts.map +1 -1
  162. package/daemon/dist/domain/claude-compaction-enforcer.js +195 -107
  163. package/daemon/dist/domain/claude-compaction-enforcer.js.map +1 -1
  164. package/daemon/dist/domain/codex-thread-id.d.ts.map +1 -1
  165. package/daemon/dist/domain/codex-thread-id.js +4 -2
  166. package/daemon/dist/domain/codex-thread-id.js.map +1 -1
  167. package/daemon/dist/domain/context-monitor.d.ts +5 -0
  168. package/daemon/dist/domain/context-monitor.d.ts.map +1 -1
  169. package/daemon/dist/domain/context-monitor.js +23 -6
  170. package/daemon/dist/domain/context-monitor.js.map +1 -1
  171. package/daemon/dist/domain/execution-view.d.ts.map +1 -1
  172. package/daemon/dist/domain/execution-view.js +57 -11
  173. package/daemon/dist/domain/execution-view.js.map +1 -1
  174. package/daemon/dist/domain/gateway/connections-projection.d.ts +4 -0
  175. package/daemon/dist/domain/gateway/connections-projection.d.ts.map +1 -1
  176. package/daemon/dist/domain/gateway/connections-projection.js +2 -0
  177. package/daemon/dist/domain/gateway/connections-projection.js.map +1 -1
  178. package/daemon/dist/domain/gateway/destination-resolver.d.ts.map +1 -1
  179. package/daemon/dist/domain/gateway/destination-resolver.js +7 -4
  180. package/daemon/dist/domain/gateway/destination-resolver.js.map +1 -1
  181. package/daemon/dist/domain/gateway/human-readiness.d.ts.map +1 -1
  182. package/daemon/dist/domain/gateway/human-readiness.js +23 -6
  183. package/daemon/dist/domain/gateway/human-readiness.js.map +1 -1
  184. package/daemon/dist/domain/gateway/human-registry.d.ts +2 -2
  185. package/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
  186. package/daemon/dist/domain/gateway/human-registry.js +2 -2
  187. package/daemon/dist/domain/gateway/human-registry.js.map +1 -1
  188. package/daemon/dist/domain/gateway/slack/capabilities.d.ts.map +1 -1
  189. package/daemon/dist/domain/gateway/slack/capabilities.js +3 -1
  190. package/daemon/dist/domain/gateway/slack/capabilities.js.map +1 -1
  191. package/daemon/dist/domain/gateway/slack/channel-map.d.ts +39 -0
  192. package/daemon/dist/domain/gateway/slack/channel-map.d.ts.map +1 -0
  193. package/daemon/dist/domain/gateway/slack/channel-map.js +114 -0
  194. package/daemon/dist/domain/gateway/slack/channel-map.js.map +1 -0
  195. package/daemon/dist/domain/gateway/slack/config.d.ts +7 -0
  196. package/daemon/dist/domain/gateway/slack/config.d.ts.map +1 -1
  197. package/daemon/dist/domain/gateway/slack/config.js +19 -2
  198. package/daemon/dist/domain/gateway/slack/config.js.map +1 -1
  199. package/daemon/dist/domain/gateway/slack/inbound.d.ts +24 -1
  200. package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
  201. package/daemon/dist/domain/gateway/slack/inbound.js +105 -3
  202. package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
  203. package/daemon/dist/domain/gateway/slack/message.d.ts +7 -0
  204. package/daemon/dist/domain/gateway/slack/message.d.ts.map +1 -1
  205. package/daemon/dist/domain/gateway/slack/message.js +36 -0
  206. package/daemon/dist/domain/gateway/slack/message.js.map +1 -1
  207. package/daemon/dist/domain/gateway/slack/queue-access.d.ts +2 -0
  208. package/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -1
  209. package/daemon/dist/domain/gateway/slack/queue-access.js +1 -0
  210. package/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -1
  211. package/daemon/dist/domain/gateway/slack/slack-api.d.ts +7 -2
  212. package/daemon/dist/domain/gateway/slack/slack-api.d.ts.map +1 -1
  213. package/daemon/dist/domain/gateway/slack/slack-api.js +35 -3
  214. package/daemon/dist/domain/gateway/slack/slack-api.js.map +1 -1
  215. package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts +34 -7
  216. package/daemon/dist/domain/gateway/slack/slack-delivery.d.ts.map +1 -1
  217. package/daemon/dist/domain/gateway/slack/slack-delivery.js +268 -51
  218. package/daemon/dist/domain/gateway/slack/slack-delivery.js.map +1 -1
  219. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts +17 -0
  220. package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
  221. package/daemon/dist/domain/gateway/slack/slack-subsystem.js +107 -24
  222. package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
  223. package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts +2 -0
  224. package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts.map +1 -1
  225. package/daemon/dist/domain/gateway/slack/socket-inbound.js +40 -0
  226. package/daemon/dist/domain/gateway/slack/socket-inbound.js.map +1 -1
  227. package/daemon/dist/domain/gateway/slack/thread-routing.d.ts.map +1 -1
  228. package/daemon/dist/domain/gateway/slack/thread-routing.js +22 -2
  229. package/daemon/dist/domain/gateway/slack/thread-routing.js.map +1 -1
  230. package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +14 -0
  231. package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts.map +1 -1
  232. package/daemon/dist/domain/gateway/slack/thread-seat-map.js +27 -0
  233. package/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -1
  234. package/daemon/dist/domain/generated-file-hygiene.d.ts.map +1 -1
  235. package/daemon/dist/domain/generated-file-hygiene.js +7 -4
  236. package/daemon/dist/domain/generated-file-hygiene.js.map +1 -1
  237. package/daemon/dist/domain/managed-blocks.d.ts.map +1 -1
  238. package/daemon/dist/domain/managed-blocks.js +5 -2
  239. package/daemon/dist/domain/managed-blocks.js.map +1 -1
  240. package/daemon/dist/domain/markdown-address.d.ts.map +1 -1
  241. package/daemon/dist/domain/markdown-address.js +23 -6
  242. package/daemon/dist/domain/markdown-address.js.map +1 -1
  243. package/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
  244. package/daemon/dist/domain/native-process-lineage.js +50 -3
  245. package/daemon/dist/domain/native-process-lineage.js.map +1 -1
  246. package/daemon/dist/domain/node-inventory.d.ts +2 -2
  247. package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
  248. package/daemon/dist/domain/node-inventory.js +30 -4
  249. package/daemon/dist/domain/node-inventory.js.map +1 -1
  250. package/daemon/dist/domain/node-launcher.d.ts.map +1 -1
  251. package/daemon/dist/domain/node-launcher.js +1 -0
  252. package/daemon/dist/domain/node-launcher.js.map +1 -1
  253. package/daemon/dist/domain/pane-binding-observation.d.ts +1 -0
  254. package/daemon/dist/domain/pane-binding-observation.d.ts.map +1 -1
  255. package/daemon/dist/domain/pane-binding-observation.js +3 -1
  256. package/daemon/dist/domain/pane-binding-observation.js.map +1 -1
  257. package/daemon/dist/domain/plugin-vendor-service.d.ts +6 -0
  258. package/daemon/dist/domain/plugin-vendor-service.d.ts.map +1 -1
  259. package/daemon/dist/domain/plugin-vendor-service.js +12 -0
  260. package/daemon/dist/domain/plugin-vendor-service.js.map +1 -1
  261. package/daemon/dist/domain/profile-resolver.d.ts.map +1 -1
  262. package/daemon/dist/domain/profile-resolver.js +54 -15
  263. package/daemon/dist/domain/profile-resolver.js.map +1 -1
  264. package/daemon/dist/domain/ps-projection.d.ts +11 -9
  265. package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
  266. package/daemon/dist/domain/ps-projection.js +15 -12
  267. package/daemon/dist/domain/ps-projection.js.map +1 -1
  268. package/daemon/dist/domain/queue-nudge-text.d.ts +4 -0
  269. package/daemon/dist/domain/queue-nudge-text.d.ts.map +1 -0
  270. package/daemon/dist/domain/queue-nudge-text.js +35 -0
  271. package/daemon/dist/domain/queue-nudge-text.js.map +1 -0
  272. package/daemon/dist/domain/queue-repository.d.ts +7 -0
  273. package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
  274. package/daemon/dist/domain/queue-repository.js +50 -20
  275. package/daemon/dist/domain/queue-repository.js.map +1 -1
  276. package/daemon/dist/domain/queue-retention.d.ts +2 -2
  277. package/daemon/dist/domain/queue-retention.js +4 -4
  278. package/daemon/dist/domain/queue-wait-backoff.d.ts.map +1 -1
  279. package/daemon/dist/domain/queue-wait-backoff.js +6 -2
  280. package/daemon/dist/domain/queue-wait-backoff.js.map +1 -1
  281. package/daemon/dist/domain/queue-waiting.d.ts.map +1 -1
  282. package/daemon/dist/domain/queue-waiting.js +7 -2
  283. package/daemon/dist/domain/queue-waiting.js.map +1 -1
  284. package/daemon/dist/domain/queue-wake-ladder.d.ts +15 -2
  285. package/daemon/dist/domain/queue-wake-ladder.d.ts.map +1 -1
  286. package/daemon/dist/domain/queue-wake-ladder.js +29 -6
  287. package/daemon/dist/domain/queue-wake-ladder.js.map +1 -1
  288. package/daemon/dist/domain/rehydrate-eligibility.d.ts.map +1 -1
  289. package/daemon/dist/domain/rehydrate-eligibility.js +5 -2
  290. package/daemon/dist/domain/rehydrate-eligibility.js.map +1 -1
  291. package/daemon/dist/domain/reply-to-choice.d.ts +6 -2
  292. package/daemon/dist/domain/reply-to-choice.d.ts.map +1 -1
  293. package/daemon/dist/domain/reply-to-choice.js +9 -6
  294. package/daemon/dist/domain/reply-to-choice.js.map +1 -1
  295. package/daemon/dist/domain/restore-check-service.d.ts +5 -1
  296. package/daemon/dist/domain/restore-check-service.d.ts.map +1 -1
  297. package/daemon/dist/domain/restore-check-service.js +17 -3
  298. package/daemon/dist/domain/restore-check-service.js.map +1 -1
  299. package/daemon/dist/domain/restore-orchestrator.d.ts +1 -0
  300. package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
  301. package/daemon/dist/domain/restore-orchestrator.js +17 -11
  302. package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
  303. package/daemon/dist/domain/rig-repository.d.ts +3 -1
  304. package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
  305. package/daemon/dist/domain/rig-repository.js +13 -4
  306. package/daemon/dist/domain/rig-repository.js.map +1 -1
  307. package/daemon/dist/domain/rig-teardown.d.ts.map +1 -1
  308. package/daemon/dist/domain/rig-teardown.js +6 -0
  309. package/daemon/dist/domain/rig-teardown.js.map +1 -1
  310. package/daemon/dist/domain/rigspec-instantiator.d.ts +1 -0
  311. package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
  312. package/daemon/dist/domain/rigspec-instantiator.js +1 -1
  313. package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
  314. package/daemon/dist/domain/rigspec-preflight.d.ts +1 -1
  315. package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
  316. package/daemon/dist/domain/rigspec-preflight.js +8 -4
  317. package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
  318. package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
  319. package/daemon/dist/domain/rigspec-schema.js +19 -4
  320. package/daemon/dist/domain/rigspec-schema.js.map +1 -1
  321. package/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
  322. package/daemon/dist/domain/seat-activity-service.js +16 -6
  323. package/daemon/dist/domain/seat-activity-service.js.map +1 -1
  324. package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
  325. package/daemon/dist/domain/seat-handover-service.js +9 -1
  326. package/daemon/dist/domain/seat-handover-service.js.map +1 -1
  327. package/daemon/dist/domain/session-jsonl.d.ts.map +1 -1
  328. package/daemon/dist/domain/session-jsonl.js +10 -4
  329. package/daemon/dist/domain/session-jsonl.js.map +1 -1
  330. package/daemon/dist/domain/session-transport.d.ts +16 -21
  331. package/daemon/dist/domain/session-transport.d.ts.map +1 -1
  332. package/daemon/dist/domain/session-transport.js +70 -37
  333. package/daemon/dist/domain/session-transport.js.map +1 -1
  334. package/daemon/dist/domain/skill-audit.d.ts +19 -0
  335. package/daemon/dist/domain/skill-audit.d.ts.map +1 -1
  336. package/daemon/dist/domain/skill-audit.js +97 -5
  337. package/daemon/dist/domain/skill-audit.js.map +1 -1
  338. package/daemon/dist/domain/skill-catalog.d.ts +11 -0
  339. package/daemon/dist/domain/skill-catalog.d.ts.map +1 -1
  340. package/daemon/dist/domain/skill-catalog.js +145 -12
  341. package/daemon/dist/domain/skill-catalog.js.map +1 -1
  342. package/daemon/dist/domain/skill-mirror-drift.d.ts +6 -1
  343. package/daemon/dist/domain/skill-mirror-drift.d.ts.map +1 -1
  344. package/daemon/dist/domain/skill-mirror-drift.js +23 -12
  345. package/daemon/dist/domain/skill-mirror-drift.js.map +1 -1
  346. package/daemon/dist/domain/snapshot-repository.d.ts.map +1 -1
  347. package/daemon/dist/domain/snapshot-repository.js +12 -32
  348. package/daemon/dist/domain/snapshot-repository.js.map +1 -1
  349. package/daemon/dist/domain/terminal/herdr-adapter.d.ts +4 -1
  350. package/daemon/dist/domain/terminal/herdr-adapter.d.ts.map +1 -1
  351. package/daemon/dist/domain/terminal/herdr-adapter.js +14 -7
  352. package/daemon/dist/domain/terminal/herdr-adapter.js.map +1 -1
  353. package/daemon/dist/domain/terminal/terminal-provider.d.ts +9 -0
  354. package/daemon/dist/domain/terminal/terminal-provider.d.ts.map +1 -1
  355. package/daemon/dist/domain/terminal/terminal-service.d.ts +4 -0
  356. package/daemon/dist/domain/terminal/terminal-service.d.ts.map +1 -1
  357. package/daemon/dist/domain/terminal/terminal-service.js +23 -11
  358. package/daemon/dist/domain/terminal/terminal-service.js.map +1 -1
  359. package/daemon/dist/domain/transcript-store.d.ts.map +1 -1
  360. package/daemon/dist/domain/transcript-store.js +21 -9
  361. package/daemon/dist/domain/transcript-store.js.map +1 -1
  362. package/daemon/dist/domain/types.d.ts +2 -0
  363. package/daemon/dist/domain/types.d.ts.map +1 -1
  364. package/daemon/dist/domain/types.js.map +1 -1
  365. package/daemon/dist/domain/usage-samples-store.js +2 -2
  366. package/daemon/dist/domain/usage-samples-store.js.map +1 -1
  367. package/daemon/dist/domain/usage-series.d.ts.map +1 -1
  368. package/daemon/dist/domain/usage-series.js +42 -10
  369. package/daemon/dist/domain/usage-series.js.map +1 -1
  370. package/daemon/dist/domain/user-settings/settings-browser.d.ts.map +1 -1
  371. package/daemon/dist/domain/user-settings/settings-browser.js +2 -0
  372. package/daemon/dist/domain/user-settings/settings-browser.js.map +1 -1
  373. package/daemon/dist/domain/user-settings/settings-store.js +1 -1
  374. package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
  375. package/daemon/dist/domain/watchdog-due.d.ts +17 -0
  376. package/daemon/dist/domain/watchdog-due.d.ts.map +1 -0
  377. package/daemon/dist/domain/watchdog-due.js +45 -0
  378. package/daemon/dist/domain/watchdog-due.js.map +1 -0
  379. package/daemon/dist/domain/watchdog-scheduler.d.ts.map +1 -1
  380. package/daemon/dist/domain/watchdog-scheduler.js +3 -7
  381. package/daemon/dist/domain/watchdog-scheduler.js.map +1 -1
  382. package/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
  383. package/daemon/dist/domain/workflow-projector.js +15 -5
  384. package/daemon/dist/domain/workflow-projector.js.map +1 -1
  385. package/daemon/dist/domain/workflow-runtime.js +1 -1
  386. package/daemon/dist/domain/workflow-runtime.js.map +1 -1
  387. package/daemon/dist/domain/workflow-step-trail-log.d.ts +6 -0
  388. package/daemon/dist/domain/workflow-step-trail-log.d.ts.map +1 -1
  389. package/daemon/dist/domain/workflow-step-trail-log.js +11 -0
  390. package/daemon/dist/domain/workflow-step-trail-log.js.map +1 -1
  391. package/daemon/dist/domain/workflow-validator.d.ts.map +1 -1
  392. package/daemon/dist/domain/workflow-validator.js +22 -1
  393. package/daemon/dist/domain/workflow-validator.js.map +1 -1
  394. package/daemon/dist/domain/workspace/project-catalog.js +1 -1
  395. package/daemon/dist/domain/workspace/project-catalog.js.map +1 -1
  396. package/daemon/dist/gateway-slack-surface.d.ts +1 -0
  397. package/daemon/dist/gateway-slack-surface.d.ts.map +1 -1
  398. package/daemon/dist/gateway-slack-surface.js +2 -1
  399. package/daemon/dist/gateway-slack-surface.js.map +1 -1
  400. package/daemon/dist/index.d.ts +1 -0
  401. package/daemon/dist/index.d.ts.map +1 -1
  402. package/daemon/dist/index.js +7 -7
  403. package/daemon/dist/index.js.map +1 -1
  404. package/daemon/dist/routes/agent-images.js +5 -5
  405. package/daemon/dist/routes/agent-images.js.map +1 -1
  406. package/daemon/dist/routes/bootstrap-failure-response.d.ts +13 -0
  407. package/daemon/dist/routes/bootstrap-failure-response.d.ts.map +1 -0
  408. package/daemon/dist/routes/bootstrap-failure-response.js +52 -0
  409. package/daemon/dist/routes/bootstrap-failure-response.js.map +1 -0
  410. package/daemon/dist/routes/bundles.d.ts.map +1 -1
  411. package/daemon/dist/routes/bundles.js +23 -36
  412. package/daemon/dist/routes/bundles.js.map +1 -1
  413. package/daemon/dist/routes/chat.d.ts.map +1 -1
  414. package/daemon/dist/routes/chat.js +16 -1
  415. package/daemon/dist/routes/chat.js.map +1 -1
  416. package/daemon/dist/routes/restore-check.d.ts.map +1 -1
  417. package/daemon/dist/routes/restore-check.js +2 -0
  418. package/daemon/dist/routes/restore-check.js.map +1 -1
  419. package/daemon/dist/routes/rigs.js +2 -2
  420. package/daemon/dist/routes/rigs.js.map +1 -1
  421. package/daemon/dist/routes/seat.js +13 -13
  422. package/daemon/dist/routes/seat.js.map +1 -1
  423. package/daemon/dist/routes/sessions.js +11 -11
  424. package/daemon/dist/routes/sessions.js.map +1 -1
  425. package/daemon/dist/routes/skills.d.ts.map +1 -1
  426. package/daemon/dist/routes/skills.js +15 -7
  427. package/daemon/dist/routes/skills.js.map +1 -1
  428. package/daemon/dist/routes/terminal-ws.js +15 -2
  429. package/daemon/dist/routes/terminal-ws.js.map +1 -1
  430. package/daemon/dist/routes/terminal.d.ts.map +1 -1
  431. package/daemon/dist/routes/terminal.js +6 -4
  432. package/daemon/dist/routes/terminal.js.map +1 -1
  433. package/daemon/dist/routes/up.d.ts.map +1 -1
  434. package/daemon/dist/routes/up.js +5 -56
  435. package/daemon/dist/routes/up.js.map +1 -1
  436. package/daemon/dist/startup.d.ts.map +1 -1
  437. package/daemon/dist/startup.js +32 -7
  438. package/daemon/dist/startup.js.map +1 -1
  439. package/daemon/dist/terminal/TerminalSessionBroker.d.ts.map +1 -1
  440. package/daemon/dist/terminal/TerminalSessionBroker.js +9 -1
  441. package/daemon/dist/terminal/TerminalSessionBroker.js.map +1 -1
  442. package/daemon/docs/reference/agent-spec.md +10 -10
  443. package/daemon/docs/reference/agent-startup-guide.md +7 -2
  444. package/daemon/docs/reference/bundle-formats.md +6 -4
  445. package/daemon/docs/reference/chain-file-convention.md +2 -2
  446. package/daemon/docs/reference/developing.md +1 -1
  447. package/daemon/docs/reference/edge-types.md +1 -1
  448. package/daemon/docs/reference/getting-started.md +356 -212
  449. package/daemon/docs/reference/help.md +48 -19
  450. package/daemon/docs/reference/instance-layout.md +5 -0
  451. package/daemon/docs/reference/non-interruptive-mode.md +7 -4
  452. package/daemon/docs/reference/project-workspace.md +2 -2
  453. package/daemon/docs/reference/publishing-a-rig-bundle.md +15 -10
  454. package/daemon/docs/reference/refocus-channel.md +14 -2
  455. package/daemon/docs/reference/rig-bundle.md +39 -19
  456. package/daemon/docs/reference/rig-spec.md +48 -20
  457. package/daemon/docs/reference/rosters.md +2 -1
  458. package/daemon/docs/reference/schemas/registry-entry.v1.schema.json +1 -1
  459. package/daemon/docs/reference/sdlc-conventions.md +4 -2
  460. package/daemon/docs/reference/slack-app-setup.md +69 -9
  461. package/daemon/docs/reference/topology-naming.md +74 -0
  462. package/daemon/docs/reference/whats-new.md +96 -0
  463. package/daemon/specs/agents/shared/skills/core/messaging-the-human/SKILL.md +6 -0
  464. package/daemon/specs/agents/shared/skills/core/openrig-architect/SKILL.md +3 -0
  465. package/daemon/specs/agents/shared/skills/core/openrig-skills/SKILL.md +1 -1
  466. package/daemon/specs/agents/shared/skills/core/openrig-software-factory/SKILL.md +19 -12
  467. package/daemon/specs/agents/shared/skills/core/openrig-software-factory/references/worked-example.md +17 -16
  468. package/daemon/specs/agents/shared/skills/core/openrig-upgrade/SKILL.md +2 -0
  469. package/daemon/specs/rigs/launch/factory/guidance/lead-first-move.md +60 -0
  470. package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +105 -19
  471. package/daemon/specs/rigs/launch/kernel/culture/CULTURE.md +5 -2
  472. package/daemon/specs/rigs/launch/starter/guidance/lead-first-move.md +44 -0
  473. package/dist/build-info.js +3 -3
  474. package/dist/cli-error.d.ts.map +1 -1
  475. package/dist/cli-error.js +11 -3
  476. package/dist/cli-error.js.map +1 -1
  477. package/dist/client.d.ts +2 -0
  478. package/dist/client.d.ts.map +1 -1
  479. package/dist/client.js +2 -0
  480. package/dist/client.js.map +1 -1
  481. package/dist/commands/agent-image.js +2 -2
  482. package/dist/commands/agent-image.js.map +1 -1
  483. package/dist/commands/bundle.d.ts.map +1 -1
  484. package/dist/commands/bundle.js +5 -4
  485. package/dist/commands/bundle.js.map +1 -1
  486. package/dist/commands/chatroom.d.ts.map +1 -1
  487. package/dist/commands/chatroom.js +21 -1
  488. package/dist/commands/chatroom.js.map +1 -1
  489. package/dist/commands/context.d.ts.map +1 -1
  490. package/dist/commands/context.js +12 -2
  491. package/dist/commands/context.js.map +1 -1
  492. package/dist/commands/doctor.d.ts +3 -1
  493. package/dist/commands/doctor.d.ts.map +1 -1
  494. package/dist/commands/doctor.js +14 -7
  495. package/dist/commands/doctor.js.map +1 -1
  496. package/dist/commands/down.d.ts.map +1 -1
  497. package/dist/commands/down.js +42 -0
  498. package/dist/commands/down.js.map +1 -1
  499. package/dist/commands/gateway.d.ts.map +1 -1
  500. package/dist/commands/gateway.js +4 -3
  501. package/dist/commands/gateway.js.map +1 -1
  502. package/dist/commands/launch.d.ts.map +1 -1
  503. package/dist/commands/launch.js +114 -8
  504. package/dist/commands/launch.js.map +1 -1
  505. package/dist/commands/package.d.ts.map +1 -1
  506. package/dist/commands/package.js +6 -3
  507. package/dist/commands/package.js.map +1 -1
  508. package/dist/commands/policy.d.ts.map +1 -1
  509. package/dist/commands/policy.js +6 -5
  510. package/dist/commands/policy.js.map +1 -1
  511. package/dist/commands/proof.js +1 -1
  512. package/dist/commands/proof.js.map +1 -1
  513. package/dist/commands/queue.d.ts.map +1 -1
  514. package/dist/commands/queue.js +6 -3
  515. package/dist/commands/queue.js.map +1 -1
  516. package/dist/commands/restore-packet.d.ts.map +1 -1
  517. package/dist/commands/restore-packet.js +6 -4
  518. package/dist/commands/restore-packet.js.map +1 -1
  519. package/dist/commands/scope.js +6 -6
  520. package/dist/commands/scope.js.map +1 -1
  521. package/dist/commands/setup.d.ts +6 -15
  522. package/dist/commands/setup.d.ts.map +1 -1
  523. package/dist/commands/setup.js +121 -332
  524. package/dist/commands/setup.js.map +1 -1
  525. package/dist/commands/skill.d.ts.map +1 -1
  526. package/dist/commands/skill.js +12 -1
  527. package/dist/commands/skill.js.map +1 -1
  528. package/dist/commands/slack.d.ts +5 -1
  529. package/dist/commands/slack.d.ts.map +1 -1
  530. package/dist/commands/slack.js +143 -6
  531. package/dist/commands/slack.js.map +1 -1
  532. package/dist/commands/stream.js +1 -1
  533. package/dist/commands/stream.js.map +1 -1
  534. package/dist/commands/terminal.d.ts +33 -0
  535. package/dist/commands/terminal.d.ts.map +1 -1
  536. package/dist/commands/terminal.js +30 -12
  537. package/dist/commands/terminal.js.map +1 -1
  538. package/dist/commands/tui.js +4 -4
  539. package/dist/commands/tui.js.map +1 -1
  540. package/dist/commands/workflow-follow.d.ts +1 -1
  541. package/dist/commands/workflow-follow.d.ts.map +1 -1
  542. package/dist/commands/workflow-follow.js +4 -3
  543. package/dist/commands/workflow-follow.js.map +1 -1
  544. package/dist/commands/workflow.d.ts.map +1 -1
  545. package/dist/commands/workflow.js +30 -18
  546. package/dist/commands/workflow.js.map +1 -1
  547. package/dist/config-store.js +1 -1
  548. package/dist/config-store.js.map +1 -1
  549. package/dist/front-door.d.ts.map +1 -1
  550. package/dist/front-door.js +4 -2
  551. package/dist/front-door.js.map +1 -1
  552. package/dist/herdr-launch-config.d.ts +3 -0
  553. package/dist/herdr-launch-config.d.ts.map +1 -0
  554. package/dist/herdr-launch-config.js +37 -0
  555. package/dist/herdr-launch-config.js.map +1 -0
  556. package/dist/index.d.ts.map +1 -1
  557. package/dist/index.js +2 -1
  558. package/dist/index.js.map +1 -1
  559. package/dist/launch-plan-guard.d.ts +27 -0
  560. package/dist/launch-plan-guard.d.ts.map +1 -0
  561. package/dist/launch-plan-guard.js +73 -0
  562. package/dist/launch-plan-guard.js.map +1 -0
  563. package/dist/lib/bundle-source.d.ts +2 -0
  564. package/dist/lib/bundle-source.d.ts.map +1 -1
  565. package/dist/lib/bundle-source.js +12 -1
  566. package/dist/lib/bundle-source.js.map +1 -1
  567. package/dist/lib/context-git.d.ts +2 -0
  568. package/dist/lib/context-git.d.ts.map +1 -1
  569. package/dist/lib/context-git.js +55 -5
  570. package/dist/lib/context-git.js.map +1 -1
  571. package/dist/lib/scope/scope-fs.d.ts +3 -2
  572. package/dist/lib/scope/scope-fs.d.ts.map +1 -1
  573. package/dist/lib/scope/scope-fs.js +97 -9
  574. package/dist/lib/scope/scope-fs.js.map +1 -1
  575. package/dist/lib/scope/templates.d.ts.map +1 -1
  576. package/dist/lib/scope/templates.js +28 -24
  577. package/dist/lib/scope/templates.js.map +1 -1
  578. package/dist/provider-auth.d.ts +32 -0
  579. package/dist/provider-auth.d.ts.map +1 -0
  580. package/dist/provider-auth.js +128 -0
  581. package/dist/provider-auth.js.map +1 -0
  582. package/dist/terminal-window.d.ts +19 -0
  583. package/dist/terminal-window.d.ts.map +1 -0
  584. package/dist/terminal-window.js +513 -0
  585. package/dist/terminal-window.js.map +1 -0
  586. package/package.json +2 -2
  587. package/tui/dist/commands/registry.js +2 -2
  588. package/tui/dist/commands/registry.js.map +1 -1
  589. package/tui/dist/config/config-model.d.ts.map +1 -1
  590. package/tui/dist/config/config-model.js +1 -0
  591. package/tui/dist/config/config-model.js.map +1 -1
  592. package/tui/dist/connections/connections-model.d.ts +5 -0
  593. package/tui/dist/connections/connections-model.d.ts.map +1 -1
  594. package/tui/dist/connections/connections-model.js +1 -1
  595. package/tui/dist/connections/connections-model.js.map +1 -1
  596. package/tui/dist/daemon-client.d.ts +5 -0
  597. package/tui/dist/daemon-client.d.ts.map +1 -1
  598. package/tui/dist/daemon-client.js.map +1 -1
  599. package/tui/dist/execution/workflow-model.d.ts.map +1 -1
  600. package/tui/dist/execution/workflow-model.js +3 -1
  601. package/tui/dist/execution/workflow-model.js.map +1 -1
  602. package/tui/dist/hydrate.d.ts +1 -1
  603. package/tui/dist/hydrate.d.ts.map +1 -1
  604. package/tui/dist/hydrate.js +3 -1
  605. package/tui/dist/hydrate.js.map +1 -1
  606. package/tui/dist/main.js +39 -15
  607. package/tui/dist/main.js.map +1 -1
  608. package/tui/dist/page-read.js +1 -1
  609. package/tui/dist/page-read.js.map +1 -1
  610. package/tui/dist/pending-address.d.ts +7 -0
  611. package/tui/dist/pending-address.d.ts.map +1 -0
  612. package/tui/dist/pending-address.js +11 -0
  613. package/tui/dist/pending-address.js.map +1 -0
  614. package/tui/dist/render.d.ts.map +1 -1
  615. package/tui/dist/render.js +10 -6
  616. package/tui/dist/render.js.map +1 -1
  617. package/tui/dist/scopes/scopes-model.js +4 -4
  618. package/tui/dist/socket-server.d.ts +3 -1
  619. package/tui/dist/socket-server.d.ts.map +1 -1
  620. package/tui/dist/socket-server.js +6 -0
  621. package/tui/dist/socket-server.js.map +1 -1
  622. package/tui/dist/state.d.ts.map +1 -1
  623. package/tui/dist/state.js +40 -13
  624. package/tui/dist/state.js.map +1 -1
  625. package/tui/dist/stylize.js +1 -1
  626. package/tui/dist/stylize.js.map +1 -1
  627. package/tui/dist/terminals/open-window.d.ts +5 -0
  628. package/tui/dist/terminals/open-window.d.ts.map +1 -0
  629. package/tui/dist/terminals/open-window.js +55 -0
  630. package/tui/dist/terminals/open-window.js.map +1 -0
  631. package/tui/dist/terminals/terminal-model.d.ts.map +1 -1
  632. package/tui/dist/terminals/terminal-model.js +16 -17
  633. package/tui/dist/terminals/terminal-model.js.map +1 -1
  634. package/tui/dist/types.d.ts +16 -1
  635. package/tui/dist/types.d.ts.map +1 -1
  636. package/ui/dist/assets/{index-HHSvwF97.js → index-D5n8EwkG.js} +1 -1
  637. package/ui/dist/index.html +1 -1
@@ -5,20 +5,38 @@ the advisor and TUI beside it. No starter team is needed to reach that view.
5
5
  Tell the operator what you want to do, then choose a project team for a bounded
6
6
  change you can exercise. Reuse the accounts and terminal tools you already have.
7
7
 
8
+ After installation and sign-in, your agent opens the **OpenRig TUI and operator** for you. The path is `rig daemon start` (if stopped),
9
+ then `rig terminal open saved:kernel --window`. The second command opens the
10
+ desktop window itself. An agent can run it from its shell on the daemon's
11
+ desktop; it does not need to type into your current terminal. See
12
+ [Open the kernel conversations](#open-the-kernel-conversations).
13
+ `rig tui` is the team dashboard; installation ends when you are talking to the
14
+ operator in the OpenRig view.
15
+
16
+ ## Before you start
17
+
8
18
  You need Node.js 22 or 24 and tmux, on macOS or Linux. On Linux, the
9
19
  distribution's own Node.js can be older (Ubuntu 24.04's is 18); install a
10
20
  supported version with [nvm](https://github.com/nvm-sh/nvm) (`nvm install 22`)
11
21
  or NodeSource. On a Mac with Apple
12
22
  silicon, use Node.js 22 (see the [compatibility
13
23
  history](../releases/v0.5.15.md#known-compatibility-limitation)). Native
14
- Windows is not supported yet, and WSL2 has not been tested. Node 20 and
24
+ Windows isn't supported. On Windows, use WSL2: it's the Windows route OpenRig
25
+ supports, though OpenRig's automated tests don't run on it yet. One user's
26
+ [working setup](#wsl2-a-reported-working-setup) is below. Node 20 and
15
27
  odd-numbered releases (23, 25 and so on) are not supported; Node 26 and later
16
28
  even-numbered releases are untested.
17
29
 
18
30
  **Choose permissions before starting the team.** Ordinary OpenRig launches use
19
31
  Codex's `-s workspace-write`, with approval policy from your native configuration,
20
32
  or Claude Code's `acceptEdits`, which still leaves commands subject to native
21
- rules and prompts (the kernel's own seats get a wider operational default). Codex's
33
+ rules and prompts. A team seat with no permission policy, per-seat choice or
34
+ (for Codex) named profile also gets a per-launch
35
+ [team default](rig-spec.md#team-launch-defaults): Claude runs ordinary `rig`
36
+ commands, project reads and common tests without prompting, while lifecycle
37
+ commands such as `rig up` and `rig down` still ask; Codex also gets the OpenRig
38
+ workspace root and its pod's state directory as writable directories. The
39
+ kernel's own seats get a wider operational default. Codex's
22
40
  sandbox normally blocks network access, including the local OpenRig daemon, so
23
41
  before that plain launch OpenRig asks Codex for its own configuration and adds
24
42
  network access inside the sandbox only when Codex answers that no configuration
@@ -29,18 +47,78 @@ is left unchanged. To keep it off, set `network_access = false` under
29
47
  within a few seconds, the seat starts without it. A command allowance does not
30
48
  change general sandbox/network settings. The starter's `profile: default` selects OpenRig resources, not a native
31
49
  permission profile.
32
- Agent-guided setup [asks once](#have-your-agent-configure-permissions): “Allow
33
- your agents to run OpenRig commands without repeated permission prompts?”
34
- **Yes — recommended** / **No — keep prompts**. An existing explicit choice is
35
- reused; No or no answer leaves settings unchanged. Broader access is separate.
50
+ Agent-guided setup [recommends keeping the team default](#have-your-agent-configure-permissions)
51
+ and offers to remember selected OpenRig commands in your native settings only if
52
+ you want that. An existing explicit choice is reused; No or no answer keeps the
53
+ team default and leaves settings unchanged. Broader access is separate.
54
+
55
+ If permission prompts are slowing you down, consider the
56
+ [workshop bundle](https://openrig.dev/rigs/workshop). It ships with broad access
57
+ and [non-interruptive mode](non-interruptive-mode.md): its agents bypass
58
+ permission prompts and supported harness warning dialogs. The listing and
59
+ before-install view explain that access before you choose it.
36
60
 
37
61
  > Everything below reports **what is currently true**, never a guarantee that
38
62
  > downstream work will succeed. "Daemon up" does not mean every agent is healthy;
39
63
  > "kernel ready" does not mean every kernel agent is healthy; a workspace root
40
64
  > being *live* does not mean it is the *right* one for your project.
41
65
 
66
+ ## WSL2: a reported working setup
67
+
68
+ WSL2 is the Windows route OpenRig supports. OpenRig's automated tests don't run on
69
+ it yet; this is one user's working setup.
70
+ [dajiaohuang](https://github.com/dajiaohuang)
71
+ [ran OpenRig 0.6.6 under WSL2](https://github.com/mvschwarz/openrig/issues/88#issuecomment-6043925546)
72
+ on Ubuntu 24.04, with Node.js 24.14.1, tmux 3.4, Codex CLI 0.161.0 and Pi
73
+ (`@earendil-works/pi-coding-agent`) 1.0.4, headless, as the distribution's root
74
+ user.
75
+
76
+ - **What worked**, with one Codex seat and one Pi seat: `rig doctor`, starting
77
+ the daemon (`rig daemon start --no-kernel`), launching both seats, replies to
78
+ `rig send` and `rig capture`, and stopping with `rig down --snapshot`
79
+ followed by a warm restore with `rig up --existing`.
80
+ - **What mattered:**
81
+ - the install and the OpenRig instance on the Linux filesystem;
82
+ - Linux-native Node.js and harnesses, not the Windows `npm` or `pi` that WSL
83
+ inherits;
84
+ - Pi credentials the managed seat can reach, because a global Pi login isn't
85
+ shared with managed seats. This user put them in the seat's agent
86
+ directory. For `openrouter`, `zai`, `kimi-coding` or `minimax`, a key in the
87
+ daemon environment also works (`OPENROUTER_API_KEY`, `ZAI_API_KEY`,
88
+ `KIMI_API_KEY` or `MINIMAX_API_KEY`): name it in
89
+ `recovery.provider_auth_env_allowlist`, give the seat a `<provider>/<id>`
90
+ model, then restart the daemon and relaunch the seat. Any other provider
91
+ goes in the seat's agent directory;
92
+ - the current `@earendil-works/pi-coding-agent` package in its own npm prefix,
93
+ not the deprecated `@mariozechner` one.
94
+ - **Not tested:** the kernel and operator, herdr, reboot, suspend and resume,
95
+ cross-host operation and long-running work.
96
+
42
97
  ## Install and sign in
43
98
 
99
+ **Agents:** if you're setting OpenRig up for someone, load the `rigs` skill and follow it. It carries the install, the
100
+ OpenRig view and the handoff to the operator as one procedure. From 0.6.7, OpenRig installs it as `rigs` in
101
+ `~/.claude/skills` and `~/.agents/skills` when the daemon starts. Before that, add it with
102
+ `npx skills add mvschwarz/openrig --skill rigs`, or read [`skills/rigs/SKILL.md`](../../skills/rigs/SKILL.md).
103
+
104
+ **One command, for the full setup.** It needs Node.js 22 or 24 with npm already installed. The preview prints what the
105
+ script will do and changes nothing:
106
+
107
+ ```sh
108
+ curl -fsSL https://raw.githubusercontent.com/mvschwarz/openrig/v0.6.8/scripts/install.sh | sh -s -- --dry-run
109
+ ```
110
+
111
+ The same command without `--dry-run`,
112
+ `curl -fsSL https://raw.githubusercontent.com/mvschwarz/openrig/v0.6.8/scripts/install.sh | sh`, installs the
113
+ latest published `@openrig/cli` with `npm install -g`,
114
+ runs the Node.js and SQLite check, then `rig setup --dry-run` and `rig setup`. `rig setup` checks both Claude Code and
115
+ Codex and may install a missing one, as described below. A failed step prints
116
+ `FAILED [n/4] <command or check> (exit <code>)`. Where a provider isn't signed in yet, step 4 ends that way and
117
+ `rig setup` lists each sign-in under "Some steps need attention". If the only remaining failures are provider
118
+ sign-ins, the install steps finished: sign in to each selected provider as below, then continue at
119
+ [Start the kernel](#start-the-kernel-and-check-its-state). To install only what the selected providers need, go step
120
+ by step instead:
121
+
44
122
  ### Choose your providers
45
123
 
46
124
  Ask: **“Which working account do you want this team to use: Claude Code, Codex,
@@ -55,11 +133,14 @@ Install OpenRig (`npm install -g @openrig/cli`) and check `tmux -V`. With npm 11
55
133
  ask once: “Please run `codex login` in your launch environment.”
56
134
 
57
135
  Install a missing selected CLI using its provider's installation instructions.
58
- The other provider's CLI/login and Herdr/cmux are optional. Do not copy credentials
136
+ The other provider's CLI/login is optional. Herdr is installed by default unless
137
+ you decline it; cmux remains optional. Do not copy credentials
59
138
  or start repeated sign-in attempts. Recheck the selected login after the user
60
139
  completes it. `rig setup --dry-run` previews the broader setup; applying
61
- `rig setup` installs/checks **both** harnesses and, on macOS, Homebrew and cmux
62
- (off macOS those steps are skipped, and tmux isn't installed for you). It also
140
+ `rig setup` checks **both** harnesses and installs a missing one with npm; on
141
+ macOS it uses an existing Homebrew (it does not install Homebrew) to install a
142
+ missing tmux (elsewhere tmux is checked, not installed). Herdr installs on
143
+ macOS and Linux; pass `--no-herdr` to decline it. Setup also
63
144
  writes an OpenRig-managed block (mouse on, a longer history) into `~/.tmux.conf`.
64
145
  It is optional for this selected-provider path, not a requirement to fix an unused
65
146
  provider.
@@ -104,214 +185,200 @@ when it starts the daemon.
104
185
 
105
186
  ## Open the kernel conversations
106
187
 
107
- The installing agent asks: **“Open the OpenRig view now?”**
108
-
109
- - **Yes:** open a new space with the installed tools below. Keep the terminal in
110
- use and existing windows intact, including an agent's installation session.
111
- - **No:** give the matching command so the person can open it later. Leave the
112
- current terminal alone.
113
- - **Over SSH or without a local display:** give the exact connection/attach
114
- command for the installation host instead of trying to open a window here.
115
-
116
- No, SSH and headless use are valid background outcomes, not setup failures.
188
+ This is the **OpenRig view**, in a new terminal window or tab.
189
+ Below 120 measured columns, the operator fills the first page; from 120, the dashboard and operator share it equally.
190
+ The advisor always has a separate tab or tmux window.
191
+ **Agents:** the `rigs` skill says when to open it, what to check, what to do when it can't open, and how to hand the
192
+ person's goal to the operator; [Install and sign in](#install-and-sign-in) says how to load it.
117
193
 
118
- Use **herdr first if installed**, **cmux second**, and otherwise give the exact
119
- [new-terminal commands below](#plain-terminal-a-new-viewing-session).
120
- To reach just the operator, use the [direct conversation command](#talk-to-the-operator-in-any-terminal).
121
- `rig tui --shared` is the team dashboard, not the operator's conversation.
122
- No new terminal-provider installation is needed for this offer. The first view
123
- contains TUI | advisor | operator in that order, for Claude-only, Codex-only and
124
- mixed kernels.
125
- The queue worker stays out of this view; it remains reachable through the TUI.
126
- This selects what you see, not which kernel seats run. Keep the current kernel,
127
- accounts and conversations; opening a view is not a reason to start or restore
128
- seats. If the kernel is starting, report that; opening the view need not wait.
129
- If it is absent or blocked, follow
130
- [Incomplete setup and restart](#incomplete-setup-and-restart).
194
+ `rig setup` installs Herdr by default on macOS and Linux. If the person declines
195
+ Herdr, use `rig setup --no-herdr`; the OpenRig view can use plain tmux. Setup
196
+ checks both PATH and the installer's default `~/.local/bin/herdr` location. It
197
+ leaves existing cmux settings alone and does not open a view during setup.
131
198
 
132
- ### Confirm the existing seats
199
+ On a Mac, the installing agent also asks once, "Install Ghostty for the OpenRig
200
+ view?" On Yes it reruns setup with `--ghostty`, preserving earlier choices such
201
+ as `--no-herdr`. This installs the
202
+ [documented Homebrew cask](https://ghostty.org/docs/install/binary) and checks for
203
+ the app. On No it uses `--no-ghostty`; Terminal.app remains available. Plain setup
204
+ reports this offer without installing Ghostty or waiting for input. The person
205
+ types no command.
133
206
 
134
- Run these on the daemon's machine, in the installation environment:
207
+ This command opens it in a new terminal tab or window itself, so nobody copies or types commands. Over SSH or
208
+ without a local display it can't, and the [headless handoff](#headless-or-ssh-handoff) applies:
135
209
 
136
210
  ```sh
137
- rig status
138
- rig ps --nodes --rig kernel --json --fields logicalId,runtime,canonicalSessionName,tmuxAttachCommand
139
- rig terminal status --json
211
+ rig terminal open saved:kernel --window --json
140
212
  ```
141
213
 
142
- Use the returned bindings, not the library preview. Find the rows whose
143
- `logicalId` is `advisor.lead`, `operator.agent` and `operator.human` (the TUI).
144
- For each, take its `canonicalSessionName`; a logical ID is not a tmux session
145
- name. The default provider view resolves these values itself; use them directly for
146
- the plain-terminal commands below. Missing bindings stay named missing; the
147
- three-role view is the same regardless of the agents' runtimes.
148
-
149
- ### Herdr or cmux: one new workspace
150
-
151
- OpenRig supplies `saved:kernel` automatically from the installed kernel's current
152
- bindings: TUI | advisor | operator for every kernel. No YAML edit or daemon
153
- restart is needed. It excludes
154
- the queue worker and uses the existing conversations. Unavailable expected roles
155
- are named in `absent`; with no attachable members, the result lists the missing
156
- bindings. The runtime label describes the agents' runtime mix, or says that it is
157
- unverified. Every default kernel view keeps the same three roles.
158
-
159
- If you already saved a view with id `kernel` in `terminal-views.yaml`, your view
160
- wins unchanged. Other saved views are preserved. Check the listed membership
161
- before opening a custom view.
162
-
163
- Check `rig terminal status --json` for provider availability and liveness. If
164
- herdr is installed but closed, open the app normally and check again. When it
165
- is available:
214
+ Run this on the daemon's desktop, as the same user. On macOS, the command
215
+ opens a new tab or window in the hosting Ghostty (1.3 or newer), or a new
216
+ window when hosted by Terminal. For Claude Desktop, iTerm or VS Code, it checks
217
+ for a local macOS desktop session and opens a new Ghostty window if its scripting
218
+ support is confirmed (1.3 or newer), otherwise Terminal.app with an explanation.
219
+ That window uses the app's own profile defaults because
220
+ there is no hosting window to copy. Before running the command, the agent should say that clicking **Allow**
221
+ on macOS's one-time control prompt is fine: it lets OpenRig open the requested
222
+ OpenRig view. A denied or uncertain action is reported once, not replayed in
223
+ another app. If macOS remembers a denial, enable the calling app in System Settings
224
+ → Privacy & Security → Automation, or use the printed command in a terminal yourself.
225
+ Unknown width keeps the operator-only layout.
226
+
227
+ When the agent already runs inside Herdr, the command focuses a space with the
228
+ same view and plan, or creates one if none matches, preserving its config and existing spaces. The
229
+ caller's Herdr endpoint must match the daemon's endpoint; a mismatch is reported
230
+ without opening a window or putting the view in another session.
231
+
232
+ On Linux, a local graphical display and a supported hosting terminal are required
233
+ (Ghostty, GNOME Terminal, Konsole or xterm). Linux reports a window request; verify
234
+ what actually appeared. SSH, headless, CI and unsupported Linux hosts get a
235
+ no-window result with the reason, a command for the person to run, and any
236
+ follow-up the agent needs to perform.
237
+
238
+ OpenRig's Herdr launch and its printed manual command keep your personal Herdr
239
+ config when present. If it is absent, OpenRig creates private sidebar defaults;
240
+ the new desktop terminal selects them from its measured width. The manual command
241
+ uses the collapsed default. If private settings cannot be prepared, OpenRig
242
+ reports why and keeps the ordinary launch or manual command with Herdr's usual settings.
243
+
244
+ The command runs Herdr when installed, using the daemon's configured session and
245
+ socket. Otherwise it creates a plain tmux viewing session. Explicitly choose the
246
+ latter with `--provider tmux --window`. Neither route types into or replaces the
247
+ installing agent's terminal. Existing conversations continue in their original
248
+ sessions.
249
+
250
+ Opening the same Herdr view with the same current plan selects its existing
251
+ OpenRig workspace in the new window, preserving its tabs and contents. The receipt
252
+ reports reuse and any currently absent or degraded seats; it does not claim to
253
+ refresh the layout or create new tiles. Changed membership or attachment targets
254
+ create a fresh workspace. A note identifies older workspaces and gives the command
255
+ to close them after inspection; nothing is closed automatically. If the workspace
256
+ inventory cannot be read, the command creates a fresh workspace and reports the
257
+ inventory problem.
258
+
259
+ Terminal.app copies the person's front-window bounds to the new view without
260
+ changing the original. Ghostty keeps the current window size when adding a tab.
261
+ OpenRig keeps an existing personal Herdr config unchanged. Only when that config
262
+ is absent, its private default starts the sidebar open at 160 columns or more,
263
+ and collapsed below that width. Unknown widths use the collapsed default.
264
+
265
+ ### Confirm the view
266
+
267
+ For Claude-only, Codex-only and mixed kernels, the default `saved:kernel` layout
268
+ uses the viewing terminal's measured width. Below 120 columns (or when width is
269
+ unknown), **the operator** fills the first page, followed by dashboard and advisor
270
+ pages. From 120 columns, dashboard and operator share the first page equally, with
271
+ the advisor on a separate page. Select a Herdr tab to switch; in plain tmux, press
272
+ **Ctrl-b, then w** and choose a `view-*` window; `view-1` is the OpenRig view's first page.
273
+ Missing roles are reported rather than filled with another conversation. The queue worker remains
274
+ reachable through the dashboard. The composition uses the installed kernel's current
275
+ bindings; no YAML edit, seat launch or daemon restart is needed. A custom saved
276
+ view named `kernel` still takes precedence.
277
+
278
+ Inspect `opened`, `absent`, `degraded`, `window` and any notes. Confirm the new
279
+ surface visibly shows the operator, with the dashboard and advisor reachable,
280
+ and that the original terminal remains intact. The person sees Herdr only in a terminal they can see.
281
+ Creating its workspace or switching the shared TUI to `:terminals` does not open
282
+ that terminal. A created window or successful CLI response alone is not visual
283
+ confirmation. A partial view remains partial. If the shared TUI tile shows a
284
+ shell, the installing agent starts `rig tui` in that new tile.
285
+
286
+ Opening the view can happen while the kernel finishes starting. Report its actual
287
+ state; do not start or restore seats just to obtain a view. If the kernel is absent
288
+ or blocked, follow [Incomplete setup and restart](#incomplete-setup-and-restart).
289
+
290
+ ### What can interrupt installation and the OpenRig view
291
+
292
+ For an installing agent, a blocked step needs an explanation, not silence. Name
293
+ the command, the reported reason and what remains unfinished. These checks cover
294
+ different points in the same journey:
295
+
296
+ | What you see | Why and what to do next |
297
+ | --- | --- |
298
+ | Codex offers to switch to a cheaper model near a rate limit | This is Codex's own menu. Ask the person to choose in the seat's terminal; do not silently change the team's configured model. OpenRig disables Codex's startup update check for managed launches, but does not answer this model-choice menu. |
299
+ | A missing Node.js, npm or tmux; an install download or command fails | The named prerequisite or install step did not finish. Read its error and the [platform and provider instructions](#install-and-sign-in), resolve that step, then recheck it. `FAILED [4/4]` with only selected-provider sign-ins outstanding means the package installed but those logins still need the person. |
300
+ | The installing harness refuses a tool call or asks for permission | Its native rules, sandbox or automatic permission decision apply before OpenRig can run. Claude Code's [auto mode can deny calls](https://code.claude.com/docs/en/auto-mode-config) as well as approve them. Show the specific refusal and ask the person to review it in the harness permission controls or run that named step themselves. Keep their chosen restrictions; a refused call does not prove the OpenRig command failed. |
301
+ | Herdr or Ghostty installation is unavailable or declined | Herdr is optional for the view: `--window` uses plain tmux when Herdr is absent, and its install failure is a warning. On macOS, Terminal.app is the fallback when supported Ghostty is absent. An explicitly requested Ghostty install can fail setup; resolve that install or decline it with `--no-ghostty`, preserving earlier choices. Address separate required-tool or login failures. Existing cmux remains supported. |
302
+ | macOS asks for Automation access, or the window action is denied | The command asks the desktop terminal app to open a new surface. Let the person answer the system prompt. Read the error and inspect any new window before retrying an uncertain action; do not silently switch apps and open a duplicate. |
303
+ | No local display, or the configured daemon is remote | `--window` needs the daemon's desktop. An SSH shell or remote daemon address alone does not give the agent that desktop. Explain the limit and use the [manual](#talk-to-the-operator-in-any-terminal) or [SSH handoff](#headless-or-ssh-handoff) with the actual operator binding. |
304
+ | Herdr shows its introduction or agent-integration panel | These are Herdr's first-run panels. Follow the displayed controls: Return continues the intro and Esc closes the integration panel. Opening this view does not require installing Herdr's agent integrations or changing your Claude/Codex settings. |
305
+ | A saved layout is cramped in an 80×24 window | The default kernel view gives each role a full-width page. A custom saved `kernel` view still controls its own layout; adjust that saved view if needed. Changing or restarting the team is unnecessary. |
306
+ | The command returned, but visibility is unconfirmed | With authorized desktop tools, inspect the new window and a screenshot of its contents. A window listing alone proves only that a window exists. If the agent has only shell access, report what the command confirmed and ask the person to confirm the visible operator and that the dashboard and advisor tabs or windows are available. Do not report visual success without seeing it. |
307
+
308
+ After a failure, inspect any newly opened surface before retrying. A tmux failure
309
+ may name a newly created viewing session for inspection. Do not replace a failed
310
+ local desktop action with commands for the person to copy; finish or explain the
311
+ failed action. Close only the viewing window, or use **Ctrl-b, then d** in plain
312
+ tmux, to leave the underlying conversations running.
313
+
314
+ ### Existing provider workspaces
315
+
316
+ The existing provider-only commands remain available when a terminal is already
317
+ open. They create a workspace inside that provider, without opening an OS window:
166
318
 
167
319
  ```sh
168
320
  rig terminal views --json
169
321
  rig terminal open saved:kernel --provider herdr --json
170
- ```
171
-
172
- If herdr is unavailable, use a running cmux:
173
-
174
- ```sh
175
322
  rig terminal open saved:kernel --provider cmux --json
176
323
  ```
177
324
 
178
- These view opens create a fresh provider workspace. Inspect `opened`, `absent`,
179
- `degraded` and any notes, then confirm the new workspace actually shows the
180
- intended conversations and TUI. A partial result is not a complete handoff.
181
- For herdr, open or attach the actual herdr session in the new space and check
182
- what the person sees. A created workspace is not proof of a visible window;
183
- running the CLI in a new OS terminal window does not show that workspace there.
184
- Do not use `rig terminal open kernel` for this first view: it also includes the
185
- queue worker. A failed or uncertain open is not evidence that nothing opened;
186
- inspect the provider before retrying or falling back. If the shared TUI tile
187
- shows a shell, run `rig tui` **in that new tile**, not in the installing agent's
188
- terminal.
325
+ Use `rig terminal status --json` to inspect provider availability and liveness.
326
+ For the first desktop handoff, use `--window`. Only if the window cannot open,
327
+ `rig tui --shared` is the dashboard-only fallback, not the operator's conversation.
189
328
 
190
329
  ### Talk to the operator in any terminal
191
330
 
192
- No herdr or cmux is needed. On the kernel's host, run:
331
+ For an explicitly requested manual attachment, inspect the current bindings:
193
332
 
194
333
  ```sh
195
334
  rig ps --nodes --rig kernel --json
196
335
  ```
197
336
 
198
- Find the row whose `logicalId` is `operator.agent`. Replace the placeholder below
199
- with that row's `canonicalSessionName`, then run this in a **new terminal on the
200
- same host, as the same user**:
337
+ Find `logicalId: operator.agent` and use its `canonicalSessionName` in a new
338
+ terminal on the same host and account:
201
339
 
202
340
  ```sh
203
341
  env -u TMUX tmux attach-session -t '=<canonicalSessionName>'
204
342
  ```
205
343
 
206
- This shows the operator's existing conversation and lets you type your answer.
207
- The installing agent gives the person the command with the name already filled
208
- in; it does not attach in its own terminal. Over SSH, connect to the installation
209
- host first. Use **Ctrl-b, then d** to leave the conversation running and detach.
210
- If the operator has no binding or needs attention, use
211
- [Incomplete setup and restart](#incomplete-setup-and-restart).
344
+ The installing agent fills in the actual session name. This optional manual route
345
+ is separate from the first-install desktop action above.
212
346
 
213
347
  ### Plain terminal: a new viewing session
214
348
 
215
- After Yes, if neither provider is available, compose existing tmux attachments. These
216
- commands create only a new viewing session; they do not move or recreate the
217
- kernel's panes. Run them once on the kernel host after checking the bindings
218
- above. For a manual install, these prompts collect the three exact session names
219
- from that inventory. An installing agent sets the same variables from the
220
- observed values itself:
221
-
222
- ```sh
223
- printf 'canonicalSessionName for operator.human (TUI): '; read -r tui_session
224
- printf 'canonicalSessionName for advisor.lead: '; read -r advisor_session
225
- printf 'canonicalSessionName for operator.agent: '; read -r operator_session
226
- kernel_view="openrig-kernel-$(date +%s)-$$"
227
- kernel_pane=$(tmux new-session -d -P -F '#{pane_id}' -s "$kernel_view" -n kernel "env -u TMUX tmux attach-session -t '=$tui_session'")
228
- advisor_pane=$(tmux split-window -h -P -F '#{pane_id}' -t "$kernel_pane" "env -u TMUX tmux attach-session -t '=$advisor_session'")
229
- tmux split-window -h -t "$advisor_pane" "env -u TMUX tmux attach-session -t '=$operator_session'"
230
- ```
231
-
232
- Then arrange the view and print its exact attach command:
233
-
234
- ```sh
235
- tmux select-layout -t "$kernel_view:" even-horizontal
236
- printf "env -u TMUX tmux attach-session -t '=%s'\n" "$kernel_view"
237
- ```
238
-
239
- **On macOS**, the installer can open a new Terminal window with that view:
240
-
241
- ```sh
242
- osascript - "$kernel_view" <<'APPLESCRIPT'
243
- on run argv
244
- tell application "Terminal"
245
- do script "env -u TMUX tmux attach-session -t " & quoted form of ("=" & item 1 of argv)
246
- activate
247
- end tell
248
- end run
249
- APPLESCRIPT
250
- ```
251
-
252
- **On a Linux desktop with GNOME Terminal**, use its explicit new-window action:
253
-
254
- ```sh
255
- gnome-terminal --window -- env -u TMUX tmux attach-session -t "=$kernel_view"
256
- ```
257
-
258
- For another terminal app, use its **New Window** action and run the attach
259
- command printed above in that window. After Yes, the installing agent should
260
- perform the available new-window action.
261
- If desktop automation is unavailable or denied, say so and give the printed
262
- command to the person for a new terminal. Never silently reuse an existing
263
- window. Close the viewing window or use **Ctrl-b, then d** to detach; don't
264
- quit the native agents. A standalone `rig tui` in another new terminal is also
265
- available if the shared TUI binding is missing, with that limitation stated.
349
+ `rig terminal open saved:kernel --provider tmux --window --json` creates and opens
350
+ the same width-based OpenRig view layout, with the advisor in a separate window. It reuses
351
+ the daemon's composition and preserves existing sessions. The result names the viewing session. No pane names or shell
352
+ commands need to be assembled by the person.
266
353
 
267
354
  ### Headless or SSH handoff
268
355
 
269
- A provider running on the server does not establish a window on your desktop.
270
- When there is no display, say **“No visible terminal was opened here.”** Keep
271
- the exact attach command printed above. From a new terminal on your own
272
- machine, connect to the same host/account used for installation, then run that
273
- command. For example, this asks for the actual SSH destination and the viewing
274
- session name printed above; neither value is guessed:
275
-
276
- ```sh
277
- printf 'Existing SSH destination (user@host): '; read -r kernel_host
278
- printf 'Viewing session name (openrig-kernel-... printed above): '; read -r kernel_view
279
- ssh -t "$kernel_host" "env -u TMUX tmux attach-session -t '=$kernel_view'"
280
- ```
356
+ A provider running on the server opens no window on the person's desktop. From a new terminal window or tab on their
357
+ own machine, connect over SSH with the known host and account, then attach:
358
+ - **the operator's conversation**, with the command in
359
+ [Talk to the operator in any terminal](#talk-to-the-operator-in-any-terminal);
360
+ - **the Herdr view**, with the command that `rig terminal open saved:kernel --window` prints when it can't open a
361
+ window. It names the installed Herdr, wherever setup put it, and the daemon's socket. Then
362
+ `rig terminal open saved:kernel --provider herdr --json` selects the view in it.
281
363
 
282
- The installing agent gives you the **fully resolved** connection and attach
283
- command from the known installation host and created viewing session. If only
284
- an HTTP daemon address is known, ask for the SSH connection details instead of
285
- inventing them. No new account or credential provisioning is part of this
286
- handoff. Report which provider or fallback ran, which conversations and TUI
287
- were visible, and any headless or unverified branch.
364
+ No new account or credential provisioning is part of this. **Agents:** the `rigs` skill gives the person this as one
365
+ filled-in command.
288
366
 
289
367
  ### Installing-agent handoff
290
368
 
291
- Ask what the person wants to do and which project folder to use. Hand that goal
292
- to the ready kernel operator; do not implement the person's project yourself.
293
- Find the `operator.agent` row with `rig ps --nodes --rig kernel --json` and take
294
- its `canonicalSessionName`. Use that returned session name, not the logical ID:
369
+ The kernel's operator takes the person's goal and project folder, helps them choose and start a team, and hands the
370
+ goal to the team's lead. The person can type the goal in the operator's pane (attach with the command
371
+ [above](#talk-to-the-operator-in-any-terminal)), or the agent that installed OpenRig sends it. The `rig tui --shared`
372
+ fallback shows the dashboard, not this conversation. If the operator needs attention, use the
373
+ [recovery routes](#incomplete-setup-and-restart).
295
374
 
296
- ```sh
297
- rig send <canonicalSessionName> 'This is the agent that installed OpenRig. The person will answer in your pane. Goal: <goal>. Project folder: <absolute path>.'
298
- ```
375
+ **Agents:** the `rigs` skill's step 2 has the exact `rig send` to the operator and says when installation is finished.
299
376
 
300
- Alternatively, have the person type the goal and folder in the operator pane.
301
- Show where the operator answers in the existing view or give the exact attach
302
- command [above](#talk-to-the-operator-in-any-terminal), with the observed name
303
- filled in. `rig tui --shared` opens the dashboard, not this conversation.
304
- If the person gives the installing agent a goal later, forward the goal, folder
305
- and constraints with `rig send`; leave implementation with the operator's team.
306
- The operator helps the person choose and start a team, then hands the goal to its
307
- lead. Leave the project work with that team.
308
-
309
- Finish installation when the operator is ready and the person is talking to it;
310
- daemon health alone is not completion. Use the existing
311
- [recovery routes](#incomplete-setup-and-restart) if the operator needs attention.
312
- If the person chooses to talk later, keep that choice, leave the exact connection
313
- step, and say that the conversation handoff is still pending. SSH, headless use,
314
- and declining a desktop view remain valid background outcomes.
377
+ Stopping OpenRig keeps a team's work, and the branch a team makes is your
378
+ change: an agent tidying up says what's on it before offering to remove it. The
379
+ operator starts a team when you ask for one in its conversation, so an agent
380
+ reporting back checks `rig ps` or the team's tasks before saying a team started
381
+ on its own.
315
382
 
316
383
  ## Choose your first team
317
384
 
@@ -323,17 +390,19 @@ Review that choice before launching it.
323
390
  choices and their uses, in text and JSON. The reminder respects a team you already
324
391
  picked; previewing a spec does not launch it.
325
392
 
326
- | Team | Agents and runtimes | For |
393
+ | Team | Talk to | Agents and purpose |
327
394
  | --- | --- | --- |
328
- | `starter` | `dev-build` (Claude Code) and `dev-review` (Codex, pinned `gpt-6-astra`) | One bounded change |
329
- | `workshop` | A lead, a builder, QA and a reviewer | Ongoing work in one repository. It's a rig bundle, not built in: the operator installs it from its pinned listing |
330
- | `factory` | Seven: a lead, an advisor, build, QA, design and two independent reviewers | Sustained product work. It uses the most concurrent capacity |
395
+ | `starter` | `dev-build@starter` | `dev-build` (Claude Code) and `dev-review` (Codex, pinned `gpt-6-astra`) for one bounded change |
396
+ | `workshop` | `orch-lead@workshop` | A lead, builder, QA and reviewer for ongoing work in one repository. It's a rig bundle, not built in: the operator installs it from its pinned listing |
397
+ | `factory` | `orch-lead@factory` | Seven: a lead, advisor, build, QA, design and two independent reviewers for sustained product work. It uses the most concurrent capacity |
331
398
 
332
399
  As shipped, `starter` needs both Claude Code and Codex. With only one of them, the
333
400
  operator writes an adapted copy of the team for your providers and keeps its name;
334
401
  there are no per-provider variants. `first-project` is starter's old name and
335
402
  still starts it, so an old `rig up first-project` now starts a Claude builder and a
336
- Codex reviewer.
403
+ Codex reviewer. If you already have a rig named `first-project` (or `starter`),
404
+ `rig up first-project` refuses instead and names the `rig up <name> --existing`
405
+ command that brings that rig back.
337
406
 
338
407
  Claude seats use the native default model, as the Claude kernel does: OpenRig
339
408
  does not pass a model override. Read the selected harness's configured model and
@@ -371,7 +440,7 @@ Approval controls whether an action may run; the sandbox controls its filesystem
371
440
  and network access. Turning approvals off does not grant network access.
372
441
 
373
442
  After answering, watch for the command's result and the agent continuing. Read
374
- the corresponding queue row and transition from your ordinary terminal. If an
443
+ the corresponding task and its history from your ordinary terminal. If an
375
444
  operation timed out, read its result before asking for another attempt: it may
376
445
  already have taken effect. A delivered message or disappearing prompt alone is
377
446
  not progress. If startup is still waiting for context delivery, use **c** (or
@@ -382,7 +451,8 @@ start another seat to clear a prompt.
382
451
  Starter is a deliberately small starting point. For a bigger team, `factory` is
383
452
  built in (seven agents, using more concurrent capacity), and so are the specialist
384
453
  teams `code-review`, `research` and `pm`. Inspect `rig specs ls --kind rig` and
385
- `rig specs preview <name>` before selecting one. A team published on GitHub, such
454
+ `rig specs preview <name> --kind rig` before selecting one (`pm` is also an agent
455
+ spec's name, so a preview without `--kind rig` reports it as ambiguous). A team published on GitHub, such
386
456
  as workshop, installs from its folder link with `rig up <link>` (see
387
457
  [publishing a rig bundle](publishing-a-rig-bundle.md)).
388
458
 
@@ -415,9 +485,13 @@ Read the artifact, exercise its behavior, and check the candidate reviewed.
415
485
 
416
486
  ## Share the dashboard and return to it
417
487
 
418
- ```sh
419
- rig tui --shared
420
- ```
488
+ After install, and whenever the person wants their agents again, the installing agent runs
489
+ `rig terminal open saved:kernel --window` and checks the result. It does not
490
+ finish by suggesting a dashboard command for the person to type.
491
+
492
+ **Only if that window cannot open**, `rig tui --shared` is the dashboard-only
493
+ fallback. Explain the window failure and help with this fallback if chosen;
494
+ it does not show the advisor or operator conversation.
421
495
 
422
496
  A fresh kernel runs the ordinary TUI in its existing `operator-human` terminal.
423
497
  This command attaches another client to that terminal. **Ctrl-b, then d**
@@ -478,6 +552,32 @@ with `rig grow` and no YAML, or optionally author a custom rig. It covers
478
552
  new-seat context/work ownership, concurrency costs and saving the expanded spec.
479
553
  This guide remains the short first-use path.
480
554
 
555
+ ## Stop your teams
556
+
557
+ `rig down <rig-name>` ends that rig's agent sessions and work in progress.
558
+ Read `rig ps --nodes --rig <rig-name>` first so you can see who will stop;
559
+ `rig down` also prints the rig's recorded agent sessions and their activity
560
+ before stopping them.
561
+ For example, to stop starter:
562
+
563
+ ```sh
564
+ rig down starter
565
+ ```
566
+
567
+ For "stop everything", list the rigs with `rig ps --json` and run `rig down`
568
+ for each one you want stopped. Include `kernel` last if you want its operator,
569
+ advisor and queue worker stopped too; its operator cannot continue helping
570
+ after its own session ends. Check each result before calling the shutdown done.
571
+
572
+ `rig daemon stop` stops only the background service and preserves agent tmux
573
+ sessions. If you also want that service stopped, run it after stopping the rigs.
574
+ If the operator is handling this full shutdown and kernel is included, it gives you this
575
+ last step before running `rig down kernel`: once kernel is down, run
576
+ `rig daemon stop` in your own shell and check the result. The operator's session
577
+ ends with kernel, so it cannot run that final command for you afterwards.
578
+ If the daemon is already stopped, use `rig daemon start --no-kernel` to restore
579
+ the lifecycle API without booting a new kernel, then stop the remaining rigs.
580
+
481
581
  ## Incomplete setup and restart
482
582
 
483
583
  | Observation | Next action |
@@ -486,13 +586,44 @@ This guide remains the short first-use path.
486
586
  | "Startup attention" or "Startup details" names a prompt | Answer the login, trust or bypass prompt in that seat's terminal, then run the `rig seat continue <seat>` it shows. |
487
587
  | "Readiness timeout after 30s — harness did not become interactive" | The harness took longer than the readiness window. Raise it for the next launch with `rig config set runtime.readiness_timeout_seconds <1-600>`, then relaunch that seat. |
488
588
  | Daemon is healthy, kernel is still starting | Read `rig status` and `rig ps --nodes --rig kernel`; kernel readiness is separate. |
589
+ | Kernel seats fail within a second of the first start, and tmux reports "server exited unexpectedly" | Check that your tmux can capture a pane, then start the failed seats again; see the tmux check below this table. |
489
590
  | Shared terminal is absent | Inspect the existing kernel binding and recovery state; use standalone `rig tui` while resolving it. |
490
- | Viewing terminal was closed | Reattach with `rig tui --shared`; do not relaunch the team. |
591
+ | Viewing terminal was closed | Open the conversations again with `rig terminal open saved:kernel --window`; `rig tui --shared` is only the dashboard fallback if that window cannot open. Do not relaunch the team. |
491
592
  | Daemon restarted but tmux survived | Re-read `rig status` and the existing queue; a daemon restart is not a fresh project. |
492
- | Host reboot lost tmux sessions | Open `rig`, start the daemon if needed, and select the existing rig and seats. Resume is the default; a fresh conversation needs a separate decision. |
593
+ | Host reboot lost tmux sessions | Open `rig`, start the daemon if needed (press **S** if it opens on the work views), and select the existing rig and seats. Resume is the default; a fresh conversation needs a separate decision. |
493
594
  | Launch reports no usable snapshot | Inspect the existing rig and retained project files, then follow the same-seat recovery below. |
494
595
  | Work is waiting on a prompt or decision | Read the row, transition and named prompt; preserve the obligation until the missing decision arrives. |
495
596
 
597
+ **When the kernel's seats all fail at the first start.** A report on Oracle Linux 10
598
+ ([#980](https://github.com/mvschwarz/openrig/issues/980)) traced this to the distribution's packaged tmux, whose
599
+ `tmux -V` prints `next-3.4`: its server exited on every `capture-pane -p`, also outside OpenRig. To check your tmux on
600
+ a throwaway socket, without touching your own sessions:
601
+
602
+ ```sh
603
+ tmux -L "openrig-check-$$" -f /dev/null new-session -d -s check
604
+ tmux -L "openrig-check-$$" capture-pane -p -t check >/dev/null && echo "capture-pane works"
605
+ tmux -L "openrig-check-$$" kill-server
606
+ ```
607
+
608
+ If the second command fails because the server exited, put a tmux that passes this check first on your `PATH`; the
609
+ reporter built tmux 3.5a into `/usr/local/bin`. Then, from a shell where `tmux -V` shows that tmux, restart the daemon
610
+ and start the failed seats again, as the reporter did:
611
+
612
+ ```sh
613
+ rig daemon stop
614
+ rig start --last
615
+ rig ps --nodes --rig kernel --full # the failed seats show "failed" under STARTUP
616
+ rig up kernel --existing --fresh <failed seats> --yes
617
+ ```
618
+
619
+ This recovery is for the case the reporter hit: the kernel's seats failed and none of them is still running.
620
+ `rig up kernel --existing` refuses a kernel that still has a live session. Name the failed seats by their logical
621
+ IDs, for example `advisor.lead operator.agent operator.human queue.worker` when all four failed. `--fresh` starts a
622
+ new conversation for each seat you name. Seats you don't name follow their normal recovery policy and may remain
623
+ awaiting a decision if their old conversation can't be resumed. A later `rig daemon start` doesn't retry the failed
624
+ seats by itself: once a kernel exists, startup skips the built-in kernel boot, and `rig status` then reads
625
+ `Kernel: skipped` whatever its seats' state, so check `rig ps --nodes --rig kernel --full`.
626
+
496
627
  If a snapshot is unavailable, the startup view checks the selected seat's
497
628
  retained startup source and authoritative occupant relation. It reports a
498
629
  missing or ambiguous source instead of selecting an arbitrary historical row.
@@ -502,8 +633,10 @@ queue, project notes and observed result before continuing work.
502
633
  `rig setup` prints the short form of this path after ready, incomplete and dry-run
503
634
  results; JSON output includes it as `nextSteps`. This guidance does not mean the
504
635
  kernel is ready: retain any named failures, check the actual seat state, then
505
- offer `rig terminal open saved:kernel`. If the view cannot open, relay its printed
506
- operator attach command in full. Hand the goal and project folder to the ready
636
+ offer `rig terminal open saved:kernel --window`. If the person chooses a manual
637
+ attachment after a failure, derive the exact command from the current operator
638
+ binding [above](#talk-to-the-operator-in-any-terminal); not every failure prints
639
+ one. Hand the goal and project folder to the ready
507
640
  operator rather than implementing the project during installation. `rig status`
508
641
  points back here while no rigs are registered.
509
642
 
@@ -524,8 +657,9 @@ Local reading uses this machine's configured workspace paths and file allowlist,
524
657
  including when the selected daemon address is remote. It shows disk provenance,
525
658
  missing or denied sources, binary files and the 1 MiB text truncation boundary.
526
659
  These disk snapshots may change after reading and do not supply live queue,
527
- execution or topology state. Live views load after a confirmed connection and
528
- deliberate entry; a stalled live read does not prevent Help or local reading.
660
+ execution or topology state. Once connected, the TUI opens the ordinary work
661
+ views by itself unless you have already pressed a key; **S** returns to startup.
662
+ A stalled live read does not prevent Help or local reading.
529
663
  When terminal transport is unavailable, **t** starts the empty terminal service
530
664
  so recovery choices can be inspected. It launches no seats.
531
665
 
@@ -547,7 +681,7 @@ starts the daemon with kernel auto-boot disabled so the user can select seats:
547
681
 
548
682
  - `rig setup` installs/verifies the runtime; it does not start the daemon or the
549
683
  kernel.
550
- - Starting the daemon (`rig daemon start`, or implicitly via `rig up`) is what
684
+ - Starting the daemon (`rig daemon start`, or implicitly via `rig up` or `rig context add`) is what
551
685
  boots the kernel rig in the background.
552
686
  - Starting it from bare `rig` prepares no agents automatically. The TUI offers
553
687
  kernel setup and individual seat selection after connecting.
@@ -579,22 +713,26 @@ shows a small reviewed example and how to retain custody through a genuine wait.
579
713
 
580
714
  ## Have your agent configure permissions
581
715
 
582
- Before team launch, your agent asks once, unless you already made an explicit
583
- choice for these harnesses and this scope:
716
+ For a team with no permission policy, your agent recommends keeping the
717
+ [team default](rig-spec.md#team-launch-defaults), unless you already made an
718
+ explicit choice for these harnesses and this scope. It offers additional
719
+ remembered allowances only if you want them:
584
720
 
585
- > Allow your agents to run OpenRig commands without repeated permission prompts?
586
- > **Yes — recommended** / **No — keep prompts**
721
+ > Remember these selected OpenRig commands in your native settings for this
722
+ > project? This is separate from the team launch default; stricter rules and
723
+ > Claude lifecycle asks remain. **Yes / No — keep the team default**
587
724
 
588
- This covers the entire `rig` family, including starting/stopping agents,
589
- configuration and launching processes. It is not global YOLO or permission to
590
- invent work. The scope is your personal settings for this project unless you
591
- explicitly choose user-wide sessions, which can affect your other projects.
725
+ A remembered allowance can cover the whole `rig` family, but on Claude team
726
+ seats lifecycle commands such as `rig up` and `rig down` still ask. It is not
727
+ global YOLO or permission to invent work. The scope is your personal settings
728
+ for this project unless you explicitly choose user-wide sessions, which can
729
+ affect your other projects.
592
730
 
593
731
  On an actual **Yes**, the agent backs up the relevant files, adds the existing
594
732
  native rules without duplicates, and preserves stricter rules and unrelated
595
733
  settings. It checks bare and actual absolute-path invocations, rule loading and
596
734
  repeated harmless reads in the target conversation. No or no answer leaves
597
- settings alone and continues with existing prompts. Unsupported scope or a
735
+ settings alone and keeps the team default. Unsupported scope or a
598
736
  managed restriction is reported; it is not permission to grant broader access.
599
737
 
600
738
  The agent remembers an explicit choice, scope and exact additions in existing
@@ -675,7 +813,7 @@ environment-only `OPENRIG_YOLO=1` path remains sandbox-only when no resolved
675
813
  policy is present. A standalone `codex --yolo` command is not an OpenRig setting.
676
814
  At full access, Codex can show its full-access and GPT-5.1 migration notices at
677
815
  first launch. When OpenRig itself selects full bypass for the seat (`builtin:yolo`,
678
- or an explicit seat `full_bypass`), `rig up <spec> --non-interruptive` hides them
816
+ a `full_bypass` flag policy, or an explicit seat `full_bypass`), `rig up <spec> --non-interruptive` hides them
679
817
  with per-launch `-c` overrides (see [non-interruptive mode](non-interruptive-mode.md)).
680
818
  Full access chosen inside a native Codex profile, with `permission_policy` absent or
681
819
  `none`, doesn't qualify.
@@ -706,7 +844,9 @@ rules/hooks. A later lifecycle action remains a separate decision. The explicit
706
844
  seat choice overrides the inherited member/rig policy; `--mode inherit` clears
707
845
  it without changing that inherited policy. `floor` selects the existing normal
708
846
  launch path (including a Codex named profile when configured); it does not
709
- rewrite a native profile or force its approval settings.
847
+ rewrite a native profile or force its approval settings. An explicit `floor`
848
+ also replaces any team or kernel launch default with the plain floor flags;
849
+ `inherit` brings the default back.
710
850
 
711
851
  Codex and Claude accept `floor` and `full_bypass`. Additional Claude native modes,
712
852
  including `auto`, require support advertised by the managed executable's help.
@@ -745,8 +885,11 @@ typing guard are separate controls.
745
885
 
746
886
  In the shipped `starter`, `dev-build` runs Claude Code. For a **Claude Code** seat,
747
887
  OpenRig normally passes `--permission-mode acceptEdits`: edits can proceed, while
748
- other actions follow native rules and prompts. It does not add a global
749
- `Bash(rig:*)` allowance. To explicitly select the bypass launch flag for that rig:
888
+ other actions follow native rules and prompts. For a seat with no permission
889
+ policy or per-seat choice it also passes the per-launch team default (`--settings` allowing ordinary
890
+ `rig` commands, project reads and common tests, with a session hook asking for
891
+ lifecycle commands while allowing literal help forms such as `rig down --help`);
892
+ personal and project rules still apply. Nothing is written to your settings files. To explicitly select the bypass launch flag for that rig:
750
893
 
751
894
  ```sh
752
895
  rig policy apply yolo --spec ./my-claude-rig/rig.yaml
@@ -766,11 +909,12 @@ which accepts it with a launch flag and writes nothing to your settings; see
766
909
  [non-interruptive mode](non-interruptive-mode.md).
767
910
 
768
911
  `rig policy apply auto --spec ./my-claude-rig/rig.yaml` (also `rig setup --policy
769
- auto`) records `builtin:auto` instead: Claude seats launch with
912
+ auto --spec ./my-claude-rig/rig.yaml`) records `builtin:auto` instead: Claude seats launch with
770
913
  `--permission-mode auto`, and Codex and Pi seats, which have no auto mode, launch
771
- at the floor. To return
772
- future launches to OpenRig's `acceptEdits` mode, use `rig policy apply none --spec
773
- ./my-claude-rig/rig.yaml` and remove any member-level bypass override. Native rules
914
+ at the floor. To return future launches to the team default, remove
915
+ `permission_policy` from the spec along with any member-level bypass override.
916
+ `rig policy apply none --spec ./my-claude-rig/rig.yaml` instead records plain
917
+ `acceptEdits` without the team allowances. Native rules
774
918
  and managed restrictions still matter; this flag is not a promise about sandbox
775
919
  or account access. See [Claude permissions](https://code.claude.com/docs/en/permissions).
776
920