@openrig/cli 0.6.12 → 0.6.14
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.
- package/README.md +69 -14
- package/daemon/assets/plugins/openrig-core/.claude-plugin/plugin.json +1 -1
- package/daemon/assets/plugins/openrig-core/.codex-plugin/plugin.json +1 -1
- package/daemon/assets/plugins/openrig-core/README.md +9 -2
- package/daemon/assets/plugins/openrig-core/hooks/scripts/activity-relay.cjs +25 -9
- package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus.cjs +7 -4
- package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +5 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +11 -3
- package/daemon/assets/plugins/openrig-core/skills/refocusing/scripts/trace-to-root.py +73 -48
- package/daemon/assets/skills/rigs/SKILL.md +8 -4
- package/daemon/context-packs/help/manifest.yaml +1 -1
- package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
- package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +76 -16
- package/daemon/context-packs/reference/getting-started.md +135 -28
- package/daemon/context-packs/reference/manifest.yaml +1 -1
- package/daemon/context-packs/reference/rig-spec.md +5 -5
- package/daemon/context-packs/reference/whats-new.md +65 -167
- package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
- package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
- package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
- package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-software-factory/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
- package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
- package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
- package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
- package/daemon/context-packs/skills/mission-slice-sop/SKILL.md +5 -0
- package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
- package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
- package/daemon/context-packs/skills/openrig-user/SKILL.md +11 -3
- package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
- package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
- package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
- package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
- package/daemon/context-packs/skills/refocusing/scripts/trace-to-root.py +73 -48
- package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
- package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
- package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
- package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
- package/daemon/context-packs/world-example/manifest.yaml +1 -1
- package/daemon/context-packs/world-public/manifest.yaml +1 -1
- package/daemon/dist/adapters/claude-code-adapter.d.ts +9 -1
- package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/claude-code-adapter.js +110 -52
- package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.js +47 -6
- package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
- package/daemon/dist/adapters/pi-resume.d.ts +1 -1
- package/daemon/dist/adapters/pi-resume.d.ts.map +1 -1
- package/daemon/dist/adapters/pi-resume.js +4 -1
- package/daemon/dist/adapters/pi-resume.js.map +1 -1
- package/daemon/dist/adapters/pi-runner-protocol.d.ts +9 -0
- package/daemon/dist/adapters/pi-runner-protocol.d.ts.map +1 -1
- package/daemon/dist/adapters/pi-runner-protocol.js +16 -0
- package/daemon/dist/adapters/pi-runner-protocol.js.map +1 -1
- package/daemon/dist/adapters/pi-runner.d.ts +5 -2
- package/daemon/dist/adapters/pi-runner.d.ts.map +1 -1
- package/daemon/dist/adapters/pi-runner.js +72 -15
- package/daemon/dist/adapters/pi-runner.js.map +1 -1
- package/daemon/dist/adapters/pi-runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/pi-runtime-adapter.js +2 -0
- package/daemon/dist/adapters/pi-runtime-adapter.js.map +1 -1
- package/daemon/dist/adapters/stub-compaction.d.ts +1 -0
- package/daemon/dist/adapters/stub-compaction.d.ts.map +1 -1
- package/daemon/dist/adapters/stub-compaction.js +2 -0
- package/daemon/dist/adapters/stub-compaction.js.map +1 -1
- package/daemon/dist/adapters/stub-refocus.d.ts +6 -0
- package/daemon/dist/adapters/stub-refocus.d.ts.map +1 -0
- package/daemon/dist/adapters/stub-refocus.js +22 -0
- package/daemon/dist/adapters/stub-refocus.js.map +1 -0
- package/daemon/dist/adapters/stub-runner.d.ts +6 -0
- package/daemon/dist/adapters/stub-runner.d.ts.map +1 -1
- package/daemon/dist/adapters/stub-runner.js +18 -1
- package/daemon/dist/adapters/stub-runner.js.map +1 -1
- package/daemon/dist/adapters/stub-script.d.ts +2 -2
- package/daemon/dist/adapters/stub-script.d.ts.map +1 -1
- package/daemon/dist/adapters/stub-script.js +2 -2
- package/daemon/dist/adapters/stub-script.js.map +1 -1
- package/daemon/dist/adapters/tmux.js +1 -1
- package/daemon/dist/adapters/tmux.js.map +1 -1
- package/daemon/dist/build-info.js +3 -3
- package/daemon/dist/db/all-migrations.d.ts.map +1 -1
- package/daemon/dist/db/all-migrations.js +2 -0
- package/daemon/dist/db/all-migrations.js.map +1 -1
- package/daemon/dist/db/migrations/117_provider_account_readings.d.ts +3 -0
- package/daemon/dist/db/migrations/117_provider_account_readings.d.ts.map +1 -0
- package/daemon/dist/db/migrations/117_provider_account_readings.js +32 -0
- package/daemon/dist/db/migrations/117_provider_account_readings.js.map +1 -0
- package/daemon/dist/domain/claim-service.d.ts +9 -18
- package/daemon/dist/domain/claim-service.d.ts.map +1 -1
- package/daemon/dist/domain/claim-service.js +83 -0
- package/daemon/dist/domain/claim-service.js.map +1 -1
- package/daemon/dist/domain/claude-activity-hooks.d.ts +6 -0
- package/daemon/dist/domain/claude-activity-hooks.d.ts.map +1 -1
- package/daemon/dist/domain/claude-activity-hooks.js +19 -1
- package/daemon/dist/domain/claude-activity-hooks.js.map +1 -1
- package/daemon/dist/domain/claude-compaction-enforcer.d.ts +2 -2
- package/daemon/dist/domain/claude-compaction-enforcer.d.ts.map +1 -1
- package/daemon/dist/domain/claude-compaction-enforcer.js +20 -14
- package/daemon/dist/domain/claude-compaction-enforcer.js.map +1 -1
- package/daemon/dist/domain/claude-core-plugin-env.d.ts +2 -0
- package/daemon/dist/domain/claude-core-plugin-env.d.ts.map +1 -1
- package/daemon/dist/domain/claude-core-plugin-env.js +6 -2
- package/daemon/dist/domain/claude-core-plugin-env.js.map +1 -1
- package/daemon/dist/domain/claude-managed-launch.d.ts +5 -0
- package/daemon/dist/domain/claude-managed-launch.d.ts.map +1 -1
- package/daemon/dist/domain/claude-managed-launch.js +48 -7
- package/daemon/dist/domain/claude-managed-launch.js.map +1 -1
- package/daemon/dist/domain/claude-mcp-menu.d.ts +5 -0
- package/daemon/dist/domain/claude-mcp-menu.d.ts.map +1 -0
- package/daemon/dist/domain/claude-mcp-menu.js +25 -0
- package/daemon/dist/domain/claude-mcp-menu.js.map +1 -0
- package/daemon/dist/domain/fresh-occupant-relation.d.ts +7 -0
- package/daemon/dist/domain/fresh-occupant-relation.d.ts.map +1 -1
- package/daemon/dist/domain/fresh-occupant-relation.js +45 -0
- package/daemon/dist/domain/fresh-occupant-relation.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/channel-recovery.d.ts +14 -2
- package/daemon/dist/domain/gateway/slack/channel-recovery.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/channel-recovery.js +128 -89
- package/daemon/dist/domain/gateway/slack/channel-recovery.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/inbound.d.ts +4 -0
- package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/inbound.js +5 -3
- package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/recovery-budget.d.ts +24 -0
- package/daemon/dist/domain/gateway/slack/recovery-budget.d.ts.map +1 -0
- package/daemon/dist/domain/gateway/slack/recovery-budget.js +18 -0
- package/daemon/dist/domain/gateway/slack/recovery-budget.js.map +1 -0
- package/daemon/dist/domain/gateway/slack/slack-recovery.d.ts +104 -0
- package/daemon/dist/domain/gateway/slack/slack-recovery.d.ts.map +1 -0
- package/daemon/dist/domain/gateway/slack/slack-recovery.js +236 -0
- package/daemon/dist/domain/gateway/slack/slack-recovery.js.map +1 -0
- package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-subsystem.js +29 -6
- package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/state-store.d.ts +34 -0
- package/daemon/dist/domain/gateway/slack/state-store.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/state-store.js +67 -0
- package/daemon/dist/domain/gateway/slack/state-store.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/thread-recovery.d.ts +37 -0
- package/daemon/dist/domain/gateway/slack/thread-recovery.d.ts.map +1 -0
- package/daemon/dist/domain/gateway/slack/thread-recovery.js +173 -0
- package/daemon/dist/domain/gateway/slack/thread-recovery.js.map +1 -0
- package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +8 -0
- package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/thread-seat-map.js +11 -0
- package/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -1
- package/daemon/dist/domain/model-divergence/current-generation-record.d.ts +6 -1
- package/daemon/dist/domain/model-divergence/current-generation-record.d.ts.map +1 -1
- package/daemon/dist/domain/model-divergence/current-generation-record.js +4 -1
- package/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -1
- package/daemon/dist/domain/model-divergence/current-model-reader.d.ts +74 -0
- package/daemon/dist/domain/model-divergence/current-model-reader.d.ts.map +1 -0
- package/daemon/dist/domain/model-divergence/current-model-reader.js +246 -0
- package/daemon/dist/domain/model-divergence/current-model-reader.js.map +1 -0
- package/daemon/dist/domain/model-divergence/effective-model-readers.d.ts +18 -0
- package/daemon/dist/domain/model-divergence/effective-model-readers.d.ts.map +1 -1
- package/daemon/dist/domain/model-divergence/effective-model-readers.js +24 -8
- package/daemon/dist/domain/model-divergence/effective-model-readers.js.map +1 -1
- package/daemon/dist/domain/native-process-lineage.d.ts +8 -1
- package/daemon/dist/domain/native-process-lineage.d.ts.map +1 -1
- package/daemon/dist/domain/native-process-lineage.js +40 -26
- package/daemon/dist/domain/native-process-lineage.js.map +1 -1
- package/daemon/dist/domain/native-resume-probe.d.ts.map +1 -1
- package/daemon/dist/domain/native-resume-probe.js +34 -8
- package/daemon/dist/domain/native-resume-probe.js.map +1 -1
- package/daemon/dist/domain/node-inventory.d.ts +1 -1
- package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
- package/daemon/dist/domain/node-inventory.js +84 -18
- package/daemon/dist/domain/node-inventory.js.map +1 -1
- package/daemon/dist/domain/process-census.d.ts +1 -1
- package/daemon/dist/domain/process-census.d.ts.map +1 -1
- package/daemon/dist/domain/process-table.d.ts +26 -0
- package/daemon/dist/domain/process-table.d.ts.map +1 -0
- package/daemon/dist/domain/process-table.js +185 -0
- package/daemon/dist/domain/process-table.js.map +1 -0
- package/daemon/dist/domain/profile-resolver.d.ts +8 -0
- package/daemon/dist/domain/profile-resolver.d.ts.map +1 -1
- package/daemon/dist/domain/profile-resolver.js +11 -0
- package/daemon/dist/domain/profile-resolver.js.map +1 -1
- package/daemon/dist/domain/projection-planner.js +1 -1
- package/daemon/dist/domain/projection-planner.js.map +1 -1
- package/daemon/dist/domain/provider/claude-usage-windows.d.ts +3 -1
- package/daemon/dist/domain/provider/claude-usage-windows.d.ts.map +1 -1
- package/daemon/dist/domain/provider/claude-usage-windows.js +48 -3
- package/daemon/dist/domain/provider/claude-usage-windows.js.map +1 -1
- package/daemon/dist/domain/provider/codex-usage-reader.d.ts +4 -1
- package/daemon/dist/domain/provider/codex-usage-reader.d.ts.map +1 -1
- package/daemon/dist/domain/provider/codex-usage-reader.js +3 -0
- package/daemon/dist/domain/provider/codex-usage-reader.js.map +1 -1
- package/daemon/dist/domain/provider/codex-usage-windows.d.ts +3 -1
- package/daemon/dist/domain/provider/codex-usage-windows.d.ts.map +1 -1
- package/daemon/dist/domain/provider/codex-usage-windows.js +1 -0
- package/daemon/dist/domain/provider/codex-usage-windows.js.map +1 -1
- package/daemon/dist/domain/provider/provider-account-readings.d.ts +42 -0
- package/daemon/dist/domain/provider/provider-account-readings.d.ts.map +1 -0
- package/daemon/dist/domain/provider/provider-account-readings.js +132 -0
- package/daemon/dist/domain/provider/provider-account-readings.js.map +1 -0
- package/daemon/dist/domain/provider/provider-types.d.ts +29 -0
- package/daemon/dist/domain/provider/provider-types.d.ts.map +1 -1
- package/daemon/dist/domain/provider/usage-across-hosts.d.ts.map +1 -1
- package/daemon/dist/domain/provider/usage-across-hosts.js +6 -0
- package/daemon/dist/domain/provider/usage-across-hosts.js.map +1 -1
- package/daemon/dist/domain/provider/usage-windows.d.ts +25 -0
- package/daemon/dist/domain/provider/usage-windows.d.ts.map +1 -1
- package/daemon/dist/domain/provider/usage-windows.js +100 -4
- package/daemon/dist/domain/provider/usage-windows.js.map +1 -1
- package/daemon/dist/domain/queue-repository.d.ts +23 -0
- package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
- package/daemon/dist/domain/queue-repository.js +59 -1
- package/daemon/dist/domain/queue-repository.js.map +1 -1
- package/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -1
- package/daemon/dist/domain/queue-stuck-sweep.js +47 -4
- package/daemon/dist/domain/queue-stuck-sweep.js.map +1 -1
- package/daemon/dist/domain/restore-check-service.d.ts +10 -0
- package/daemon/dist/domain/restore-check-service.d.ts.map +1 -1
- package/daemon/dist/domain/restore-check-service.js +73 -10
- package/daemon/dist/domain/restore-check-service.js.map +1 -1
- package/daemon/dist/domain/restore-guidance.d.ts +6 -0
- package/daemon/dist/domain/restore-guidance.d.ts.map +1 -1
- package/daemon/dist/domain/restore-guidance.js +21 -5
- package/daemon/dist/domain/restore-guidance.js.map +1 -1
- package/daemon/dist/domain/restore-orchestrator.js +1 -1
- package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
- package/daemon/dist/domain/resume-metadata-refresher.d.ts.map +1 -1
- package/daemon/dist/domain/resume-metadata-refresher.js +6 -29
- package/daemon/dist/domain/resume-metadata-refresher.js.map +1 -1
- package/daemon/dist/domain/rig-repository.d.ts +3 -0
- package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
- package/daemon/dist/domain/rig-repository.js +6 -0
- package/daemon/dist/domain/rig-repository.js.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.js +4 -2
- package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
- package/daemon/dist/domain/rigspec-preflight.d.ts +4 -0
- package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-preflight.js +12 -2
- package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
- package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-schema.js +11 -0
- package/daemon/dist/domain/rigspec-schema.js.map +1 -1
- package/daemon/dist/domain/runtime-adapter.d.ts +13 -0
- package/daemon/dist/domain/runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/domain/runtime-adapter.js.map +1 -1
- package/daemon/dist/domain/seat-attention-reconciler.d.ts.map +1 -1
- package/daemon/dist/domain/seat-attention-reconciler.js +15 -1
- package/daemon/dist/domain/seat-attention-reconciler.js.map +1 -1
- package/daemon/dist/domain/seat-cwd-preparation.d.ts +22 -0
- package/daemon/dist/domain/seat-cwd-preparation.d.ts.map +1 -0
- package/daemon/dist/domain/seat-cwd-preparation.js +107 -0
- package/daemon/dist/domain/seat-cwd-preparation.js.map +1 -0
- package/daemon/dist/domain/seat-effort.d.ts +4 -3
- package/daemon/dist/domain/seat-effort.d.ts.map +1 -1
- package/daemon/dist/domain/seat-effort.js +21 -3
- package/daemon/dist/domain/seat-effort.js.map +1 -1
- package/daemon/dist/domain/seat-lifecycle-service.d.ts +36 -2
- package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-lifecycle-service.js +206 -15
- package/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
- package/daemon/dist/domain/seat-restart-in-place.d.ts +14 -0
- package/daemon/dist/domain/seat-restart-in-place.d.ts.map +1 -1
- package/daemon/dist/domain/seat-restart-in-place.js +59 -3
- package/daemon/dist/domain/seat-restart-in-place.js.map +1 -1
- package/daemon/dist/domain/seat-status-service.d.ts +2 -0
- package/daemon/dist/domain/seat-status-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-status-service.js +1 -0
- package/daemon/dist/domain/seat-status-service.js.map +1 -1
- package/daemon/dist/domain/seat-structural-activity-service.d.ts +7 -1
- package/daemon/dist/domain/seat-structural-activity-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-structural-activity-service.js +9 -3
- package/daemon/dist/domain/seat-structural-activity-service.js.map +1 -1
- package/daemon/dist/domain/session-name.d.ts +8 -0
- package/daemon/dist/domain/session-name.d.ts.map +1 -1
- package/daemon/dist/domain/session-name.js +12 -0
- package/daemon/dist/domain/session-name.js.map +1 -1
- package/daemon/dist/domain/session-transport.d.ts +78 -3
- package/daemon/dist/domain/session-transport.d.ts.map +1 -1
- package/daemon/dist/domain/session-transport.js +306 -15
- package/daemon/dist/domain/session-transport.js.map +1 -1
- package/daemon/dist/domain/successor-session-launcher.js +1 -1
- package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
- package/daemon/dist/domain/topology-converge.d.ts +1 -0
- package/daemon/dist/domain/topology-converge.d.ts.map +1 -1
- package/daemon/dist/domain/topology-converge.js +1 -0
- package/daemon/dist/domain/topology-converge.js.map +1 -1
- package/daemon/dist/domain/types.d.ts +14 -0
- package/daemon/dist/domain/types.d.ts.map +1 -1
- package/daemon/dist/domain/types.js.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.js +4 -0
- package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
- package/daemon/dist/domain/wake-resolve-service.d.ts +1 -0
- package/daemon/dist/domain/wake-resolve-service.d.ts.map +1 -1
- package/daemon/dist/domain/wake-resolve-service.js +10 -0
- package/daemon/dist/domain/wake-resolve-service.js.map +1 -1
- package/daemon/dist/domain/wake-resolver.d.ts.map +1 -1
- package/daemon/dist/domain/wake-resolver.js +7 -0
- package/daemon/dist/domain/wake-resolver.js.map +1 -1
- package/daemon/dist/domain/watchdog-delivery.d.ts +29 -0
- package/daemon/dist/domain/watchdog-delivery.d.ts.map +1 -0
- package/daemon/dist/domain/watchdog-delivery.js +113 -0
- package/daemon/dist/domain/watchdog-delivery.js.map +1 -0
- package/daemon/dist/domain/watchdog-policy-engine.d.ts +60 -1
- package/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
- package/daemon/dist/domain/watchdog-policy-engine.js +154 -28
- package/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
- package/daemon/dist/domain/watchdog-scheduler.d.ts.map +1 -1
- package/daemon/dist/domain/watchdog-scheduler.js +6 -1
- package/daemon/dist/domain/watchdog-scheduler.js.map +1 -1
- package/daemon/dist/domain/workflow-instance-store.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-instance-store.js +6 -2
- package/daemon/dist/domain/workflow-instance-store.js.map +1 -1
- package/daemon/dist/routes/attention.d.ts.map +1 -1
- package/daemon/dist/routes/attention.js +41 -1
- package/daemon/dist/routes/attention.js.map +1 -1
- package/daemon/dist/routes/compaction.js +1 -1
- package/daemon/dist/routes/compaction.js.map +1 -1
- package/daemon/dist/routes/queue.d.ts.map +1 -1
- package/daemon/dist/routes/queue.js +3 -1
- package/daemon/dist/routes/queue.js.map +1 -1
- package/daemon/dist/routes/restore-check.d.ts.map +1 -1
- package/daemon/dist/routes/restore-check.js +19 -1
- package/daemon/dist/routes/restore-check.js.map +1 -1
- package/daemon/dist/routes/seat.d.ts.map +1 -1
- package/daemon/dist/routes/seat.js +15 -2
- package/daemon/dist/routes/seat.js.map +1 -1
- package/daemon/dist/routes/sessions.d.ts.map +1 -1
- package/daemon/dist/routes/sessions.js +42 -1
- package/daemon/dist/routes/sessions.js.map +1 -1
- package/daemon/dist/routes/transport.d.ts.map +1 -1
- package/daemon/dist/routes/transport.js +13 -2
- package/daemon/dist/routes/transport.js.map +1 -1
- package/daemon/dist/server.d.ts +1 -0
- package/daemon/dist/server.d.ts.map +1 -1
- package/daemon/dist/server.js +7 -4
- package/daemon/dist/server.js.map +1 -1
- package/daemon/dist/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +41 -118
- package/daemon/dist/startup.js.map +1 -1
- package/daemon/docs/reference/agent-spec.md +1 -1
- package/daemon/docs/reference/agent-startup-guide.md +84 -0
- package/daemon/docs/reference/getting-started.md +135 -28
- package/daemon/docs/reference/publishing-a-rig-bundle.md +5 -2
- package/daemon/docs/reference/quickstart.md +187 -0
- package/daemon/docs/reference/refocus-channel.md +11 -1
- package/daemon/docs/reference/rig-spec.md +5 -5
- package/daemon/docs/reference/rosters.md +29 -2
- package/daemon/docs/reference/slack-app-setup.md +47 -17
- package/daemon/docs/reference/whats-new.md +65 -167
- package/daemon/specs/agents/apps/vault-specialist/agent.yaml +1 -0
- package/daemon/specs/agents/conveyor/builder/agent.yaml +1 -0
- package/daemon/specs/agents/conveyor/lead/agent.yaml +1 -0
- package/daemon/specs/agents/conveyor/planner/agent.yaml +1 -0
- package/daemon/specs/agents/conveyor/reviewer/agent.yaml +1 -0
- package/daemon/specs/agents/design/product-designer/agent.yaml +1 -0
- package/daemon/specs/agents/development/implementer/agent.yaml +1 -0
- package/daemon/specs/agents/development/qa/agent.yaml +1 -0
- package/daemon/specs/agents/factory-rsi/dogfood/agent.yaml +1 -0
- package/daemon/specs/agents/factory-rsi/release-manager/agent.yaml +1 -0
- package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +1 -0
- package/daemon/specs/agents/product-management/pm/agent.yaml +1 -0
- package/daemon/specs/agents/research/analyst/agent.yaml +1 -0
- package/daemon/specs/agents/research/synthesizer/agent.yaml +1 -0
- package/daemon/specs/agents/review/independent-reviewer/agent.yaml +1 -0
- package/dist/build-info.js +3 -3
- package/dist/client.d.ts +7 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +28 -0
- package/dist/client.js.map +1 -1
- package/dist/commands/ask.d.ts.map +1 -1
- package/dist/commands/ask.js +13 -3
- package/dist/commands/ask.js.map +1 -1
- package/dist/commands/capture.d.ts.map +1 -1
- package/dist/commands/capture.js +14 -0
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/chatroom.d.ts.map +1 -1
- package/dist/commands/chatroom.js +1 -0
- package/dist/commands/chatroom.js.map +1 -1
- package/dist/commands/compact.d.ts.map +1 -1
- package/dist/commands/compact.js +5 -4
- package/dist/commands/compact.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +4 -2
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/doctor.d.ts +3 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +47 -23
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/grow.d.ts.map +1 -1
- package/dist/commands/grow.js +24 -7
- package/dist/commands/grow.js.map +1 -1
- package/dist/commands/provider.d.ts.map +1 -1
- package/dist/commands/provider.js +43 -7
- package/dist/commands/provider.js.map +1 -1
- package/dist/commands/ps.d.ts +2 -0
- package/dist/commands/ps.d.ts.map +1 -1
- package/dist/commands/ps.js +12 -1
- package/dist/commands/ps.js.map +1 -1
- package/dist/commands/reconcile-session.d.ts.map +1 -1
- package/dist/commands/reconcile-session.js +25 -4
- package/dist/commands/reconcile-session.js.map +1 -1
- package/dist/commands/remove.d.ts.map +1 -1
- package/dist/commands/remove.js +20 -1
- package/dist/commands/remove.js.map +1 -1
- package/dist/commands/roster.d.ts +2 -1
- package/dist/commands/roster.d.ts.map +1 -1
- package/dist/commands/roster.js +10 -5
- package/dist/commands/roster.js.map +1 -1
- package/dist/commands/scope.js +1 -1
- package/dist/commands/scope.js.map +1 -1
- package/dist/commands/seat.d.ts.map +1 -1
- package/dist/commands/seat.js +75 -8
- package/dist/commands/seat.js.map +1 -1
- package/dist/commands/slack.d.ts.map +1 -1
- package/dist/commands/slack.js +14 -1
- package/dist/commands/slack.js.map +1 -1
- package/dist/commands/ui.d.ts.map +1 -1
- package/dist/commands/ui.js +8 -1
- package/dist/commands/ui.js.map +1 -1
- package/dist/commands/usage.d.ts.map +1 -1
- package/dist/commands/usage.js +4 -3
- package/dist/commands/usage.js.map +1 -1
- package/dist/config-store.d.ts +2 -1
- package/dist/config-store.d.ts.map +1 -1
- package/dist/config-store.js +5 -0
- package/dist/config-store.js.map +1 -1
- package/dist/daemon-lifecycle.d.ts.map +1 -1
- package/dist/daemon-lifecycle.js +11 -3
- package/dist/daemon-lifecycle.js.map +1 -1
- package/dist/front-door.d.ts.map +1 -1
- package/dist/front-door.js +3 -1
- package/dist/front-door.js.map +1 -1
- package/dist/lib/model-observation.d.ts +13 -0
- package/dist/lib/model-observation.d.ts.map +1 -0
- package/dist/lib/model-observation.js +25 -0
- package/dist/lib/model-observation.js.map +1 -0
- package/dist/local-daemon-owner.d.ts +28 -0
- package/dist/local-daemon-owner.d.ts.map +1 -0
- package/dist/local-daemon-owner.js +98 -0
- package/dist/local-daemon-owner.js.map +1 -0
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +1 -0
- package/dist/mcp-server.js.map +1 -1
- package/package.json +1 -1
- package/tui/dist/attention/attention-model.js +6 -5
- package/tui/dist/attention/attention-model.js.map +1 -1
- package/tui/dist/attention/source-continuity.d.ts.map +1 -1
- package/tui/dist/attention/source-continuity.js +2 -0
- package/tui/dist/attention/source-continuity.js.map +1 -1
- package/tui/dist/terminals/open-window.d.ts +11 -1
- package/tui/dist/terminals/open-window.d.ts.map +1 -1
- package/tui/dist/terminals/open-window.js +47 -2
- package/tui/dist/terminals/open-window.js.map +1 -1
- package/tui/dist/usage/usage-model.d.ts +2 -0
- package/tui/dist/usage/usage-model.d.ts.map +1 -1
- package/tui/dist/usage/usage-model.js +38 -3
- package/tui/dist/usage/usage-model.js.map +1 -1
- package/ui/dist/assets/{index-Cfbtfd9G.js → index-CVgod3Pm.js} +1 -1
- package/ui/dist/index.html +1 -1
|
@@ -11,7 +11,7 @@ not know exists.** So the point of what follows is not skill. It is recognition:
|
|
|
11
11
|
lands, something rhymes, and you go check instead of building.
|
|
12
12
|
|
|
13
13
|
Eighty-eight top-level verbs ship (capability canon refreshed through
|
|
14
|
-
`capability-delta-v0.6.
|
|
14
|
+
`capability-delta-v0.6.14`). This marker describes the pack's teaching, not publication or live
|
|
15
15
|
adoption. Read this once for shape, and let it make you suspicious that a thing already exists.
|
|
16
16
|
Model-divergence proclamations are live product (trust them; pins use canonical
|
|
17
17
|
model IDs).
|
|
@@ -32,6 +32,11 @@ one command away. Your memory of the fleet is a claim about the past.
|
|
|
32
32
|
filters to running and **hides detached, exited and attention states** — which are exactly the
|
|
33
33
|
cells you were scanning for. A seat whose tmux session is confirmed gone reads `detached`
|
|
34
34
|
(activity reason `session_missing`), and `rig ps --nodes` says to restore or relaunch it.
|
|
35
|
+
`rig ps --nodes` also shows the model each seat was last seen using (`modelObservation`, with its
|
|
36
|
+
source and time), or unknown; it never shows the configured model in its place. A Claude seat at
|
|
37
|
+
Claude Code's MCP-server approval menu reads as needing input (`mcp_gate`), a Codex seat at its
|
|
38
|
+
folder-trust panel reads `trust_gate`, and an OMP seat whose turn ended with a typed transient
|
|
39
|
+
provider failure reads idle and takes an ordinary retry.
|
|
35
40
|
**`rig ps --resources`** shows this host's load and transcript capture cost.
|
|
36
41
|
- **`rig ps --all-hosts --nodes -A`** — the same across every registered machine. Rollup-only
|
|
37
42
|
unless you ask for nodes.
|
|
@@ -74,7 +79,7 @@ one command away. Your memory of the fleet is a claim about the past.
|
|
|
74
79
|
- **`rig roster list` / `show` / `find`** — who across your rigs and hosts is recommended for a
|
|
75
80
|
kind of work, from JSON rosters in `<workspace.root>/rosters`. Read-only: it dispatches nothing
|
|
76
81
|
and does not claim anyone is available. The built-in starter and factory leads publish their
|
|
77
|
-
team's roster at first start.
|
|
82
|
+
team's roster at first start. `show` and `find` include each seat's last observed model.
|
|
78
83
|
- **`rig telemetry events` / `transitions` / `tenures <node-id>`** — past events, queue
|
|
79
84
|
transitions and a seat's occupants, one bounded page at a time with gaps reported. Reach for it
|
|
80
85
|
before querying the database yourself.
|
|
@@ -98,7 +103,9 @@ unseen — which makes messages the one delivery channel that never gets skipped
|
|
|
98
103
|
that seat aren't held behind it; N is a deadline from the start of the wait.
|
|
99
104
|
Over `--host` to an http-registered host, a send that may have reached the remote reads
|
|
100
105
|
`remote-outcome-unknown` ("Delivery UNCONFIRMED"): check the target with `rig capture <session>
|
|
101
|
-
--host <id>` before any resend. Only a host that was never reached reads as unreachable.
|
|
106
|
+
--host <id>` before any resend. Only a host that was never reached reads as unreachable. A send
|
|
107
|
+
whose caller goes away (Ctrl-C, or its own timeout) before input starts is refused with
|
|
108
|
+
`caller_cancelled` and never types later.
|
|
102
109
|
- **`rig send --raw`** — send exact text or keystrokes without the From/To envelope;
|
|
103
110
|
the interactive-prompt guard still applies. To deliberately drive an interactive prompt,
|
|
104
111
|
**`--dangerously-interact --reason "<why>"`** is the explicit override and implies raw text.
|
|
@@ -116,7 +123,9 @@ unseen — which makes messages the one delivery channel that never gets skipped
|
|
|
116
123
|
every seat in one call. `--lines N` is the last N lines (stderr says how many earlier lines were
|
|
117
124
|
cut); `--history-plus-pane` gives the older N history lines plus the whole pane. A short capture
|
|
118
125
|
doesn't prove a seat is idle: a capture that cut lines says activity is unknown (`activity:
|
|
119
|
-
"unknown"` in `--json`), so read `rig ps --nodes` for it.
|
|
126
|
+
"unknown"` in `--json`), so read `rig ps --nodes` for it. For a Claude Code or Codex seat, stderr
|
|
127
|
+
notes whether the input box's text looks typed or like a faint harness suggestion (`inputBox` in
|
|
128
|
+
`--json`); it's a heuristic, and `unknown` means unknown.
|
|
120
129
|
- **`rig transcript <seat>`** — what has been *said* in a seat, and **seat-scoped rather than
|
|
121
130
|
session-scoped**: one file spanning every agent generation that has occupied it, so it reaches
|
|
122
131
|
back through handovers. Capped (`transcripts.lines`, default 1000 — raise it for depth), and
|
|
@@ -126,7 +135,8 @@ unseen — which makes messages the one delivery channel that never gets skipped
|
|
|
126
135
|
read something, do not ask it. Look.**
|
|
127
136
|
- **`rig ask`** — search what was said or decided, across *every generation that ever sat in a
|
|
128
137
|
seat*. It reaches back past a handover that erased your predecessor's context, and costs no
|
|
129
|
-
runtime tokens.
|
|
138
|
+
runtime tokens. `--wake` asks a Claude or Codex seat itself; any other runtime (Pi, custom, or
|
|
139
|
+
none recorded) is refused before a wake starts.
|
|
130
140
|
- **`rig chatroom wait`** — block until a peer actually says something, instead of polling
|
|
131
141
|
`capture` in a loop. Also `history`, `watch`, `topic` for a named thread that stays retrievable.
|
|
132
142
|
Its `--timeout` is in seconds and ignores a suffix, so `2m` means 2 seconds. Poll timeouts,
|
|
@@ -170,7 +180,10 @@ unseen — which makes messages the one delivery channel that never gets skipped
|
|
|
170
180
|
- **`rig slack`** — inspect and manage one connector implementation. Use registered-human
|
|
171
181
|
readiness for the delivery decision and `queue create --verify` for its receipt; connector
|
|
172
182
|
setup or verification is not an outbound human message. After a connection gap the daemon
|
|
173
|
-
catches up on missed
|
|
183
|
+
catches up on missed messages in the channels this machine owns (its default channel, its
|
|
184
|
+
channel map's, and on a relayed machine each channel the hub has relayed to it) and on replies
|
|
185
|
+
in tracked threads whose root or close is within seven days; recovered replies are marked late
|
|
186
|
+
and never answer a decision. `rig slack status` shows the
|
|
174
187
|
connection, the catch-up state, and the count of retained retry records for inbound messages,
|
|
175
188
|
reactions and click answers (kept across restarts, not a distinct-message count). A retained alert whose row closed before its retry isn't
|
|
176
189
|
posted; the row says why. Its `Delivery:` line says whether events are confirmed arriving;
|
|
@@ -389,7 +402,8 @@ not have to tear one down to change it, and you rarely have to start from nothin
|
|
|
389
402
|
- **`rig up <source>`** — make a whole rig exist and run: from a spec you wrote, a shipped starter
|
|
390
403
|
by name, a bundle someone handed you, a GitHub folder link (pinned to one commit), or a stopped
|
|
391
404
|
rig. `rig up` with a pod-aware spec on a stopped team's name replaces that team (the earlier one
|
|
392
|
-
is archived), so check `rig ps --nodes` first.
|
|
405
|
+
is archived), so check `rig ps --nodes` first. A rig name containing a dot is refused before
|
|
406
|
+
launch, because tmux would rename its sessions. Launch-created `AGENTS.md` or `CLAUDE` files now show in `git status`.
|
|
393
407
|
`rig up <rig> --existing` puts back the OpenRig guidance blocks `rig down` removed before a
|
|
394
408
|
resumed seat starts. A seat still missing one makes the rig `partially_restored` (its node lists
|
|
395
409
|
`guidanceGaps`) and `rig up` exits 1. A seat that wasn't running at the snapshot, but whose
|
|
@@ -426,8 +440,13 @@ not have to tear one down to change it, and you rarely have to start from nothin
|
|
|
426
440
|
<account>` reports `moved` only when a tool turn has completed in the same conversation since
|
|
427
441
|
the restart and Codex's status names that account. Linux only: on macOS a
|
|
428
442
|
request that reaches the running-process check refuses before stopping the seat.
|
|
443
|
+
An adopted seat (one OpenRig didn't launch) refuses with `claimed_session`. "A conversation it
|
|
444
|
+
can prove" means the stored conversation matches the one the running Codex's command line names
|
|
445
|
+
(or, when it names none, the only one Codex has logged since it started); OpenRig can't tell
|
|
446
|
+
which conversation Codex is on now. If the conversation was changed inside the running Codex,
|
|
447
|
+
the restart may refuse or resume the earlier one, so look at the pane (`rig capture <seat>`) first.
|
|
429
448
|
- **`rig add`** / **`rig expand`** — graft one more member, or a whole new pod, onto a rig that is
|
|
430
|
-
already running. `rig add`
|
|
449
|
+
already running. `rig add`, `rig grow` and `rig remove` take the rig's name or ID; a name two active rigs share is refused
|
|
431
450
|
with `rig_ambiguous` and the candidates. `rig grow --new-pod` and `rig expand` are one ingress; choose by input shape.
|
|
432
451
|
- **`rig remove`** / **`rig shrink`** — take a seat, or an entire pod, out of a running topology.
|
|
433
452
|
If it holds active work, pass `--fallback <live-seat>` to reroute before mutation; without a
|
|
@@ -442,7 +461,12 @@ not have to tear one down to change it, and you rarely have to start from nothin
|
|
|
442
461
|
to a node. **`rig adopt`** does the whole thing at once: create the structure and bind the
|
|
443
462
|
running sessions into it.
|
|
444
463
|
- **`rig reconcile-session`** — you resumed a seat by hand and the daemon still shows it down; make
|
|
445
|
-
the system see the live process **without launching anything**.
|
|
464
|
+
the system see the live process **without launching anything**. A running seat that refuses every
|
|
465
|
+
send because its tmux pane was never recorded (one launched by an older OpenRig) takes
|
|
466
|
+
`rig reconcile-session <seat> --repair-missing-pane --no-launch`: it fills only the missing pane,
|
|
467
|
+
keeps the session and resume token, never adopts, and refuses while typing protection is on.
|
|
468
|
+
Plain reconcile adopts the seat into a new session without its resume token; use the repair even
|
|
469
|
+
where a protected seat's compaction refusal still suggests plain reconcile.
|
|
446
470
|
- **`rig unclaim` / `rig release`** — stop managing one adopted session, or all of them,
|
|
447
471
|
**without killing the process or the agent inside it**. Handing something back to its human is a
|
|
448
472
|
first-class move, not an abandonment.
|
|
@@ -469,6 +493,7 @@ version, from checking the environment to a useful report to the OpenRig team.
|
|
|
469
493
|
Stop distinguishes process/listener exit from a clean asynchronous drain: inspect the matching
|
|
470
494
|
`daemon-shutdown.json` and log when completion is incomplete or unverified. No target is a
|
|
471
495
|
distinct no-op, and a timeout never proves down. Use command help for exact limits and recovery.
|
|
496
|
+
`/healthz` reports the daemon's effective UID as `euid`, beside `pid`.
|
|
472
497
|
- **`rig doctor`** — is the *installation* wired up correctly, or are you chasing a bug that is
|
|
473
498
|
really a broken install. It checks Claude and Codex installs, and a login or configured provider
|
|
474
499
|
credential, the way setup does; it fails for a harness the person doesn't use, which they can
|
|
@@ -543,6 +568,16 @@ version, from checking the environment to a useful report to the OpenRig team.
|
|
|
543
568
|
Effective-model detection follows the identity-verified current occupant, not a retained
|
|
544
569
|
predecessor; a `<synthetic>` transcript record is skipped, so a PENDING model check is not a
|
|
545
570
|
divergence.
|
|
571
|
+
- **`rig seat set-cwd <seat> --cwd <absolute-path> --reason <text>`** — save an existing seat's
|
|
572
|
+
launch directory, audited, for its next fresh launch or rebuild handover. Its node, address, queue
|
|
573
|
+
and history stay intact. It creates the folder (on the daemon's host) and writes nothing else there: launch writes the
|
|
574
|
+
startup files, as today. Its preflight policy refuses, naming the paths, when the new directory
|
|
575
|
+
holds an edited, unrecorded-and-different or doubly sourced copy that launch would place. The
|
|
576
|
+
running process keeps its directory: adopt the new one with `rig seat launch <seat> --fresh
|
|
577
|
+
--stop --reason <text>` or a rebuild handover, promptly (background work, such as a Claude seat's
|
|
578
|
+
managed compaction, can use the saved directory before then; that's guidance, not a guard), and
|
|
579
|
+
before any `rig down`/`rig up` or fork handover. In-place Codex restart isn't adoption. `rig seat status` shows the
|
|
580
|
+
saved `launch_cwd`. Old-directory files are left.
|
|
546
581
|
- **`rig seat set-permissions <seat> --mode <mode> --reason <text>`** — select one seat's native
|
|
547
582
|
permission mode for its future managed launches; it relaunches nothing, and `inherit` clears the
|
|
548
583
|
selection. `rig seat status` reports the selection, but a status read does not prove the
|
|
@@ -551,7 +586,7 @@ version, from checking the environment to a useful report to the OpenRig team.
|
|
|
551
586
|
reasoning effort for its next launch, restore, handover or in-place Codex restart without
|
|
552
587
|
touching its spec or its peers; nothing restarts. **`rig seat effort <seat>`** reports what was
|
|
553
588
|
requested, what's saved, what the running process was launched with and what the session
|
|
554
|
-
recorded (NOT VERIFIED until the seat takes a turn).
|
|
589
|
+
recorded (NOT VERIFIED until the seat takes a turn). It works for Pi seats too, sent as `--thinking`.
|
|
555
590
|
- **`rig seat set-typing-guard <seat> --mode off|draft-aware|hold --reason <text>`** — choose
|
|
556
591
|
ordinary automatic delivery, immediate retention when input is busy/unreadable, or holding all automatic
|
|
557
592
|
input. `--enabled true|false` remains compatible: true selects hold, false selects off.
|
|
@@ -562,7 +597,9 @@ version, from checking the environment to a useful report to the OpenRig team.
|
|
|
562
597
|
- **`rig compact-plan`** → **`rig compact`** — who is near the context wall, then act on it.
|
|
563
598
|
**Ordering matters: running `compact` without the plan is guessing which seat needed it.**
|
|
564
599
|
Managed compaction waits for the seat's restore map before compacting; `rig compact --state`,
|
|
565
|
-
`--cancel` and `--skip-map` inspect, stop or skip that wait.
|
|
600
|
+
`--cancel` and `--skip-map` inspect, stop or skip that wait. If preparation stops at an ordinary
|
|
601
|
+
approval, a manual `rig compact` keeps waiting for someone to answer it, within its 180-second
|
|
602
|
+
budget; OpenRig never answers it, and the request times out after 240 seconds. The `claude-compaction-restore`
|
|
566
603
|
skill covers writing and reading the map; `claude-compact-in-place` no longer ships. After a
|
|
567
604
|
managed compaction, refocus waits for the restore request, which names the `refocusing` skill
|
|
568
605
|
(the daemon installs it globally); three failed refocus attempts in a row for one occupant post
|
|
@@ -572,6 +609,8 @@ version, from checking the environment to a useful report to the OpenRig team.
|
|
|
572
609
|
`submitted, unconfirmed` (it reached the seat, not proof compaction ran), `uncertain` (not
|
|
573
610
|
replayed) or `not sent`, so confirm by effect. Claude seats that select `openrig-core` load its
|
|
574
611
|
hooks; a seat can give a slow refocus more time with `OPENRIG_REFOCUS_BUDGET_MS` (4500 to 52000).
|
|
612
|
+
The refocus work packet stays off by default for Claude Code and Codex;
|
|
613
|
+
`OPENRIG_REFOCUS_WORK_PACKET=1` turns it on, with each field bounded.
|
|
575
614
|
- **Know what compaction costs before you reach for it.** On some runtimes what comes back has
|
|
576
615
|
enough context left to believe it knows everything and not enough to actually know anything — and
|
|
577
616
|
**the compacted agent is the only one who knows it happened**, while every other seat keeps
|
|
@@ -810,7 +849,10 @@ your circumstances is configuration, and the ones that are not, another agent ca
|
|
|
810
849
|
- **`rig config get` / `reset` / `init-workspace`** — read one value, change a system-wide setting
|
|
811
850
|
and put it back exactly as it was, or additively lay down the canonical project scaffold on a
|
|
812
851
|
box that has none. Instance startup uses the same additive initializer for the surrounding
|
|
813
|
-
`state`, `context`, `skills`, `topology`, and operational roots.
|
|
852
|
+
`state`, `context`, `skills`, `topology`, and operational roots. With `transport.local_user_guard`
|
|
853
|
+
on (off by default; `rig config set transport.local_user_guard true`), a Mac's local `rig` requests
|
|
854
|
+
stop only when the daemon's reported, `ps`-corroborated user differs from yours; unknown evidence
|
|
855
|
+
lets the call through. It isn't authentication or isolation.
|
|
814
856
|
- **`rig policy permissions list` / `show` / `current` / `apply`** — what permission policy is
|
|
815
857
|
actually in effect: discovers custom policy specs, validates refs (malformed can never read as
|
|
816
858
|
valid OR absent), shows what would apply. The older `rig policy list|show|current|apply` forms
|
|
@@ -848,9 +890,9 @@ your circumstances is configuration, and the ones that are not, another agent ca
|
|
|
848
890
|
permission policy: an explicit flag wins over it, and it wins over the operator default
|
|
849
891
|
`launch.non_interruptive`. The before-install view shows it as
|
|
850
892
|
`posture[].nonInterruptiveDefault`.
|
|
851
|
-
- **Smaller settings worth knowing:** per-seat `effort`, passed to Claude as `--effort
|
|
852
|
-
Codex as `model_reasoning_effort` (`rig seat set-effort` overrides it for
|
|
853
|
-
`runtime.readiness_timeout_seconds` for seats that start slowly.
|
|
893
|
+
- **Smaller settings worth knowing:** per-seat `effort`, passed to Claude as `--effort`, to
|
|
894
|
+
Codex as `model_reasoning_effort` and to Pi as `--thinking` (`rig seat set-effort` overrides it for
|
|
895
|
+
one seat); and `runtime.readiness_timeout_seconds` for seats that start slowly.
|
|
854
896
|
- **`rig policy cite` / `defaults`** — what posture the operator is in: how autonomous to be, how
|
|
855
897
|
loudly to report, whether to batch permission questions or block on them. **This declares a
|
|
856
898
|
posture; it does not grant or deny permissions** — the harness's own settings are the control
|
|
@@ -879,7 +921,12 @@ your circumstances is configuration, and the ones that are not, another agent ca
|
|
|
879
921
|
windows, listed once per allowance and never added up; `--refresh` (optionally `--provider
|
|
880
922
|
codex|claude`) reads the logins now. A Claude account's current availability reads `unknown`,
|
|
881
923
|
because nothing links a seat's reading to the login it used: read each window as that seat's
|
|
882
|
-
reading, and don't tell a person an account has room from it.
|
|
924
|
+
reading, and don't tell a person an account has room from it. Each account row also carries a
|
|
925
|
+
sign-in fact (`usable`, `needs sign-in` or `unknown`); a signed-in Claude login never reads
|
|
926
|
+
better than `unknown`. A Codex account's last reading, its reset and its last observed exhaustion
|
|
927
|
+
survive a daemon restart as history (`retained: "before_restart"`), never a current reading; a
|
|
928
|
+
window whose reset has passed shows an `expectation`, which is planning, not a reading. Run `rig provider status --refresh`
|
|
929
|
+
before telling anyone an account has room. With `provider.subscription_moves`
|
|
883
930
|
on (off by default), `rig provider moves` records and lists moves of a Codex home's seats between
|
|
884
931
|
subscriptions.
|
|
885
932
|
- **Codex configuration fragments** — a `codex_config_fragment` must open with a table header and
|
|
@@ -893,6 +940,19 @@ your circumstances is configuration, and the ones that are not, another agent ca
|
|
|
893
940
|
`both` sets which harnesses it installs and checks; one not chosen reads `skipped`, never failed.
|
|
894
941
|
- **`rig usage series`** — what a seat's token curve has looked like over time: climbing steadily,
|
|
895
942
|
reset, or stopped reporting entirely. The last one is a signal, not a gap.
|
|
943
|
+
- **`rig usage top`** — which of this machine's seats used the most tokens over a window (`--window
|
|
944
|
+
90m`, `1h`, `2d`; `--top <n>` caps the list). Each ranked seat shows its token delta and samples;
|
|
945
|
+
a seat that has reported usage before but has no usable samples in the window is listed as
|
|
946
|
+
unknown with its reason, never as zero.
|
|
947
|
+
To compare machines, run it on each machine, or against each machine's daemon with
|
|
948
|
+
`OPENRIG_URL=<that daemon's URL>`, back to back, with the same `--window`, no `--top`, and `--json`.
|
|
949
|
+
Show the results side by side in tokens. For each machine, give its host, the window and its
|
|
950
|
+
`sinceIso` (each daemon counts from its own clock), how many seats were ranked and over what span,
|
|
951
|
+
the unknown seats and their reasons, and each seat's runtime, declared `model` and last observed
|
|
952
|
+
model (`modelObservation`: model, source, time) from `rig ps --nodes -A --json` on that machine.
|
|
953
|
+
A seat that has never reported usage is in neither list: name each seat that `rig ps --nodes -A
|
|
954
|
+
--json` shows and `rig usage top` doesn't as not covered. Don't add machines into one total unless
|
|
955
|
+
they cover the same seats over the same span; where coverage differs, say so instead.
|
|
896
956
|
- **`rig usage cost [--seat <session>]`** — what each seat's harness reports it costs, beside its
|
|
897
957
|
tokens: Claude's own client-side estimate (not an invoice) and Codex's tokens with a note that it
|
|
898
958
|
reports no cost. A missing figure reads missing, never $0, and no setting gates it. With
|
|
@@ -1,26 +1,80 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
# OpenRig setup reference
|
|
2
|
+
|
|
3
|
+
This is the full reference for installing and running OpenRig, written for the agent doing the setup and for anyone
|
|
4
|
+
who wants the detail. The short version for people is [Getting started](quickstart.md).
|
|
5
|
+
|
|
6
|
+
## For the agent doing the setup
|
|
7
|
+
|
|
8
|
+
The `rigs` skill is the procedure: follow it in order. This page is what it looks things up in.
|
|
9
|
+
|
|
10
|
+
- **Done** means the person is talking to the operator in a visible OpenRig view. A healthy daemon, a started kernel
|
|
11
|
+
or an opened window isn't done on its own. If they'd rather talk later, the handoff is still pending: say so, and
|
|
12
|
+
leave them the exact command.
|
|
13
|
+
- **Read readiness; don't assume it:**
|
|
14
|
+
- **The kernel:** the `Kernel:` line in `rig status`, and `rig ps --nodes --rig kernel`.
|
|
15
|
+
- **A team:** `rig ps --nodes --rig <team>`.
|
|
16
|
+
- A missing or unknown signal isn't ready.
|
|
17
|
+
- `rig up` exiting 1 with `Status: partial` and `Startup attention` means a seat is waiting at a prompt. Answer it,
|
|
18
|
+
or ask the person to, then run the `rig seat continue <seat>` it names.
|
|
19
|
+
- **Prerequisites:** check the person's existing toolchain first (mise, nvm, Homebrew or the nodejs.org installer)
|
|
20
|
+
and the PATH. Use what's there. Don't change a shared Homebrew's ownership, and don't make a local workaround the
|
|
21
|
+
standard route. If Node.js is installed after your session started, check that new shells and the session's hooks
|
|
22
|
+
can find it. In one published-0.6.11 Mac run, OpenRig's Claude hooks reported `node: command not found` until the
|
|
23
|
+
PATH was fixed.
|
|
24
|
+
- **Ask once, then reuse the answer:** the provider (Claude Code, Codex or both), Herdr, Ghostty on macOS,
|
|
25
|
+
remembered command allowances, and the team.
|
|
26
|
+
- **Before changing their machine:** say what applies to their route, then wait for a yes. See
|
|
27
|
+
[what OpenRig changes on your machine](../../README.md#what-openrig-changes-on-your-machine).
|
|
28
|
+
- **When something stops:**
|
|
29
|
+
- [Incomplete setup and restart](#incomplete-setup-and-restart) maps what you see to the next action.
|
|
30
|
+
- [What can interrupt installation and the OpenRig view](#what-can-interrupt-installation-and-the-openrig-view)
|
|
31
|
+
covers the view.
|
|
32
|
+
- [Headless or SSH handoff](#headless-or-ssh-handoff) covers no-display cases.
|
|
33
|
+
- A timed-out command may still have taken effect. Read `rig ps` or `rig seat status <seat>` before you run it
|
|
34
|
+
again.
|
|
35
|
+
- **Don't:**
|
|
36
|
+
- relaunch a team to reopen its view;
|
|
37
|
+
- start another seat to clear a prompt;
|
|
38
|
+
- build the person's project yourself. Give the goal to the operator.
|
|
15
39
|
|
|
16
40
|
## Before you start
|
|
17
41
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
42
|
+
> **What OpenRig changes on your machine**
|
|
43
|
+
> - **Install:** `@openrig/cli` goes in globally with npm.
|
|
44
|
+
> - **Setup:** `rig setup` adds an OpenRig block to `~/.tmux.conf`. It can install tmux (with Homebrew on macOS), and
|
|
45
|
+
> Herdr unless you pass `--no-herdr`. Plain `rig setup`, which is what the one-command install runs, checks both
|
|
46
|
+
> Claude Code and Codex and may install a missing one; `rig setup --providers claude` (or `codex`) limits it to
|
|
47
|
+
> yours.
|
|
48
|
+
> - **Starting OpenRig, for the coding agent you use** (paths are the usual defaults):
|
|
49
|
+
> - Codex: hooks and trust in `~/.codex/config.toml`.
|
|
50
|
+
> - Claude Code: workspace trust in `~/.claude.json`, and activity hooks in the project's
|
|
51
|
+
> `.claude/settings.local.json`, plus a status line unless you already have your own.
|
|
52
|
+
> - Discovery skills go in `~/.claude/skills` and `~/.agents/skills`.
|
|
53
|
+
> - **Starting a team in your project:** adds managed guidance to `AGENTS.md` or `CLAUDE.md`, plus the team's skills
|
|
54
|
+
> and plugins.
|
|
55
|
+
> - **Permissions:** by default, OpenRig's own kernel gets broader permissions than a project team gets by default.
|
|
56
|
+
> On Codex that's full access with no approval prompts (`-s danger-full-access -a never`). On Claude Code, its file
|
|
57
|
+
> tools, web fetches and operational commands, including reads under your home folder, run without asking. A
|
|
58
|
+
> permission policy, per-agent choice or Codex profile changes that. What your team can do depends on the team you
|
|
59
|
+
> choose and your settings; `workshop`, for example, ships with broad access.
|
|
60
|
+
> - **Backups:** OpenRig doesn't guarantee it can preserve or roll back these files, so back them up first.
|
|
61
|
+
>
|
|
62
|
+
> [Everything OpenRig writes, and why →](https://github.com/mvschwarz/openrig#what-openrig-changes-on-your-machine)
|
|
63
|
+
|
|
64
|
+
You need Node.js 22 or 24 and tmux, on macOS or Linux, and one working Claude
|
|
65
|
+
Code or Codex account: one is enough, since the kernel operator adapts the
|
|
66
|
+
shipped `starter` team to whichever you have. On Linux, the distribution's own
|
|
67
|
+
Node.js can be older (Ubuntu 24.04's is 18); install a supported version with
|
|
68
|
+
[nvm](https://github.com/nvm-sh/nvm) (`nvm install 22`) or NodeSource. On a Mac
|
|
69
|
+
with Apple silicon, use Node.js 22 (see the [compatibility
|
|
70
|
+
history](../releases/v0.5.15.md#known-compatibility-limitation)). On a Mac where
|
|
71
|
+
you aren't an administrator, or where Homebrew belongs to another account (its
|
|
72
|
+
`brew install` is refused), install Node.js in your own home folder with
|
|
73
|
+
[nvm](https://github.com/nvm-sh/nvm): run `touch ~/.zshrc` (a new Mac account
|
|
74
|
+
has none, and nvm's installer only adds itself to a profile file that already
|
|
75
|
+
exists), then the install command on nvm's page, open a new terminal, and run
|
|
76
|
+
`nvm install 22`. That needs no administrator password, and `npm install -g`
|
|
77
|
+
then installs into your nvm folder. Native
|
|
24
78
|
Windows isn't supported. On Windows, use WSL2: it's the Windows route OpenRig
|
|
25
79
|
supports, though OpenRig's automated tests don't run on it yet. One user's
|
|
26
80
|
[working setup](#wsl2-a-reported-working-setup) is below. Node 20 and
|
|
@@ -123,19 +177,20 @@ You can also read [`skills/rigs/SKILL.md`](../../skills/rigs/SKILL.md) directly.
|
|
|
123
177
|
script will do and changes nothing:
|
|
124
178
|
|
|
125
179
|
```sh
|
|
126
|
-
curl -fsSL https://raw.githubusercontent.com/mvschwarz/openrig/v0.6.
|
|
180
|
+
curl -fsSL https://raw.githubusercontent.com/mvschwarz/openrig/v0.6.14/scripts/install.sh | sh -s -- --dry-run
|
|
127
181
|
```
|
|
128
182
|
|
|
129
183
|
The same command without `--dry-run`,
|
|
130
|
-
`curl -fsSL https://raw.githubusercontent.com/mvschwarz/openrig/v0.6.
|
|
184
|
+
`curl -fsSL https://raw.githubusercontent.com/mvschwarz/openrig/v0.6.14/scripts/install.sh | sh`, installs the
|
|
131
185
|
latest published `@openrig/cli` with `npm install -g`,
|
|
132
186
|
runs the Node.js and SQLite check, then `rig setup --dry-run` and `rig setup`. `rig setup` checks both Claude Code and
|
|
133
|
-
Codex and may install a missing one, as described below. A failed step prints
|
|
134
|
-
`FAILED [n/4] <command or check> (exit <code>)`.
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
187
|
+
Codex and may install a missing one, as described below. A failed step among the first three prints
|
|
188
|
+
`FAILED [n/4] <command or check> (exit <code>)`. When `rig setup` (step 4) doesn't finish ready, for example because a
|
|
189
|
+
provider isn't signed in yet, the script ends with `INSTALLED, SETUP NOT COMPLETE (exit <code>)`: the CLI is
|
|
190
|
+
installed, and `rig setup` lists what's left under "Some steps need attention". If the only items left are provider
|
|
191
|
+
sign-ins, sign in to each selected provider as below, then continue at
|
|
192
|
+
[Start the kernel](#start-the-kernel-and-check-its-state); run `rig setup` again rather than reinstalling the CLI. To
|
|
193
|
+
install only what the selected providers need, go step by step instead:
|
|
139
194
|
|
|
140
195
|
### Choose your providers
|
|
141
196
|
|
|
@@ -249,6 +304,17 @@ same view and plan, or creates one if none matches, preserving its config and ex
|
|
|
249
304
|
caller's Herdr endpoint must match the daemon's endpoint; a mismatch is reported
|
|
250
305
|
without opening a window or putting the view in another session.
|
|
251
306
|
|
|
307
|
+
The shared TUI (`rig tui --shared`) runs in the daemon's tmux server, so its own environment never
|
|
308
|
+
carries the Herdr you are looking at; the markers are on the tmux client attached to it. When you
|
|
309
|
+
open a terminal view from it on Linux, the TUI passes the markers of the client that was active last
|
|
310
|
+
(normally the one that pressed the key) to the command, which then opens the view in that Herdr. The
|
|
311
|
+
chosen client may belong to a different viewer: tmux only counts keys a client types, so a key sent
|
|
312
|
+
by an agent (`send-keys`) or by a control-mode client doesn't count as any client's activity, and the
|
|
313
|
+
view opens in the Herdr of the interactive client that typed last, however long ago. With no client
|
|
314
|
+
attached, more than one client active in the same second, or a client that isn't in Herdr or can't be
|
|
315
|
+
read, nothing is passed and the result is what it was before. Other platforms, and every other way of
|
|
316
|
+
running `rig terminal open`, keep the previous result too.
|
|
317
|
+
|
|
252
318
|
On Linux, a local graphical display and a supported hosting terminal are required
|
|
253
319
|
(Ghostty, GNOME Terminal, Konsole or xterm). Linux reports a window request; verify
|
|
254
320
|
what actually appeared. SSH, headless, CI and unsupported Linux hosts get a
|
|
@@ -544,6 +610,16 @@ views. If the provider cannot open, each labelled fallback command joins a diffe
|
|
|
544
610
|
seat. Keep all returned commands
|
|
545
611
|
complete when sharing them; a created workspace alone does not confirm visibility.
|
|
546
612
|
|
|
613
|
+
### Built by the community
|
|
614
|
+
|
|
615
|
+
Tools built around OpenRig are maintained by their authors. We have not tested them;
|
|
616
|
+
this list does not promise support or compatibility with your OpenRig version.
|
|
617
|
+
|
|
618
|
+
- **[Rig HQ](https://github.com/dmelo/rig-hq)**, by [dmelo](https://github.com/dmelo):
|
|
619
|
+
a read-only pixel-office viewer for rigs, seats, attention and queue handoffs, as
|
|
620
|
+
described in the [author's introduction](https://github.com/mvschwarz/openrig/discussions/879).
|
|
621
|
+
The author reports testing it with OpenRig 0.6.5. See its repository for setup and support.
|
|
622
|
+
|
|
547
623
|
## Continue real project work
|
|
548
624
|
|
|
549
625
|
Return to the same owner with the next outcome, citing the earlier result.
|
|
@@ -965,6 +1041,37 @@ same-seat stop/resume path after checking its retained policy; do not erase the
|
|
|
965
1041
|
rig or start a duplicate to reset permissions. A resume can reapply the stored
|
|
966
1042
|
launch mode, so verify the native mode again before continuing work.
|
|
967
1043
|
|
|
1044
|
+
## Optional Mac local-user check
|
|
1045
|
+
|
|
1046
|
+
On a Mac shared by multiple OS accounts, `transport.local_user_guard` can reduce
|
|
1047
|
+
accidental CLI routing to another account's local daemon. It is **off by default**.
|
|
1048
|
+
Enable it with `rig config set transport.local_user_guard true`, or set
|
|
1049
|
+
`OPENRIG_TRANSPORT_LOCAL_USER_GUARD=true` in the CLI's environment. Set it to
|
|
1050
|
+
`false` to turn it off; no daemon restart is needed for the CLI check.
|
|
1051
|
+
|
|
1052
|
+
When enabled, automatic local CLI data requests compare the daemon's reported
|
|
1053
|
+
`/healthz` PID and effective UID (`euid`) with two `ps` UID/start observations and
|
|
1054
|
+
a second health response, with at most one second of observation per check.
|
|
1055
|
+
Only stable agreement on a foreign effective UID stops the request. This does
|
|
1056
|
+
not require visibility into another user's socket descriptors. It does not
|
|
1057
|
+
stop the daemon, choose another port or retry. Diagnostic health/status checks
|
|
1058
|
+
remain available. Older daemons without `euid` remain unknown and are permitted.
|
|
1059
|
+
`sudo rig …` uses the caller's **effective** UID, so an enabled check against a
|
|
1060
|
+
user-owned daemon refuses when its reported/observed UID differs from root.
|
|
1061
|
+
|
|
1062
|
+
Explicit `OPENRIG_URL`/`RIGGED_URL` targets and registered remote hosts retain
|
|
1063
|
+
their selected routing, including tunnels. An internally resolved local URL is
|
|
1064
|
+
still checked. Default UI and TUI openings are checked before launch; this does
|
|
1065
|
+
not police later browser or TUI connections.
|
|
1066
|
+
|
|
1067
|
+
Missing, disagreeing, restricted or timed-out evidence **continues today's
|
|
1068
|
+
behavior**. This is a partial accidental-routing check, not authenticated user
|
|
1069
|
+
isolation: it trusts the daemon's PID/UID report and corroborates that process;
|
|
1070
|
+
it does not establish the socket's owner. Identity can change between observation
|
|
1071
|
+
and connection, and equal UIDs do not distinguish separate instances belonging
|
|
1072
|
+
to one account. The check
|
|
1073
|
+
does not add authentication to the daemon or protect direct HTTP clients.
|
|
1074
|
+
|
|
968
1075
|
## Custom settings and precedence
|
|
969
1076
|
|
|
970
1077
|
- **OpenRig:** member `permission_policy` overrides rig `permission_policy`.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Reference guides the help pack links to, loaded one file or section at a time by address
|
|
2
2
|
# (rig context get reference/<file>#<section>). Each file is a symlink to docs/reference/.
|
|
3
3
|
name: reference
|
|
4
|
-
version: "0.6.
|
|
4
|
+
version: "0.6.14"
|
|
5
5
|
taxonomy: world
|
|
6
6
|
purpose: "Version-matched reference guides the help guide links to. Load a single file or section by address; don't load the whole pack."
|
|
7
7
|
files:
|
|
@@ -361,7 +361,7 @@ pods:
|
|
|
361
361
|
**Where the declared names reach, by runtime.** Declared values are handed to the seat's terminal as tmux environment, so most seats take them as given:
|
|
362
362
|
|
|
363
363
|
- Plain Claude Code (no permission mode selected), Codex and terminal seats take a spec `HOME`, `PATH` or `CLAUDE_CONFIG_DIR` as given.
|
|
364
|
-
- The cleared environment (`env -i`) belongs only to a managed Claude launch, which is the one used when a permission mode is selected for the seat (for example `permission_policy: builtin:auto`). It forwards the declared names through the cleared environment, except `PATH`, `HOME` and `CLAUDE_CONFIG_DIR`, which OpenRig sets for that launch itself, and `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN`, for which it sets its own renderer setting. A spec value for any of those four is not forwarded. A seat that selected the shipped `openrig-core` plugin also has `CLAUDE_CODE_PLUGIN_DIRS` (the vendored plugin, added after a list the seat declares itself) among its declared names, so it is forwarded like the others and the plugin's hooks load in a seat with a permission mode as in one without; a seat that didn't select the plugin has no such name added.
|
|
364
|
+
- The cleared environment (`env -i`) belongs only to a managed Claude launch, which is the one used when a permission mode is selected for the seat (for example `permission_policy: builtin:auto`). It forwards the declared names through the cleared environment, except `PATH`, `HOME` and `CLAUDE_CONFIG_DIR`, which OpenRig sets for that launch itself, and `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN`, for which it sets its own renderer setting. A spec value for any of those four is not forwarded. A seat that selected the shipped `openrig-core` plugin also has `CLAUDE_CODE_PLUGIN_DIRS` (the vendored plugin, added after a list the seat declares itself) among its declared names, so it is forwarded like the others and the plugin's hooks load in a seat with a permission mode as in one without; a seat that didn't select the plugin has no such name added. Beyond the declared names, the launch also forwards, by name and only when the seat's terminal has them set, the terminal and locale variables (`TERM`, `COLORTERM`, `TERM_PROGRAM`, `TERM_PROGRAM_VERSION`, `LANG` and the `LC_*` names) and the person's editor and display session: `EDITOR`, `VISUAL`, `DISPLAY`, `XAUTHORITY` and `WAYLAND_DISPLAY`. They let Claude's external-editor action open the person's editor and let image paste reach the clipboard, without a value in a spec. `WAYLAND_DISPLAY` is passed as an absolute path: an absolute value is kept, and a relative one is joined to the terminal's `XDG_RUNTIME_DIR`; if the terminal has no `XDG_RUNTIME_DIR` for it, the name is left out. `XDG_RUNTIME_DIR` itself is not forwarded, because D-Bus clients look for the session bus at `$XDG_RUNTIME_DIR/bus` and would reach the keyring and `systemctl --user`. `DBUS_SESSION_BUS_ADDRESS`, `XDG_SESSION_TYPE`, `XDG_CURRENT_DESKTOP` and `SSH_AUTH_SOCK` are not forwarded either. A running seat picks the names up at its next managed Claude launch, not before: `rig seat launch <seat> --fresh --stop --reason "<why>"` for that seat alone (a new conversation), or a restore of the whole rig (`rig down <rig>`, then `rig up <rig> --existing`, which resumes each conversation but restarts every seat in the rig), or a handover. A seat that is up keeps the environment it started with.
|
|
365
365
|
- Codex seats run OpenRig's own Codex executable whatever a spec `PATH` says, and use the daemon's `CODEX_HOME` when the daemon has one.
|
|
366
366
|
- On Pi and OMP seats the values reach the terminal. The agent process gets only what the runner passes on, so a spec or one-off value reaches it only for the names the runner always passes: `PATH`, `HOME`, `USER`, `LOGNAME`, `TERM`, `LANG`, `LC_ALL`, `SHELL` and `TMPDIR`. Pi's agent process receives the runner's `HOME`, so a spec or one-off `HOME` value that reaches the runner is passed to Pi; OMP's agent process gets its seat state directory (`$OPENRIG_HOME/state/omp/<seat>`, see Oh My Pi below) as `HOME`, so a `HOME` value does not reach it. The selected provider's variables are passed separately, as described under each runtime.
|
|
367
367
|
|
|
@@ -436,10 +436,10 @@ directory's `CLAUDE.md`, including blocks written by other rigs.
|
|
|
436
436
|
| `profile` | string | yes | — | Profile name from the referenced AgentSpec. Use `default` for the default profile. Exception: `none` for terminal nodes. |
|
|
437
437
|
| `codex_config_profile` | string | no | — | Codex-only native profile passed as `-p <name>`; letters, numbers, `_`, `.`, `-`. Separate from the AgentSpec `profile`. With the normal launch mode, this replaces OpenRig's explicit workspace-write sandbox flag. A full-bypass policy instead emits danger-full-access and omits this profile argument. |
|
|
438
438
|
| `runtime` | string | yes | — | Agent runtime. Current supported values: `claude-code`, `codex`, `pi`, `omp`, `terminal`, `stub`. `stub` is a deterministic test harness, not an agent: a Node runner in the seat's tmux pane goes through the normal launch, skill projection, startup-file and readiness path, follows `<cwd>/.openrig/stub/script.json` when present, and calls no model. See "What a stub can and cannot prove" in `docs/as-built/test-layers.md`. |
|
|
439
|
-
| `cwd` | string | yes | — | Working directory for the agent. A relative path resolves against the rig root (the directory containing the rig spec). If that path exists as written, it is used. Otherwise a leading `~` or `~/` expands to the home directory (`~user` does not) and `$VAR` / `${VAR}` expand from the daemon host's environment; a relative result still resolves against the rig root. A reference to an unset variable stays as written, so the cwd is that literal path and works only if it exists. Use `"."` for the rig root itself. Can be overridden at launch time with `rig up --cwd`. A cwd inside the OpenRig installation fails preflight unless `--cwd` is given. |
|
|
439
|
+
| `cwd` | string | yes | — | Working directory for the agent. A relative path resolves against the rig root (the directory containing the rig spec). If that path exists as written, it is used. Otherwise a leading `~` or `~/` expands to the home directory (`~user` does not) and `$VAR` / `${VAR}` expand from the daemon host's environment; a relative result still resolves against the rig root. A reference to an unset variable stays as written, so the cwd is that literal path and works only if it exists. Use `"."` for the rig root itself. Can be overridden at launch time with `rig up --cwd`. A cwd inside the OpenRig installation fails preflight unless `--cwd` is given. Editing this declaration does not update an existing seat; use [`rig seat set-cwd`](agent-startup-guide.md#change-an-existing-seats-working-directory) to save its future launch directory. |
|
|
440
440
|
| `label` | string | no | — | Human-readable member name. Shown in UI when present. |
|
|
441
441
|
| `model` | string | no | — | Model override. Runtime-specific (e.g., `claude-opus-4-6` for Claude Code). |
|
|
442
|
-
| `effort` | string | no | — | Reasoning effort override, trimmed. A non-string value is ignored with an advisory. |
|
|
442
|
+
| `effort` | string | no | — | Reasoning effort override, trimmed. Claude gets `--effort`, Codex `-c model_reasoning_effort=…`, Pi `--thinking` (see "Pi" below). A non-string value is ignored with an advisory. |
|
|
443
443
|
| `permission_policy` | string | no | — | Member-level permission policy; overrides the rig's. Not valid on terminal members. |
|
|
444
444
|
| `env` | map | no | — | Launch environment for this seat, laid over the rig's `env`. Same rules as the rig-level field. Valid on terminal members too. See "Launch environment" below. |
|
|
445
445
|
| `role` | string | no | — | The seat's role, letters, digits, `_`, `.` and `-`. Not valid on terminal members. |
|
|
@@ -455,7 +455,7 @@ directory's `CLAUDE.md`, including blocks written by other rigs.
|
|
|
455
455
|
`runtime: pi` launches the Pi coding agent (`pi --mode rpc`) through OpenRig's RPC runner.
|
|
456
456
|
|
|
457
457
|
- **State:** Each seat uses `$OPENRIG_HOME/state/pi/<session>/agent` as its Pi agent directory, with `sessions/` beside it, instead of your default `~/.pi/agent`. The runner sets `PI_CODING_AGENT_DIR` to that directory. `<session>` is the seat's session name, unchanged; for a pod member it is `{podId}-{memberId}@{rigName}`. `$OPENRIG_HOME` defaults to `~/.openrig`. OpenRig creates these directories at launch and does not copy anything from `~/.pi/agent`.
|
|
458
|
-
- **Thinking level:**
|
|
458
|
+
- **Thinking level:** A Pi seat's effort (the choice saved with `rig seat set-effort`, else the spec's `effort`) is sent to Pi as `--thinking <level>` on every managed launch and resume: fresh launch, successor and restore. Pi accepts `off`, `minimal`, `low`, `medium`, `high`, `xhigh` and `max`; OpenRig passes the value as written and does not translate it, so Codex's `none` is not mapped to `off`. Only a value of the shape `set-effort` accepts (a letter, then up to 31 letters, digits, `-` or `_`) is sent; any other spec value, such as one with a space or one that starts with `--`, is left out, and `rig seat effort` says so. An unfamiliar level gets an advisory (a warning from `set-effort`), never a refusal, and Pi itself ignores an unknown level with a warning and keeps the level it would use without the flag: a model suffix, the resumed session's level, or its default. With no effort resolved, no flag is sent. The effort wins over a model suffix, and the model string is never changed. `rig seat effort` reports the level sent at launch and, on Pi 0.99.0 or later, the `thinkingLevel` Pi records on this launch's latest successful assistant turn (error and aborted turns are skipped); that is the session's level after Pi's own cap, not proof the provider applied it, and it is shown apart from the level sent when they differ. On older Pi it is NOT VERIFIED. Without an effort, you can still set the level as a model suffix, for example `model: openrouter/x-ai/grok-4:high`. Pi first looks for a model whose id is the whole pin, and uses it when there is one, suffix included. Only when there is none does Pi read the suffix as the level and record the model without it. Any other suffix, such as OpenRouter's `:free`, stays part of the model id. The model-divergence check reads the pin literally when the seat's `models.json` defines a model with that exact id; otherwise it accepts the model with or without the suffix. If the seat's `models.json` can't be read, a pin with a suffix stays unchecked, with the usual warning, when the recorded model matches the whole pin or the pin without its suffix. A record that matches neither is reported.
|
|
459
459
|
- **Custom models:** Pi reads `models.json` from its agent directory, so a seat reads `$OPENRIG_HOME/state/pi/<session>/agent/models.json`, not `~/.pi/agent/models.json`. Custom provider and model definitions for a seat go in that file. A seat that uses only providers Pi already includes does not need one. OpenRig does not create or write `models.json`.
|
|
460
460
|
- **Credentials:** The Pi process receives only `PATH`, `HOME`, `USER`, `LOGNAME`, `TERM`, `LANG`, `LC_ALL`, `SHELL`, `TMPDIR`, a fixed set of OpenRig seat and instance variables, `PI_CODING_AGENT_DIR`, `PI_CODING_AGENT_SESSION_DIR`, and at most one provider key. That key is `OPENROUTER_API_KEY`, `ZAI_API_KEY`, `KIMI_API_KEY` or `MINIMAX_API_KEY`, passed only when it is set in the seat's environment and the seat's `model` is written as `openrouter/<id>`, `zai/<id>`, `kimi-coding/<id>` or `minimax/<id>`. Naming that variable in `recovery.provider_auth_env_allowlist` (empty by default) makes the daemon add it, when set in the daemon's environment, to the seat's launch environment. No other variable reaches Pi, including other providers' keys and a custom provider's own key variable.
|
|
461
461
|
|
|
@@ -466,7 +466,7 @@ directory's `CLAUDE.md`, including blocks written by other rigs.
|
|
|
466
466
|
- **State:** Each seat uses `$OPENRIG_HOME/state/omp/<seat>/agent` and `sessions/` instead of your default `~/.omp` profile, and runs with that seat directory as `HOME`. OpenRig does not copy OMP credentials. The runner finds the real `omp` binary before switching `HOME`, so a version-manager shim such as mise on the daemon's `PATH` still works.
|
|
467
467
|
- **Credentials:** Provision each seat separately, or put the provider's key variable in `recovery.provider_auth_env_allowlist` (for example `ANTHROPIC_API_KEY` or `MISTRAL_API_KEY`). The allowlist accepts the key variable of every provider in OpenRig's OMP provider map, from `anthropic` through `litellm`. A seat receives a key only when its `model` is written as `provider/id`, such as `anthropic/claude-sonnet-4-5`. Short names such as `opus` pass no key. A provider whose key is scoped to one endpoint also accepts that endpoint's variable: `anthropic`, `openai` and `litellm` each take their `<PROVIDER>_BASE_URL` — `ANTHROPIC_BASE_URL`, `OPENAI_BASE_URL`, `LITELLM_BASE_URL`. The allowlist admits each variable on its own, so an endpoint named without its key is admitted too, which suits a keyless local proxy. The launch gate admits these endpoint names for OMP seats; the match against the seat's declared `provider/id` happens at the OMP child, which forwards a matching endpoint already in the runner's environment just as it forwards a key. OMP also reads the launch directory's `.env`, so use a trusted working directory.
|
|
468
468
|
- **Approval posture:** The default floor is `--approval-mode always-ask`. Because the runner is headless, OMP approval requests are cancelled and the seat stays in needing-attention after the turn ends, until the next agent run starts. A `full_bypass` permission policy selects `--approval-mode yolo`.
|
|
469
|
-
- **Model errors:** A
|
|
469
|
+
- **Model errors:** Errors are printed in the pane. A completed assistant failure with a numeric `errorStatus` of 408, 429, 500, 502, 503, 504, or 529 returns to idle at terminal `agent_end`, allowing an ordinary retry. Until that terminal boundary it stays in needing-attention. Intermediate `agent_end(isTerminal:false)` events do not release attention. A statusless failed retry summary retains that classification only when its attempt matches an announced retry and its final error exactly matches the latest typed transient assistant failure in that attempt. New assistant/turn boundaries invalidate the previous failure; unmatched summaries remain runtime errors. Rejected prompts, auth/configuration failures, exhausted retries without a typed transient status, and untyped errors (including text such as `529 overloaded`) retain attention until the next agent run starts. The runner does not classify diagnostic text. A transient failure does not clear a denied approval or another unresolved runtime failure in the same turn.
|
|
470
470
|
- **Restore:** OMP creates its session file after the first persisted turn. A new seat with no persisted turn has no resume token; restoring it requires `rig up --existing <rig> --fresh <seat>`. After that file exists, OpenRig restores that exact session file. If a full rig restore leaves an OMP seat in `attention_required` or `failed`, `rig seat clear-attention` cannot yet reconcile it to `operator_recovered`, even with `--reason`, because restore reconciliation only verifies Claude Code and Codex processes ([#41](https://github.com/mvschwarz/openrig/issues/41)). Relaunch that seat with `rig up --existing <rig> --fresh <seat>`, or restore it manually.
|
|
471
471
|
|
|
472
472
|
### Terminal Nodes
|