@polderlabs/bizar-omp 0.8.0 → 0.9.0

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 (205) hide show
  1. package/README.md +287 -305
  2. package/agents/bizar-architect.md +1 -1
  3. package/agents/bizar-implementer.md +12 -2
  4. package/agents/bizar-planner.md +1 -1
  5. package/agents/bizar-researcher.md +1 -1
  6. package/agents/bizar-reviewer.md +7 -1
  7. package/agents/bizar-security-reviewer.md +1 -1
  8. package/agents/bizar-verifier.md +4 -0
  9. package/dist/cli/agents-ink.d.ts +12 -0
  10. package/dist/cli/agents-ink.d.ts.map +1 -1
  11. package/dist/cli/agents-ink.js +22 -7
  12. package/dist/cli/agents-ink.js.map +1 -1
  13. package/dist/cli/agents.d.ts.map +1 -1
  14. package/dist/cli/agents.js +6 -2
  15. package/dist/cli/agents.js.map +1 -1
  16. package/dist/cli/doctor.d.ts +4 -4
  17. package/dist/cli/install.d.ts +1 -7
  18. package/dist/cli/install.d.ts.map +1 -1
  19. package/dist/cli/install.js +75 -81
  20. package/dist/cli/install.js.map +1 -1
  21. package/dist/cli/main.js +5 -1
  22. package/dist/cli/main.js.map +1 -1
  23. package/dist/cli/mobile-claim.d.ts.map +1 -1
  24. package/dist/cli/mobile-claim.js +26 -18
  25. package/dist/cli/mobile-claim.js.map +1 -1
  26. package/dist/cli/omb-daemon.d.ts.map +1 -1
  27. package/dist/cli/omb-daemon.js +43 -11
  28. package/dist/cli/omb-daemon.js.map +1 -1
  29. package/dist/cli/omb-mobile.d.ts.map +1 -1
  30. package/dist/cli/omb-mobile.js +9 -3
  31. package/dist/cli/omb-mobile.js.map +1 -1
  32. package/dist/cli/omb-runtime.d.ts.map +1 -1
  33. package/dist/cli/omb-runtime.js +2 -0
  34. package/dist/cli/omb-runtime.js.map +1 -1
  35. package/dist/cli/omb-sessions.js +18 -7
  36. package/dist/cli/omb-sessions.js.map +1 -1
  37. package/dist/cli/omb-update.d.ts +1 -1
  38. package/dist/cli/omb-update.d.ts.map +1 -1
  39. package/dist/cli/omb-update.js +7 -36
  40. package/dist/cli/omb-update.js.map +1 -1
  41. package/dist/cli/run.d.ts.map +1 -1
  42. package/dist/cli/run.js +2 -1
  43. package/dist/cli/run.js.map +1 -1
  44. package/dist/cli/update-ink.d.ts.map +1 -1
  45. package/dist/cli/update-ink.js +8 -23
  46. package/dist/cli/update-ink.js.map +1 -1
  47. package/dist/core/acceptance.d.ts +20 -1
  48. package/dist/core/acceptance.d.ts.map +1 -1
  49. package/dist/core/acceptance.js +50 -2
  50. package/dist/core/acceptance.js.map +1 -1
  51. package/dist/core/policies.d.ts +11 -0
  52. package/dist/core/policies.d.ts.map +1 -1
  53. package/dist/core/policies.js +41 -10
  54. package/dist/core/policies.js.map +1 -1
  55. package/dist/core/transitions.d.ts.map +1 -1
  56. package/dist/core/transitions.js +4 -3
  57. package/dist/core/transitions.js.map +1 -1
  58. package/dist/core/types.d.ts +64 -0
  59. package/dist/core/types.d.ts.map +1 -1
  60. package/dist/extension.d.ts +4 -0
  61. package/dist/extension.d.ts.map +1 -1
  62. package/dist/extension.js +420 -78
  63. package/dist/extension.js.map +1 -1
  64. package/dist/omp/compatibility.d.ts +15 -5
  65. package/dist/omp/compatibility.d.ts.map +1 -1
  66. package/dist/omp/compatibility.js +12 -2
  67. package/dist/omp/compatibility.js.map +1 -1
  68. package/dist/omp/daemon-service.d.ts.map +1 -1
  69. package/dist/omp/daemon-service.js +151 -21
  70. package/dist/omp/daemon-service.js.map +1 -1
  71. package/dist/omp/daemon.d.ts +18 -4
  72. package/dist/omp/daemon.d.ts.map +1 -1
  73. package/dist/omp/daemon.js +209 -76
  74. package/dist/omp/daemon.js.map +1 -1
  75. package/dist/omp/dispatch-lifecycle.d.ts +61 -0
  76. package/dist/omp/dispatch-lifecycle.d.ts.map +1 -0
  77. package/dist/omp/dispatch-lifecycle.js +101 -0
  78. package/dist/omp/dispatch-lifecycle.js.map +1 -0
  79. package/dist/omp/model-role-assignment.d.ts +5 -0
  80. package/dist/omp/model-role-assignment.d.ts.map +1 -1
  81. package/dist/omp/model-role-assignment.js +5 -0
  82. package/dist/omp/model-role-assignment.js.map +1 -1
  83. package/dist/omp/model-roles.d.ts +8 -0
  84. package/dist/omp/model-roles.d.ts.map +1 -1
  85. package/dist/omp/model-roles.js +10 -0
  86. package/dist/omp/model-roles.js.map +1 -1
  87. package/dist/omp/omb-sessions.d.ts +8 -1
  88. package/dist/omp/omb-sessions.d.ts.map +1 -1
  89. package/dist/omp/omb-sessions.js +40 -23
  90. package/dist/omp/omb-sessions.js.map +1 -1
  91. package/dist/omp/omb-settings.d.ts +5 -1
  92. package/dist/omp/omb-settings.d.ts.map +1 -1
  93. package/dist/omp/omb-settings.js +75 -26
  94. package/dist/omp/omb-settings.js.map +1 -1
  95. package/dist/omp/omp-provider-config.d.ts +3 -0
  96. package/dist/omp/omp-provider-config.d.ts.map +1 -1
  97. package/dist/omp/omp-provider-config.js +80 -30
  98. package/dist/omp/omp-provider-config.js.map +1 -1
  99. package/dist/omp/rpc.d.ts +3 -0
  100. package/dist/omp/rpc.d.ts.map +1 -1
  101. package/dist/omp/session-ownership.d.ts +64 -0
  102. package/dist/omp/session-ownership.d.ts.map +1 -0
  103. package/dist/omp/session-ownership.js +269 -0
  104. package/dist/omp/session-ownership.js.map +1 -0
  105. package/dist/omp/task-model-selector.d.ts +58 -0
  106. package/dist/omp/task-model-selector.d.ts.map +1 -0
  107. package/dist/omp/task-model-selector.js +144 -0
  108. package/dist/omp/task-model-selector.js.map +1 -0
  109. package/dist/omp/tmux.d.ts.map +1 -1
  110. package/dist/omp/tmux.js +10 -5
  111. package/dist/omp/tmux.js.map +1 -1
  112. package/dist/omp/tray.d.ts +9 -1
  113. package/dist/omp/tray.d.ts.map +1 -1
  114. package/dist/omp/tray.js +210 -56
  115. package/dist/omp/tray.js.map +1 -1
  116. package/dist/scripts/emit-compatibility-receipt.js +13 -3
  117. package/dist/scripts/emit-compatibility-receipt.js.map +1 -1
  118. package/dist/services/benchmarks.d.ts +68 -0
  119. package/dist/services/benchmarks.d.ts.map +1 -0
  120. package/dist/services/benchmarks.js +105 -0
  121. package/dist/services/benchmarks.js.map +1 -0
  122. package/dist/services/budget.d.ts +40 -1
  123. package/dist/services/budget.d.ts.map +1 -1
  124. package/dist/services/budget.js +74 -3
  125. package/dist/services/budget.js.map +1 -1
  126. package/dist/services/change-impact.d.ts +33 -0
  127. package/dist/services/change-impact.d.ts.map +1 -0
  128. package/dist/services/change-impact.js +103 -0
  129. package/dist/services/change-impact.js.map +1 -0
  130. package/dist/services/efficiency.d.ts +101 -0
  131. package/dist/services/efficiency.d.ts.map +1 -0
  132. package/dist/services/efficiency.js +170 -0
  133. package/dist/services/efficiency.js.map +1 -0
  134. package/dist/services/hypothesis-ledger.d.ts +66 -0
  135. package/dist/services/hypothesis-ledger.d.ts.map +1 -0
  136. package/dist/services/hypothesis-ledger.js +92 -0
  137. package/dist/services/hypothesis-ledger.js.map +1 -0
  138. package/dist/services/lesson-extraction.d.ts +27 -0
  139. package/dist/services/lesson-extraction.d.ts.map +1 -0
  140. package/dist/services/lesson-extraction.js +49 -0
  141. package/dist/services/lesson-extraction.js.map +1 -0
  142. package/dist/services/parallel-work.d.ts +44 -0
  143. package/dist/services/parallel-work.d.ts.map +1 -0
  144. package/dist/services/parallel-work.js +68 -0
  145. package/dist/services/parallel-work.js.map +1 -0
  146. package/dist/services/pr-shepherd.d.ts +83 -0
  147. package/dist/services/pr-shepherd.d.ts.map +1 -0
  148. package/dist/services/pr-shepherd.js +129 -0
  149. package/dist/services/pr-shepherd.js.map +1 -0
  150. package/dist/services/recipes.d.ts +12 -2
  151. package/dist/services/recipes.d.ts.map +1 -1
  152. package/dist/services/recipes.js +100 -8
  153. package/dist/services/recipes.js.map +1 -1
  154. package/dist/services/run-contract.d.ts +18 -0
  155. package/dist/services/run-contract.d.ts.map +1 -0
  156. package/dist/services/run-contract.js +32 -0
  157. package/dist/services/run-contract.js.map +1 -0
  158. package/dist/services/snapshots.d.ts +78 -0
  159. package/dist/services/snapshots.d.ts.map +1 -0
  160. package/dist/services/snapshots.js +194 -0
  161. package/dist/services/snapshots.js.map +1 -0
  162. package/dist/services/specialist-contracts.d.ts +58 -0
  163. package/dist/services/specialist-contracts.d.ts.map +1 -0
  164. package/dist/services/specialist-contracts.js +109 -0
  165. package/dist/services/specialist-contracts.js.map +1 -0
  166. package/dist/services/stall-detector.d.ts +27 -0
  167. package/dist/services/stall-detector.d.ts.map +1 -0
  168. package/dist/services/stall-detector.js +53 -0
  169. package/dist/services/stall-detector.js.map +1 -0
  170. package/dist/storage/resources.d.ts +1 -0
  171. package/dist/storage/resources.d.ts.map +1 -1
  172. package/dist/storage/resources.js +13 -11
  173. package/dist/storage/resources.js.map +1 -1
  174. package/dist/tools/integrate.d.ts.map +1 -1
  175. package/dist/tools/integrate.js +8 -7
  176. package/dist/tools/integrate.js.map +1 -1
  177. package/dist/tools/verify.d.ts +5 -2
  178. package/dist/tools/verify.d.ts.map +1 -1
  179. package/dist/tools/verify.js +84 -14
  180. package/dist/tools/verify.js.map +1 -1
  181. package/dist/tools/workflow.d.ts +2 -2
  182. package/dist/tools/workflow.d.ts.map +1 -1
  183. package/dist/tools/workflow.js +7 -0
  184. package/dist/tools/workflow.js.map +1 -1
  185. package/docs/07-bizarharness-integration.md +12 -0
  186. package/docs/assets/bizar-omp-banner.svg +51 -18
  187. package/docs/compatibility/baseline.json +9 -8
  188. package/docs/compatibility/lifecycle-observation.md +15 -1
  189. package/docs/compatibility/supported-surfaces.json +11 -3
  190. package/docs/releases/0.8.1.md +53 -0
  191. package/docs/releases/0.9.0.md +35 -0
  192. package/docs/releases/support-matrix.md +1 -1
  193. package/docs/security/project-audit-2026-10-01.md +145 -0
  194. package/package.json +9 -5
  195. package/skills/bizar-omp/SKILL.md +54 -0
  196. package/skills/omp-native-development/SKILL.md +5 -3
  197. package/skills/omp-native-development/assets/tests/acceptance-matrix.json +417 -0
  198. package/skills/omp-native-development/references/accuracy-and-versioning.md +1 -1
  199. package/skills/omp-native-development/references/bizar-integration-contract.md +1 -1
  200. package/skills/omp-native-development/references/developer-handoff.md +3 -1
  201. package/skills/omp-native-development/references/execution-and-lifecycle.md +4 -0
  202. package/skills/omp-native-development/references/native-validation-matrix.md +25 -0
  203. package/skills/omp-native-development/references/sessions-sdk-rpc.md +17 -0
  204. package/skills/omp-native-development/references/settings-providers-security.md +11 -0
  205. package/skills/omp-native-development/references/source-manifest.json +20 -4
package/README.md CHANGED
@@ -1,79 +1,35 @@
1
1
  <div align="center">
2
- <img src="docs/assets/bizar-omp-banner.svg" alt="BizarHarness OMP: autonomous engineering with evidence in the loop" width="100%" />
2
+ <img src="docs/assets/bizar-omp-banner.svg" alt="BizarOMP — native workflow, evidence, and session control for oh-my-pi" width="100%" />
3
3
 
4
4
  <p>
5
- <a href="https://www.npmjs.com/package/@polderlabs/bizar-omp"><img src="https://img.shields.io/npm/v/%40polderlabs%2Fbizar-omp?style=flat-square&color=0f766e&label=npm" alt="npm version" /></a>
6
- <a href="https://github.com/PolderLabs/BizarHarness-OMP/releases"><img src="https://img.shields.io/github/v/release/PolderLabs/BizarHarness-OMP?style=flat-square&color=2563eb&label=release" alt="latest GitHub release" /></a>
7
- <img src="https://img.shields.io/badge/OMP-18.4.8-2563eb?style=flat-square" alt="OMP 18.4.8" />
8
- <img src="https://img.shields.io/badge/Node.js-22%2B-18181b?style=flat-square&logo=nodedotjs&logoColor=5fa04e" alt="Node.js 22 or newer" />
9
- <img src="https://img.shields.io/badge/Bun-1.3.14%2B-18181b?style=flat-square&logo=bun&logoColor=fbf0df" alt="Bun 1.3.14 or newer" />
10
- <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-18181b?style=flat-square" alt="MIT license" /></a>
5
+ <a href="https://www.npmjs.com/package/@polderlabs/bizar-omp"><img src="https://img.shields.io/npm/v/%40polderlabs%2Fbizar-omp?style=flat-square&label=npm&color=cf0d77" alt="npm version" /></a>
6
+ <a href="https://github.com/PolderLabs/BizarHarness-OMP/releases/latest"><img src="https://img.shields.io/github/v/release/PolderLabs/BizarHarness-OMP?style=flat-square&label=release&color=0a6ed1" alt="latest GitHub release" /></a>
7
+ <img src="https://img.shields.io/badge/OMP-18.6.1-232833?style=flat-square" alt="OMP 18.6.1 qualified baseline" />
8
+ <img src="https://img.shields.io/badge/Node.js-22%2B-232833?style=flat-square&logo=nodedotjs&logoColor=ffffff" alt="Node.js 22 or newer" />
9
+ <img src="https://img.shields.io/badge/Bun-1.3.14%2B-232833?style=flat-square&logo=bun&logoColor=ffffff" alt="Bun 1.3.14 or newer" />
10
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-232833?style=flat-square" alt="MIT license" /></a>
11
11
  </p>
12
12
 
13
- <p><strong>Native engineering workflows for oh-my-pi.</strong><br />
14
- Plan the work, keep sessions alive, verify the result, and inspect the proof.</p>
13
+ <p><strong>Native workflow, evidence, and session control for <a href="https://github.com/can1357/oh-my-pi">oh-my-pi</a>.</strong></p>
15
14
  </div>
16
15
 
17
- > [!IMPORTANT]
18
- > BizarHarness OMP is an extension for [oh-my-pi](https://github.com/can1357/oh-my-pi), not a second agent runtime. OMP still owns models, credentials, tools, task execution, sessions, and conversation state.
19
-
20
- ## Start here
21
-
22
- Choose the path that matches what you are trying to do:
23
-
24
- | Your goal | Run this | What it gives you |
25
- | --- | --- | --- |
26
- | Set up the complete experience | `npx --yes @polderlabs/bizar-omp setup` | `omb`, `bizar-omp`, the OMP extension, native agents, skills, rules, prompts, tools, and model roles |
27
- | Preview setup before changing anything | `npx --yes @polderlabs/bizar-omp setup --dry-run` | A report of the plugin and missing settings the installer would add |
28
- | Start one durable engineering session | `omb` | OMP inside a Bizar-owned tmux host, with reconnect support |
29
- | Switch between projects and sessions | `omb agents` | The full session hub and new-session picker |
30
- | Watch sessions in a browser | `omb dashboard --open` | A local, loopback-only dashboard with a single-use link |
31
- | Stop or restart everything Bizar owns | `omb stop` / `omb restart` | Bizar sessions, the daemon, and the tray, with a per-resource report |
32
- | Update an installed Bizar command | `omb update` | The latest global `omb` package and, when OMP is available, its enabled plugin |
33
- | Install only the OMP extension | `omp plugin install @polderlabs/bizar-omp` | Extension discovery without installing the `omb` and `bizar-omp` shell commands |
34
-
35
- The shortest useful path is:
36
-
37
- ```sh
38
- npx --yes @polderlabs/bizar-omp setup
39
- omb
40
- ```
41
-
42
- The setup command is safe to preview and safe to run again. It preserves credentials, provider choices, approval policies, explicit `false` or empty settings, and project overrides. It proposes only settings that are absent.
43
-
44
- ## How Bizar fits into OMP
45
-
46
- <img src="docs/assets/bizar-omp-workflow.svg" alt="Bizar OMP workflow: plan, run, verify, integrate" width="100%" />
16
+ BizarOMP extends OMP with durable operator sessions, explicit engineering workflows, specialist roles, verification evidence, a local browser control plane, and an integrated Android companion. It is designed for long-running agentic engineering work where the result needs to be inspectable and the runtime needs to remain under operator control.
47
17
 
48
- Bizar adds the engineering contract around an OMP session:
49
-
50
- | You need | Bizar adds |
51
- | --- | --- |
52
- | A proportionate process | Focused, bounded, and full workflow tiers selected from scope and risk |
53
- | Durable work | `omb` sessions in tmux, or psmux on Windows, with reconnect and a cross-project hub |
54
- | Specialist help | Native roles for planning, research, implementation, review, security, verification, architecture, and documentation |
55
- | A stronger finish line | Acceptance criteria, host-observed checks, fresh evidence, review decisions, and serialized integration admission |
56
- | A readable operator view | OMP's native Advisor, visible agents, session activity, a local dashboard, and inspectable projections |
57
-
58
- The ownership boundary is deliberate:
59
-
60
- | OMP owns | Bizar owns |
61
- | --- | --- |
62
- | Models, providers, credentials, tools, task execution, session files, and conversation state | Workflow intent, acceptance, evidence freshness, candidate lineage, resource ownership, review policy, and integration admission |
63
-
64
- Bizar does not replace OMP's task system, add a parallel scheduler, or provide a Claude Code, MCP, or background-daemon compatibility layer.
18
+ > [!IMPORTANT]
19
+ > BizarOMP is not a second agent runtime. OMP remains the authority for models, providers, credentials, tools, task execution, session files, conversation state, and native agent behavior. Bizar adds workflow policy, evidence, resource ownership, session supervision, and integration gates around that runtime.
65
20
 
66
- ## Install
21
+ ## Quick start
67
22
 
68
23
  ### Requirements
69
24
 
70
- - Node.js 22 or newer
71
- - Bun 1.3.14 or newer
72
- - OMP 18.4.8 on `PATH`
73
- - OMP 18.4.4, 18.4.2, 18.4.1, 18.3.2, 18.3.0, 18.2.11, 18.2.8, 18.2.7, 18.2.6, 18.2.5, 18.2.4 remain regression-qualified
74
- - tmux on Linux and macOS, or [psmux](https://github.com/psmux/psmux) on Windows for durable sessions
25
+ | Component | Requirement |
26
+ | --- | --- |
27
+ | Node.js | 22 or newer |
28
+ | Bun | 1.3.14 or newer |
29
+ | OMP | 18.6.1 qualified baseline |
30
+ | Durable terminal sessions | `tmux` on Linux/macOS or `psmux` on Windows |
75
31
 
76
- Check the host before installing:
32
+ Check the host:
77
33
 
78
34
  ```sh
79
35
  node --version
@@ -81,346 +37,369 @@ bun --version
81
37
  omp --version
82
38
  ```
83
39
 
84
- ### Full installation
85
-
86
- This is the supported path for a complete Bizar OMP setup:
40
+ Install the complete BizarOMP experience:
87
41
 
88
42
  ```sh
89
43
  npx --yes @polderlabs/bizar-omp setup
44
+ omb
90
45
  ```
91
46
 
92
- The installer:
93
-
94
- 1. Installs the exact Bizar package version globally, providing `omb` and `bizar-omp`.
95
- 2. Registers and enables that same version through OMP's plugin manager.
96
- 3. Installs the extension, eight specialist agents, skills, rules, prompts, tools, and model roles.
97
- 4. Makes the Bizar Orchestrator the default conversation and enables OMP's native Advisor.
98
- 5. Adds only absent compatibility settings for background work, visible agents, and readable output.
99
- 6. Writes a recoverable receipt for settings it changed and reads the result back.
47
+ The setup command installs the `omb` and `bizar-omp` commands, registers the OMP extension, installs the Bizar agents and assets, and applies only the missing Bizar-owned defaults. Existing credentials, provider choices, project overrides, approval policy, explicit `false` values, and unrelated model-role configuration are preserved.
100
48
 
101
- For a reproducible install, pin the version:
49
+ Preview the installation first:
102
50
 
103
51
  ```sh
104
- npx --yes @polderlabs/bizar-omp@0.7.3 setup
52
+ npx --yes @polderlabs/bizar-omp setup --dry-run
105
53
  ```
106
54
 
107
- For a named OMP profile or a non-standard OMP binary:
55
+ For a reproducible install of the latest published release:
108
56
 
109
57
  ```sh
110
- npx --yes @polderlabs/bizar-omp setup --profile bizar
111
- npx --yes @polderlabs/bizar-omp setup --omp /path/to/omp
58
+ npx --yes @polderlabs/bizar-omp@0.9.0 setup
112
59
  ```
113
60
 
114
- Preview or script the same operation:
61
+ If you only want the native OMP extension:
115
62
 
116
63
  ```sh
117
- npx --yes @polderlabs/bizar-omp setup --dry-run
118
- npx --yes @polderlabs/bizar-omp setup --json
64
+ omp plugin install @polderlabs/bizar-omp
119
65
  ```
120
66
 
121
- The interactive installer shows detected versions, each phase, settings it will add, the recovery receipt, and the next commands. `--json` produces machine-readable output for shell automation.
67
+ That extension-only path does not install `omb` on `PATH`.
122
68
 
123
- To update an installed global `omb` command to the latest published release:
69
+ ## What BizarOMP adds
124
70
 
125
- ```sh
126
- omb update
127
- ```
128
-
129
- Use `omb update --check` to inspect versions without changing anything, or `omb update --dry-run` to preview the package and plugin refresh. The global command is updated even when OMP is not available; the plugin refresh is skipped until OMP is installed.
71
+ | Surface | What it adds |
72
+ | --- | --- |
73
+ | Durable runtime | Persistent OMP sessions hosted through `omb` with reconnect, ownership tracking, and cross-project discovery |
74
+ | Engineering workflow | Focused, bounded, and full workflow tiers with explicit objectives, acceptance criteria, review policy, and stop conditions |
75
+ | Evidence | Candidate-bound verification records, freshness checks, inspectable blockers, and serialized integration admission |
76
+ | Specialist agents | Native OMP roles for architecture, planning, research, implementation, review, security, verification, and documentation |
77
+ | Operator interfaces | Terminal hub, local browser dashboard, daemon, optional tray, machine-readable session inventory, and runtime controls |
78
+ | Mobile control | Integrated Android client and host bridge for paired remote control without moving provider credentials off the host |
79
+ | Model-role management | Bizar role mappings built on OMP's native model catalog and role system rather than a parallel model router |
130
80
 
131
- ### Extension-only installation
81
+ ## Architecture
132
82
 
133
- Use this when you already manage `omb` separately or only need the OMP extension:
83
+ BizarOMP deliberately separates runtime ownership from workflow ownership.
134
84
 
135
- ```sh
136
- omp plugin install @polderlabs/bizar-omp
85
+ ```text
86
+ Terminal / Browser / Android
87
+ │
88
+ ▼
89
+ ┌─────────────────────────────┐
90
+ │ Bizar operator layer │
91
+ │ omb · hub · dashboard │
92
+ │ mobile host · workflow │
93
+ │ evidence · admission │
94
+ └──────────────┬──────────────┘
95
+ │ native extension / RPC / Collab
96
+ ▼
97
+ ┌─────────────────────────────┐
98
+ │ oh-my-pi │
99
+ │ sessions · models · tools │
100
+ │ agents · providers · auth │
101
+ │ task lifecycle · journals │
102
+ └──────────────┬──────────────┘
103
+ │
104
+ ▼
105
+ Host filesystem / tools
137
106
  ```
138
107
 
139
- This does not install `omb` or `bizar-omp` on `PATH`. For checkout development, link the package instead:
108
+ | OMP owns | BizarOMP owns |
109
+ | --- | --- |
110
+ | Model registry and selection | Workflow intent and tiering |
111
+ | Provider credentials and authentication | Acceptance and evidence policy |
112
+ | Native tools and task execution | Candidate lineage and freshness |
113
+ | Conversation/session state | Bizar-owned session supervision |
114
+ | Agent lifecycle and native isolation | Integration admission and resource ownership |
115
+ | Approval and project policy | Operator projections, dashboard, and mobile control surfaces |
140
116
 
141
- ```sh
142
- omp plugin link /path/to/bizaromp
143
- ```
117
+ This boundary is a core design constraint. Bizar does not emulate OMP's task loop, shadow its credential store, or introduce a second scheduler.
144
118
 
145
- ### Check, repair, or remove
119
+ ## Engineering workflow
146
120
 
147
- ```sh
148
- bizar-omp install-doctor
149
- omp plugin list
150
- omp plugin doctor
151
- ```
121
+ <img src="docs/assets/bizar-omp-workflow.svg" alt="BizarOMP workflow: plan, run, verify, integrate" width="100%" />
152
122
 
153
- `install-doctor` reports the active plugin, receipt state, settings drift, and the policies Bizar left under OMP's control. Uninstall only the Bizar integration with:
123
+ The main OMP conversation acts as the Bizar orchestrator. Give it the outcome and constraints; Bizar selects the smallest workflow tier that can safely prove the change.
154
124
 
155
- ```sh
156
- bizar-omp uninstall
157
- ```
125
+ | Tier | Intended scope | Typical proof |
126
+ | --- | --- | --- |
127
+ | Focused | Small, local, understood changes | Targeted check, diff review, smoke test |
128
+ | Bounded | Contained behavior changes and small features | Explicit acceptance plus focused tests |
129
+ | Full | Security, migrations, concurrency, architecture, cross-cutting work | Planning, isolated implementation, review, fresh evidence, serialized integration |
158
130
 
159
- Uninstall restores a setting only when it still contains the value Bizar applied. If you changed that value later, Bizar preserves your change. Remove the global shell commands separately when needed:
131
+ The tier is based on effect scope and risk rather than how difficult the reasoning feels. A small credential or concurrency change can require the full path; a complex but isolated investigation can remain bounded.
160
132
 
161
- ```sh
162
- npm uninstall --global @polderlabs/bizar-omp
133
+ Start and inspect a managed workflow inside OMP:
134
+
135
+ ```text
136
+ /bizar run <objective>
137
+ /bizar status
138
+ /bizar evidence
139
+ /bizar inspect
140
+ /bizar recipe <objective>
141
+ /bizar capabilities
142
+ /bizar cancel [reason]
163
143
  ```
164
144
 
165
- ## Your first durable session
145
+ The corresponding LLM tools include `bizar_workflow`, `bizar_verify`, `bizar_evidence`, `bizar_integrate`, `bizar_inspect`, `bizar_recipe_preview`, `bizar_capabilities`, and `bizar_apply_model_roles`.
146
+
147
+ A stale check, changed candidate, unresolved blocker, or unknown native capability is not silently converted into success.
166
148
 
167
- ### 1. Start OMP through `omb`
149
+ ## Durable sessions with `omb`
168
150
 
169
- The extension registers `/bizar` with `init`, `run`, `status`, `next`, `cancel`, `evidence`, `inspect`, and `model-roles` subcommands, plus `/bizar-dashboard` and `/bizar-models` as direct commands. `/bizar-models preview` shows the live plan without writing settings; `/bizar-models` hands the live catalog and a deterministic baseline to the active agent and persists only the approved distribution while preserving non-Bizar roles and the configured global/project storage scope. OmniRoute route combos can resolve in OMP's catalog without having an executable backend. Bizar therefore excludes these opaque selectors from automatic role assignment, reports gateway 404 (no executable targets) separately from 429 (rate limit or quota), and never switches to another route automatically. Check the combo's eligible targets and limits in OmniRoute; use a concrete model selector when execution is required. Start with `/bizar run <objective>`; the LLM tools are `bizar_workflow`, `bizar_verify`, `bizar_evidence`, `bizar_integrate`, `bizar_recipe_preview`, `bizar_inspect`, `bizar_capabilities`, and `bizar_apply_model_roles`.
151
+ `omb` is the operator entry point. Unknown `omb` arguments are passed through to OMP, so normal OMP usage remains available: `omb --resume` reopens a conversation and `omb --export` writes a handoff, and both are OMP's own options rather than `omb`'s.
170
152
 
171
153
  ```sh
172
154
  omb
155
+ omb "fix the failing test"
156
+ omb --resume
173
157
  ```
174
158
 
175
- `omb` starts OMP inside a Bizar-owned tmux session from the first process. Closing the terminal client detaches from the session; it does not stop the host or its background agents. Run `omb` again in the same directory to reconnect to the most recently active live session.
159
+ When durable hosting is available, `omb` starts OMP inside a Bizar-owned multiplexer session. Closing the terminal detaches the client without terminating the host. Running `omb` again in the same project reconnects to the most relevant live session.
176
160
 
177
- OMB starts OMP in its normal project and profile session directory, so both entry points discover and write the same native JSONL, including when OMP atomically rewrites it during compaction. The extension holds an ownership lease while a journal is open and refuses a resume that would create a second writer. The extension keeps a private Bizar-to-OMP identity binding for dashboard history and rename safety; deleting an OMB session removes the native journal from OMP discovery and leaves a Bizar tombstone.
178
-
179
- Use a task-specific session when you want an explicit name:
161
+ Create or select explicit sessions:
180
162
 
181
163
  ```sh
182
164
  omb new "Investigate the API timeout"
183
165
  omb --session api-retries
184
166
  ```
185
167
 
186
- `omp` remains the direct OMP command. Use it when you do not need durable tmux or psmux behavior.
168
+ OMP still writes its native journal. Bizar tracks the mapping and enforces one active writer for the same owned conversation so reconnect, dashboard, and mobile control do not silently create competing writers.
187
169
 
188
- ### 2. Ask for work in the main conversation
170
+ ### Session hub
189
171
 
190
- The main conversation is the Bizar Orchestrator. Give it the outcome and constraints in plain language. It selects the smallest workflow tier that fits the work:
172
+ ```sh
173
+ omb agents
174
+ omb a
175
+ omb agents --new
176
+ omb hub
177
+ ```
191
178
 
192
- | Tier | Good fit | Typical proof |
193
- | --- | --- | --- |
194
- | Focused | A typo, small documentation edit, or narrow local fix | Targeted check, diff review, or smoke test |
195
- | Bounded | A contained behavior change or small feature | Acceptance criteria and focused tests |
196
- | Full | Security, architecture, migrations, concurrency, or cross-cutting work | Planning, isolation, review, fresh evidence, and serialized integration |
179
+ The hub provides:
197
180
 
198
- The tier can escalate when the scope or risk changes. A focused request still gets validation.
181
+ - current-directory and all-project scopes;
182
+ - active, stopped, and combined session filters;
183
+ - attach, continue, rename, delete, refresh, settings, and new-session actions;
184
+ - recursive project discovery from a configured project root;
185
+ - privacy-safe activity summaries derived from Bizar's session view;
186
+ - optional mouse input and tray integration.
199
187
 
200
- ### 3. Inspect the work
188
+ The session state reflects journal activity and host liveness rather than tmux attachment alone. A detached session can continue to be `working`.
201
189
 
202
- Inside OMP, these commands expose the workflow state and proof:
190
+ For scripts and integrations:
203
191
 
204
- ```text
205
- /bizar run <objective> Start a bounded workflow
206
- /bizar status Show the active workflow state
207
- /bizar evidence List recorded checks and evidence
208
- /bizar inspect Explain blockers and evidence lineage
209
- /bizar recipe <objective> Preview an inspectable recipe
210
- /bizar capabilities Show native qualification boundaries
211
- /bizar cancel [reason] Cancel the active workflow
192
+ ```sh
193
+ omb sessions --json
194
+ omb help sessions
212
195
  ```
213
196
 
214
- The tools behind these commands keep completion tied to fresh, host-observed checks. A stale check, changed candidate, missing review, or unknown native capability remains a blocker instead of being silently treated as success.
197
+ ## Browser dashboard
215
198
 
216
- Useful model and dashboard commands are also available:
199
+ Start or open the local dashboard:
217
200
 
218
- ```text
219
- /bizar-models Ask the agent to distribute OMP's models across Bizar roles
220
- /bizar-models preview Show the live catalog's deterministic baseline without writing settings
221
- /bizar-models health Validate configured role selectors
222
- /bizar-dashboard Print a single-use local dashboard link
223
- /bizar-dashboard open Open the dashboard in the default browser
224
- /bizar-dashboard stop Stop the dashboard daemon
201
+ ```sh
202
+ omb dashboard
203
+ omb dashboard --open
204
+ omb dashboard --json
225
205
  ```
226
206
 
227
- `/bizar-models` reads OMP's authenticated model catalog locally, reports what changed since the last observation, and hands the catalog, the current mapping, and a deterministic baseline to the active agent, which decides the distribution and persists it through the native `bizar_apply_model_roles` tool. That tool validates every selector against the live catalog and writes the whole mapping or nothing, preserving unrelated roles; a host without agent messaging applies the baseline itself. It does not promise a particular provider, model family, price, or quality level.
207
+ The dashboard is a self-contained local operator UI backed by the Bizar daemon. It provides session selection, structured conversation history, bounded live console capture, prompt sending, terminal attach, lifecycle controls, model/thinking/permission defaults for newly created sessions, and OMP/provider settings surfaces.
228
208
 
229
- Command reports are longer than a status line can show, so the complete text is appended to `.bizar-omp/run.log` in the project the command ran in, as one JSON line per run with its timestamp, command event, and last session entry. The status line shows the fitted summary.
209
+ Security properties are intentionally narrow:
230
210
 
231
- ## The `omb agents` hub
211
+ - the dashboard binds to `127.0.0.1`;
212
+ - access uses a single-use code with a short expiry;
213
+ - the exchanged token stays in browser session memory;
214
+ - provider secrets remain write-only;
215
+ - session-list payloads exclude environment values, raw prompts, pane commands, process IDs, credentials, and terminal history;
216
+ - console capture is authenticated, bounded, and control-sequence stripped;
217
+ - mutations are serialized and ownership-checked.
232
218
 
233
- Open the session switcher from any project:
219
+ Daemon lifecycle:
234
220
 
235
221
  ```sh
236
- omb agents
237
- omb agents --new # open the new-session picker immediately
238
- omb hub # alias for omb agents
222
+ omb daemon start
223
+ omb daemon status
224
+ omb daemon restart
225
+ omb daemon stop
239
226
  ```
240
227
 
241
- By default the hub shows the sessions of the current directory, including sessions whose host has stopped. Press `Tab` to switch to every project, and again to return. Press `f` to cycle the state filter between `Active`, `Stopped`, and `Both`. It includes:
242
-
243
- - A `Cwd`/`All` scope row and an `Active`/`Stopped`/`Both` state row in the header, and matching filters in the plain-text view.
244
- - One full-width, workspace-grouped session list with a compact selected-session strip.
245
- - Attach, continue, rename, delete, refresh, settings, help, and reconnect controls.
246
- - A new-session selector opened with `n`.
247
- - Recursive search inside the configured Project directory root, parent navigation, recent paths, autocomplete, and direct absolute paths.
248
- - Optional task text and an explicit session name.
249
- - Privacy-safe activity summaries derived from the session journal. Prompts, thinking text, shell commands, tool output, credentials, and raw terminal history are not rendered.
250
- - Optional native tray controls for opening the hub, creating a session, attaching a named session, stopping the daemon, and quitting the tray.
251
-
252
- ### Hub controls
253
-
254
- | Key | Action |
255
- | --- | --- |
256
- | `Tab` | Switch the list between this directory (`Cwd`) and every project (`All`) |
257
- | `f` | Cycle the state filter between `Active`, `Stopped`, and `Both` |
258
- | `Enter` | Attach to the selected live session, or continue a stopped one by restarting its host |
259
- | `n` | Open the full new-session menu |
260
- | `e` | Rename the selected session inline |
261
- | `d` | Delete the selected Bizar session |
262
- | `s` | Open settings |
263
- | `r` | Refresh without moving selection or scroll |
264
- | `?` | Open help |
265
- | `q` | Exit the hub |
266
-
267
- Mouse clicks select sessions and a second click opens a live one. Mouse scrolling moves through the session list while the hub is open. The hub enables terminal SGR mouse reporting only for its own lifetime. Mouse behavior inside an attached OMP session follows the session's OMP and multiplexer settings.
228
+ If daemon ownership cannot be verified, Bizar reports that state as unknown and refuses unsafe takeover rather than treating an uncertain lock as stopped.
268
229
 
269
- To configure project discovery, open `s`, select `Project directory root`, press `Enter`, enter a path such as `~/projects`, and save. Use `Agents view scope` to make `Cwd` or `All` the opening view; the choice is shared by every hub window. Use `Sessions shown` to keep only active sessions, only stopped ones, or both; stopped sessions are shown by default so a conversation whose host exited stays reachable. Pressing `Enter` on a stopped session restarts a host bound to that exact conversation and attaches to it. Deleting a session also tombstones its native journal so a recent history entry cannot reappear as an unopenable session; deleting an already unhosted row removes that stale history entry.
230
+ ## Android companion
270
231
 
271
- ### Session states
232
+ The integrated mobile workspace lives in [mobile/](mobile/README.md). It contains:
272
233
 
273
- | State | Meaning |
274
- | --- | --- |
275
- | `working` | The journal shows unfinished work. |
276
- | `waiting` | The agent finished its turn and is waiting for input, whether or not a client is attached. |
277
- | `connected` | A client is attached and no structured activity has been journaled yet. |
278
- | `disconnected` | The host is live and unattached, and the journal gives no evidence either way. |
279
- | `stopped` | No host is observed and the journal is silent. |
234
+ - `apps/mobile` — React Native Android client;
235
+ - `packages/host` — loopback host bridge supervising the installed OMP runtime;
236
+ - `packages/protocol` — versioned shared transport and capability contracts.
280
237
 
281
- State follows journal activity and host liveness, not tmux attachment alone. A detached session can remain `working`. Activity that stops advancing is marked `stalled`; old journal data is marked `stale`.
238
+ The architecture keeps OMP on the user's machine:
282
239
 
283
- ### Optional tray
240
+ ```text
241
+ Android app
242
+ │ HTTPS + authenticated WebSocket
243
+ ▼
244
+ Cloudflare edge
245
+ │ outbound Cloudflare Tunnel
246
+ ▼
247
+ 127.0.0.1 Bizar mobile host
248
+ │ supervised JSONL / native control
249
+ ▼
250
+ installed OMP
251
+ ```
284
252
 
285
- Enable the tray from hub Settings or use:
253
+ Pair a device:
286
254
 
287
255
  ```sh
288
- omb tray start
289
- omb tray status
290
- omb tray stop
256
+ omb pair
291
257
  ```
292
258
 
293
- The native tray backend is available on supported Linux, macOS, and Windows hosts. Unsupported desktop environments keep the terminal hub and daemon available.
259
+ Mobile uses the same desktop OMB session inventory. Existing desktop-owned sessions are controlled through the qualified native paths rather than by opening the same OMP journal with a second writer.
294
260
 
295
- ## Browser dashboard and daemon
261
+ Anonymous Cloudflare Quick Tunnels are supported as ephemeral development endpoints. Named tunnels and custom hostnames are the persistent mode. Provider credentials stay on the host.
296
262
 
297
- The daemon keeps a session snapshot fresh independently of a terminal client. The dashboard binds to loopback and uses a single-use access code that expires after five minutes.
263
+ Mobile source-development commands:
298
264
 
299
265
  ```sh
300
- omb daemon start
301
- omb daemon status
302
- omb daemon restart
303
- omb daemon stop
266
+ omb mobile workspace install
267
+ omb mobile workspace check
268
+ omb mobile app start
269
+ omb mobile app android
270
+ omb mobile app android:release
304
271
  ```
305
272
 
306
- Open the dashboard:
273
+ The mobile workspace has its own pnpm lockfile and is intentionally excluded from the npm package's `files` allowlist. See [mobile/README.md](mobile/README.md) for architecture, security boundaries, and build requirements.
307
274
 
308
- ```sh
309
- omb dashboard # print the local URL
310
- omb dashboard --open # print and open it in the default browser
311
- omb dashboard --json # emit { url, port, pid, code }
312
- omb dashboard stop # stop the daemon; tmux sessions keep running
313
- ```
275
+ ## Native agents and model roles
314
276
 
315
- The dashboard is organized around the active session. Choose a workspace session, read its live tmux console, and send a message from the composer with **Ctrl Enter**. Console output refreshes automatically without pulling you back to the bottom when you scroll up. **Open terminal** remains available for full-screen OMP interaction.
277
+ Bizar installs native specialist definitions rather than inventing a private worker protocol.
316
278
 
317
- Create, rename, attach, and stop actions stay alongside the selected session. The new-session dialog lets you choose an available OMP model, thinking level, and permission mode. Dashboard settings can save those three choices as defaults for future dashboard-created sessions, alongside the shared project-root, auto-attach, mouse-forwarding, stopped-session, and tray preferences. Existing sessions keep the runtime they were launched with.
279
+ | Specialist | Purpose |
280
+ | --- | --- |
281
+ | Architect | System boundaries, interfaces, and cross-cutting design |
282
+ | Planner | Scope, dependencies, sequencing, and acceptance |
283
+ | Researcher | Evidence-grounded investigation |
284
+ | Implementer | Focused implementation in the assigned workspace |
285
+ | Reviewer | Independent correctness review |
286
+ | Security reviewer | Threat- and trust-boundary review |
287
+ | Verifier | Reproducible validation and evidence |
288
+ | Documentation | User and maintainer documentation |
318
289
 
319
- Permission choices map directly to OMP: **Always ask** auto-approves read-only tools, **Allow workspace writes** also auto-approves workspace writes, and **Auto approve all** uses OMP's `yolo` approval mode. OMP policy may still prompt or block an operation. Attach uses a terminal emulator from `PATH`; set `BIZAR_TERMINAL` to override detection. If no emulator is available, the dashboard returns the exact attach command.
290
+ Concrete models remain an OMP concern. Bizar role mappings are selectors over OMP's live catalog and preserve operator-owned roles and settings.
320
291
 
321
- The dashboard does not fetch a remote frontend. It serves one self-contained page, binds to `127.0.0.1`, and keeps the exchanged token in browser session memory. `omb dashboard --open` replaces an incompatible resident daemon before opening the page, so an upgrade cannot leave stale dashboard styling or scripts running. The session-list payload excludes credentials, environment values, pane commands, process ids, prompts, and terminal history. Opening a session console makes a separate authenticated request for a bounded, control-sequence-stripped capture of that exact Bizar-owned tmux pane; composer input is length-limited and sent literally to that pane.
292
+ Useful commands:
322
293
 
323
- ## Stopping and restarting the runtime
294
+ ```text
295
+ /bizar-models
296
+ /bizar-models preview
297
+ /bizar-models health
298
+ ```
324
299
 
325
- `omb stop` is the single teardown path for everything Bizar owns: Bizar-named tmux sessions, the daemon, and the tray. With no target flag it stops all three, and stopping something that is not running is a success rather than an error.
300
+ `/bizar-models preview` shows the proposed mapping without writing settings. Applying a mapping validates selectors against OMP's live catalog and writes the Bizar mapping atomically rather than partially mutating it.
326
301
 
327
- ```sh
328
- omb stop # sessions, daemon, and tray
329
- omb stop --all # sessions and services (the default)
330
- omb stop --sessions # only Bizar-owned tmux sessions
331
- omb stop --session ADDRESS # one session, repeatable: Bizar name, session id,
332
- # or the digest its name carries
333
- omb stop --idle # only sessions with no client and no work in flight
334
- omb stop --daemon # only the daemon (alias: --dashboard)
335
- omb stop --tray # only the tray
336
- omb stop --force # also stop sessions a client is attached to
337
- omb stop --dry-run # report what would stop without stopping it
338
- omb stop --json # { command, dryRun, stopped, started, skipped,
339
- # planned, failed, resources }
302
+ ## `omb` command reference
303
+
304
+ ```text
305
+ omb help
306
+ omb help <command>
307
+ omb help --json
340
308
  ```
341
309
 
342
- Every `omb stop` row reports what happened to that resource — `stopped`, `skipped` with the reason, `planned` for a dry run, or `failed` — and states `stopped` as a boolean as well, so a reader that only asks whether a resource is now stopped does not have to know the action vocabulary.
310
+ | Command | Purpose |
311
+ | --- | --- |
312
+ | `omb [omp args]` | Run or attach OMP with durable Bizar session handling |
313
+ | `omb agents` / `omb a` | Interactive cross-project session hub |
314
+ | `omb sessions` / `omb s` | Session inventory, including machine-readable output |
315
+ | `omb dashboard` | Start/open the local browser dashboard |
316
+ | `omb daemon` | Manage the detached loopback daemon |
317
+ | `omb tray` | Manage the optional native tray |
318
+ | `omb pair` | Pair the Android companion with this host |
319
+ | `omb mobile` | Manage mobile host and source workspace operations |
320
+ | `omb stop` | Stop selected or all Bizar-owned runtime resources |
321
+ | `omb restart` | Restart the Bizar runtime services |
322
+ | `omb update` | Update the global Bizar package and enabled OMP plugin |
323
+ | `omb help` | Show command help and the public dispatch surface |
343
324
 
344
- Only Bizar-owned sessions are ever candidates, `omb stop` never stops the session it is running inside, and an address that does not name exactly one session is refused with exit code 2 before anything is stopped. A Bizar name that is not running is a success with a `not found` row, so the same command twice is safe.
325
+ Use `omb help <command>` for the authoritative options of each command instead of relying on copied flag lists in external notes.
345
326
 
346
- Target flags are additive, except that `--all` together with `--session NAME` narrows the session selection to the sessions named while the daemon and the tray are still stopped. The daemon and the tray are signalled only while the recorded lock's PID is verified to still be that process, so a lock that cannot be verified is skipped with a reason instead of signalled.
327
+ ## Update, diagnose, and remove
347
328
 
348
- A session is reported `stopped` only when its absence is proven: a `kill-session` the multiplexer refused, or a refusal that could not be confirmed by listing the sessions, is reported as `failed` rather than as a stop that did not happen. A multiplexer that is not installed, or that has no server running, stops nothing and reports success.
329
+ Inspect the installation:
349
330
 
350
331
  ```sh
351
- omb restart # stop the runtime, then start the daemon and tray
352
- omb restart --force # also stop sessions a client is attached to
353
- omb restart --dry-run # report the plan without stopping or starting
354
- omb restart --json # { command, dryRun, stopped, started, skipped,
355
- # planned, failed, resources, url }
332
+ bizar-omp install-doctor
333
+ omp plugin list
334
+ omp plugin doctor
356
335
  ```
357
336
 
358
- `omb restart` always stops the whole runtime first, so `omb stop` owns the target flags: `--all`, `--sessions`, `--session NAME`, `--daemon`, `--dashboard`, `--tray`, and `--idle` are all refused with an error that points at `omb stop` and exit code 2. It starts the daemon, starts the tray only when the tray is enabled in hub settings, and prints a fresh single-use dashboard link. Agent sessions are not relaunched: their journals are kept, so `omb` in a project or the hub brings a session back.
359
-
360
- `omb restart` reports exactly one row per resource — each Bizar-owned tmux session, the daemon, the tray, and the dashboard. A row's `state` is the state observed before the command acted, and its `action` is what the restart did with that resource overall: `started` when the resource was stopped and started again (reason `stopped, then started`), `stopped` when it ended stopped (a session, or a tray that settings no longer run), `skipped` when there was nothing to do, and `failed` on a failure. A stop that failed leaves that resource's row `failed` even when the resource was started again, and the exit code is nonzero; the daemon and the tray are still started, so the runtime is left usable.
361
-
362
- `omb restart --dry-run` uses the same one-row-per-resource shape, including the dashboard row, with action `planned` and reason `stop, then start`; a tray that settings do not enable is `skipped` instead. In `--json`, `url` is always present: the freshly minted dashboard access link, or `null` when no link was minted, which is a dry run or a dashboard that failed to start.
363
-
364
- `omb help` lists the commands, and `omb help <command>` prints that command's own usage; `--help` works on every command too.
337
+ Check or update Bizar:
365
338
 
366
339
  ```sh
367
- omb help # every command
368
- omb help stop # one command's usage
369
- omb help --json # { commands: [{ name, names, summary, usage }] }
340
+ omb update --check
341
+ omb update --dry-run
342
+ omb update
370
343
  ```
371
344
 
372
- `omb --help` and `omb -h` are omb's own tokens and print omb's table; use `omp --help` for OMP's own help. `--session ADDRESS`, `--session-id ADDRESS`, and `--new` are omb's launcher options and are consumed before OMP sees them; anything else `omb` does not recognise is passed through to OMP, so `omb --resume` and `omb "fix the failing test"` keep their OMP meaning.
345
+ `omb update` updates Bizar itself. It does not silently upgrade OMP; use OMP's own update path for the runtime.
373
346
 
374
- ## Native roles and assets
347
+ Remove the Bizar integration:
375
348
 
376
- Installation registers visible `bizar_*` roles without replacing operator-owned mappings. The default package includes:
377
-
378
- - Bizar Orchestrator and Advisor integration.
379
- - Specialist agents for architecture, planning, research, implementation, review, security, verification, and documentation.
380
- - The `bizar-omp` orientation and workflow skills.
381
- - Native rules, prompts, tools, evidence schemas, and the OMP-native development reference skill.
349
+ ```sh
350
+ bizar-omp uninstall
351
+ npm uninstall --global @polderlabs/bizar-omp
352
+ ```
382
353
 
383
- The role names are selectors, not guarantees of speed, cost, provider, or model quality. Inspect the resolved OMP catalog when those properties matter.
354
+ Install/uninstall operations use an owner lease and a recovery receipt. Bizar only restores a setting when it still matches the value Bizar previously applied; later operator edits are preserved.
384
355
 
385
356
  ## Safety and ownership boundaries
386
357
 
387
- - Bizar is trusted in-process extension code. OMP extensions and shell commands are not an OS sandbox.
388
- - Credentials, API keys, `.env` contents, and private control links are excluded from logs, commits, and evidence bundles.
389
- - OMP keeps ownership of credentials, providers, model selections, approval policies, tool policies, and project overrides.
390
- - Managed worker changes stay isolated and require explicit parent integration. Bizar never silently applies worker patches.
391
- - Git worktree cleanup is preview-first, ownership-aware, and non-forced. Ignored or uncertain content blocks cleanup.
392
- - A journal has at most one writer. A host that resumes a different conversation probes the target for a competing writer, then moves its own generation binding and journal manifest together; if either cannot be written, the host is left deliberately unrecoverable rather than still bound to the conversation it left, and a dead pane refuses to respawn instead of resuming the wrong one. The probe is point-in-time — OMP emits no cancellation event for a switch that does not commit, so ownership is re-established on the confirmed switch rather than held across that gap.
393
- - The agents hub never presents an unanswered multiplexer scan as an empty session list. A refused scan keeps the last confirmed rows and marks the view degraded; a refused scan at startup is reported rather than opening an empty hub.
394
- - Managed-workflow refusals name the run, its phase, and the cancel that releases it. A run left mid-flight otherwise blocks every `task` call and every non-allowlisted tool for the rest of the session with no in-band way out.
395
- - Install only in projects and environments you trust. Review `setup --dry-run` and `bizar-omp install-doctor` before making changes.
396
-
397
- ### Qualification boundary
358
+ BizarOMP is infrastructure around an agent runtime, so its boundaries are explicit:
398
359
 
399
- The 0.6.7 release ships the `omb a` alias for the agents view, an interactive Ink progress panel for `omb update`, and a live Server-Sent Events chat stream with connection status in the dashboard, published on [npm](https://www.npmjs.com/package/@polderlabs/bizar-omp) and available as a [GitHub release](https://github.com/PolderLabs/BizarHarness-OMP/releases/tag/v0.6.7).
360
+ - Bizar extension code is trusted in-process code. It is not an operating-system sandbox.
361
+ - OMP remains the source of truth for providers, credentials, models, approval policy, tools, and conversation state.
362
+ - Managed worker output is not silently integrated. Candidate identity, evidence, and admission state remain explicit.
363
+ - Verification evidence is tied to the candidate it observed; changed candidates invalidate stale proof.
364
+ - Bizar-owned Git cleanup is non-forced and ownership-aware. Uncertain or ignored content blocks automatic cleanup.
365
+ - Session journals are single-writer resources. Unknown ownership blocks mutation instead of being guessed away.
366
+ - Dashboard and mobile projections intentionally expose less than the local terminal runtime.
367
+ - Credentials, API keys, `.env` contents, and private control links are excluded from normal workflow logs and evidence bundles.
368
+ - Mobile remote control does not move provider secrets to the phone.
369
+ - Unsupported native execution paths are reported as capability boundaries rather than being presented as universally managed.
400
370
 
401
- The release does not claim OS sandboxing, provider model quality, universal native task or eval interception, automatic cleanup of an unqualified native isolation backend, or Claude Code/AO compatibility. See the [support matrix](docs/releases/support-matrix.md) for the current boundary.
371
+ Read [docs/releases/support-matrix.md](docs/releases/support-matrix.md) for the current qualification boundary.
402
372
 
403
373
  ## Compatibility
404
374
 
405
- | Component | Qualified baseline |
375
+ Current source-tree package: `@polderlabs/bizar-omp@0.8.1`. Latest published release: [0.8.1](https://github.com/PolderLabs/BizarHarness-OMP/releases/tag/v0.8.1).
376
+
377
+ | Component | Qualified state |
406
378
  | --- | --- |
407
- | OMP | 18.4.8 at release commit `717f97f4d22b3d65c4a4eef6a744255d46f4d1a6`; 18.4.4, 18.4.2, 18.4.1, 18.3.2, 18.3.0, 18.2.11, 18.2.8, 18.2.7, 18.2.6, 18.2.5, and 18.2.4 remain regression-qualified |
408
- | Node.js | 22.x and 24.x |
409
- | Bun | 1.3.14 compatibility job |
410
- | Package | `@polderlabs/bizar-omp@0.7.3` |
379
+ | BizarOMP source | 0.8.1 |
380
+ | Latest published release | 0.8.1 |
381
+ | OMP | 18.6.1 at release commit `2a2c6dcbbb558c0f8145f67f28b3370984f2bf60` |
382
+ | OMP regression baseline | 18.4.4 remains regression-qualified in the current support matrix |
383
+ | OMP accepted versions | 18.2.4, 18.2.5, 18.2.6, 18.2.7, 18.2.8, 18.2.11, 18.3.0, 18.3.2, 18.4.1, 18.4.2, 18.4.4 and 18.4.8 remain qualified alongside the 18.6.1 baseline |
384
+ | Node.js | 22.x and 24.x in CI |
385
+ | Bun | 1.3.14 compatibility job; package requires >= 1.3.14 |
386
+ | Durable session backend | tmux on Linux/macOS; psmux on Windows |
387
+ | License | MIT |
411
388
 
412
- Upstream OMP changes require a new compatibility baseline and contract run. The package does not widen a version range to hide an unqualified runtime.
389
+ The compatibility receipt is committed at [compatibility-receipt.json](compatibility-receipt.json). Upstream OMP changes require a new contract run and compatibility baseline; Bizar does not broaden a version range to hide an unqualified runtime.
413
390
 
414
- ## Development and verification
391
+ ## Development
392
+
393
+ Install dependencies and run the canonical repository gate:
415
394
 
416
395
  ```sh
417
396
  npm ci
418
- npm run typecheck
419
- npm test
420
- make verify
397
+ make check
421
398
  ```
422
399
 
423
- `make verify` runs typecheck, tests, package verification, generated documentation checks, and secret scanning. Build the package directly with:
400
+ `make check` covers typechecking, tests, package verification, generated-document checks, and secret scanning.
401
+
402
+ Individual package checks:
424
403
 
425
404
  ```sh
426
405
  npm run build
@@ -428,45 +407,48 @@ npm run verify:package
428
407
  npm run pack:check
429
408
  ```
430
409
 
431
- The native OMP qualification needs the OMP source package. When it is available:
410
+ OMP source qualification, when the target OMP source package is available:
432
411
 
433
412
  ```sh
434
413
  npm run verify:omp
435
414
  npm run verify:omp:registry
436
415
  ```
437
416
 
438
- ### Mobile app and host
439
-
440
- The Android app, shared protocol, and mobile host are maintained together in the
441
- isolated [mobile workspace](https://github.com/PolderLabs/BizarHarness-OMP/tree/main/mobile/README.md).
442
- Its pnpm lockfile and build
443
- configuration stay separate from Bizar's npm package so React Native tooling
444
- does not affect the CLI package or its release contents.
445
-
446
- Mobile development commands require pnpm 11 and the Android SDK/JDK for device
447
- builds. They are intended for a Bizar source checkout. The host implementation
448
- is an internal module and all operator commands are under `omb mobile`.
449
- Bizar installs `omb` as the operator command and leaves `omp` as the native OMP
450
- executable. Older installations that wrapped `omp` are restored during the next
451
- Bizar install.
452
-
453
- From the Bizar repository root, mobile workspace operations are also under
454
- `omb mobile`:
417
+ The Android workspace is intentionally isolated from the npm package and uses pnpm 11 plus the Android SDK/JDK for device builds:
455
418
 
456
419
  ```sh
457
420
  omb mobile workspace install
458
421
  omb mobile workspace check
459
- omb mobile app start
460
422
  ```
461
423
 
462
- For a device build, set up the Android SDK and JDK as described in the mobile
463
- guide, then run `omb mobile app android` for a debug install or
464
- `omb mobile app android:release` for a standalone APK. Build the internal host
465
- with `omb mobile build`, then use `omb pair`, `omb mobile devices` or
466
- `omb mobile tunnel` from the same checkout. Pairing and the mobile gateway are
467
- supervised by the OMB daemon.
424
+ ## Repository map
468
425
 
469
- Release notes and compatibility records live in [`docs/releases/`](docs/releases/). See [CONTRIBUTING.md](CONTRIBUTING.md) for branch conventions, release tags, and trusted publishing.
426
+ | Path | Purpose |
427
+ | --- | --- |
428
+ | [src/](src/) | Extension, workflow engine, evidence, OMP integration, CLI, daemon, dashboard, and runtime code |
429
+ | [agents/](agents/) | Native Bizar specialist definitions |
430
+ | [skills/](skills/) | Bizar and OMP-native agent skills |
431
+ | [rules/](rules/) | Runtime and workflow rules |
432
+ | [prompts/](prompts/) | Prompt assets used by the extension |
433
+ | [schemas/](schemas/) | Typed evidence and workflow schemas |
434
+ | [tests/](tests/) | Unit, integration, contract, runtime, ownership, dashboard, and compatibility tests |
435
+ | [mobile/](mobile/) | Android app, mobile host, shared protocol, docs, and mobile test suites |
436
+ | [docs/](docs/) | Architecture, compatibility, development, security, decisions, and release records |
437
+ | [audits/](audits/) | Structured historical repository audits and evidence |
438
+ | [compatibility-receipt.json](compatibility-receipt.json) | Current source/runtime qualification receipt |
439
+
440
+ ## Documentation
441
+
442
+ Start with these references:
443
+
444
+ - [DESIGN.md](DESIGN.md) — dashboard/mobile product and interface contract.
445
+ - [CONTRIBUTING.md](CONTRIBUTING.md) — contributor workflow and release conventions.
446
+ - [docs/releases/support-matrix.md](docs/releases/support-matrix.md) — current qualification boundary.
447
+ - [docs/releases/0.8.0.md](docs/releases/0.8.0.md) — latest published release note.
448
+ - [docs/compatibility/](docs/compatibility/) — OMP compatibility records.
449
+ - [docs/security/](docs/security/) — security reviews, recovery notes, and threat-oriented audits.
450
+ - [mobile/README.md](mobile/README.md) — mobile architecture, pairing, transport, and development.
451
+ - [AGENTS.md](AGENTS.md) — repository instructions for development agents.
470
452
 
471
453
  ## License
472
454