@oxgeneral/orch 1.0.4 → 1.0.6

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 (64) hide show
  1. package/dist/App-LEVUTWQN.js +22 -0
  2. package/dist/{chunk-YHIYJ5OL.js → chunk-4TDXD3LA.js} +60 -8
  3. package/dist/chunk-4TDXD3LA.js.map +1 -0
  4. package/dist/{chunk-BSJVYRI3.js → chunk-EH3HRQP4.js} +59 -8
  5. package/dist/chunk-EH3HRQP4.js.map +1 -0
  6. package/dist/chunk-FQ5YUP4J.js +4 -0
  7. package/dist/{chunk-TPTHLFOB.js → chunk-HYPSQAQX.js} +1 -1
  8. package/dist/{chunk-LXNRCJ22.js → chunk-KR7VDF23.js} +1 -1
  9. package/dist/{chunk-KFQTWMZI.js → chunk-LOJ26OVK.js} +1 -1
  10. package/dist/{chunk-PJ5DKXGR.js → chunk-N4OXN2HW.js} +1 -1
  11. package/dist/{chunk-MOWC2CHX.js → chunk-TWEMIPRN.js} +12 -8
  12. package/dist/chunk-TWEMIPRN.js.map +1 -0
  13. package/dist/chunk-WVJTXBPL.js +11 -0
  14. package/dist/claude-ADMRIWTR.js +2 -0
  15. package/dist/{claude-4R6L6BWY.js → claude-OTQ2NSJR.js} +3 -3
  16. package/dist/{claude-4R6L6BWY.js.map → claude-OTQ2NSJR.js.map} +1 -1
  17. package/dist/cli.js +1 -1
  18. package/dist/{codex-YRSODLH4.js → codex-AZD52UPS.js} +1 -1
  19. package/dist/{codex-IMOW5ZUZ.js → codex-WQ3LU3MM.js} +3 -3
  20. package/dist/{codex-IMOW5ZUZ.js.map → codex-WQ3LU3MM.js.map} +1 -1
  21. package/dist/container-FXUUV6PP.js +4 -0
  22. package/dist/{cursor-2HILMNM3.js → cursor-M3EJ432K.js} +1 -1
  23. package/dist/{cursor-NHV7X3WG.js → cursor-TKV5FFCN.js} +3 -3
  24. package/dist/{cursor-NHV7X3WG.js.map → cursor-TKV5FFCN.js.map} +1 -1
  25. package/dist/doctor-P2J6VAUX.js +2 -0
  26. package/dist/index.d.ts +18 -2
  27. package/dist/index.js +14 -11
  28. package/dist/index.js.map +1 -1
  29. package/dist/{init-56QC5QVX.js → init-PTAYCSMO.js} +4 -4
  30. package/dist/once-runner-AMKCFW22.js +2 -0
  31. package/dist/{opencode-3S4VDXRG.js → opencode-4G7VAZGY.js} +1 -1
  32. package/dist/{opencode-ULT6DYCT.js → opencode-YWT3M4NX.js} +3 -3
  33. package/dist/{opencode-ULT6DYCT.js.map → opencode-YWT3M4NX.js.map} +1 -1
  34. package/dist/orchestrator-JOTMB5XT.js +13 -0
  35. package/dist/orchestrator-XPEMMBOO.js +6 -0
  36. package/dist/{orchestrator-QFNYZ6AH.js.map → orchestrator-XPEMMBOO.js.map} +1 -1
  37. package/dist/serve-5OAANN6J.js +3 -0
  38. package/dist/shell-JC2WDWBR.js +2 -0
  39. package/dist/{shell-UXEJRK3D.js → shell-PMLIRG3N.js} +3 -3
  40. package/dist/{shell-UXEJRK3D.js.map → shell-PMLIRG3N.js.map} +1 -1
  41. package/dist/structured-logger-EXMGTUDB.js +4 -0
  42. package/dist/{task-SZBYNAZP.js → task-QFLIIRKZ.js} +1 -1
  43. package/dist/{tui-4VRDSRVB.js → tui-BJHZBCIR.js} +1 -1
  44. package/dist/{workspace-manager-ABXFBL2A.js → workspace-manager-5EYCMAEO.js} +25 -9
  45. package/dist/workspace-manager-5EYCMAEO.js.map +1 -0
  46. package/dist/workspace-manager-XKOZ5WM6.js +3 -0
  47. package/package.json +16 -7
  48. package/readme.md +516 -98
  49. package/scripts/demo.sh +202 -0
  50. package/scripts/postinstall.js +2 -0
  51. package/dist/App-SSYYVFGW.js +0 -22
  52. package/dist/chunk-BSJVYRI3.js.map +0 -1
  53. package/dist/chunk-MOWC2CHX.js.map +0 -1
  54. package/dist/chunk-QNZ6D63E.js +0 -4
  55. package/dist/chunk-X54D5JZG.js +0 -11
  56. package/dist/chunk-YHIYJ5OL.js.map +0 -1
  57. package/dist/claude-ZLVOLRUG.js +0 -2
  58. package/dist/container-FJI7RN2L.js +0 -4
  59. package/dist/doctor-GKTV4YYD.js +0 -2
  60. package/dist/orchestrator-PM4BW7W5.js +0 -13
  61. package/dist/orchestrator-QFNYZ6AH.js +0 -6
  62. package/dist/shell-OBHIVC2H.js +0 -2
  63. package/dist/workspace-manager-ABXFBL2A.js.map +0 -1
  64. package/dist/workspace-manager-Q6WWXSTR.js +0 -3
package/readme.md CHANGED
@@ -1,40 +1,87 @@
1
+ <!-- Hero Banner -->
2
+ <picture>
3
+ <source media="(prefers-color-scheme: dark)" srcset="./assets/banner-dark.svg?v=2">
4
+ <source media="(prefers-color-scheme: light)" srcset="./assets/banner-light.svg?v=2">
5
+ <img alt="ORCH — AI Agent Runtime" src="./assets/banner-dark.svg?v=2" width="100%">
6
+ </picture>
7
+
8
+ <p align="center">
9
+ <strong>Open-source orchestration for zero-human companies, processes and departments.</strong><br/>
10
+ <sub>Run multiple AI agents on one project — without babysitting any of them.<br/>Coordinate Claude, Codex, Cursor and any CLI tool in parallel. One npm install. Zero infrastructure.</sub>
11
+ </p>
12
+
1
13
  <p align="center">
2
- <img src="assets/logo.svg" alt="ORCH" height="60" />
3
- <p align="center">
4
- <strong>Open-source orchestration for zero-human companies, processes and departments.</strong><br/>
5
- Engineering, editorial, sales, analytics deploy entire AI departments from your terminal. Free forever.
6
- </p>
7
- <p align="center">
8
- <a href="https://github.com/oxgeneral/ORCH/stargazers"><img src="https://img.shields.io/github/stars/oxgeneral/ORCH?style=social" alt="GitHub Stars" /></a>
9
- <a href="https://www.orch.one/"><img src="https://img.shields.io/badge/website-orch.one-amber" alt="Website" /></a>
10
- <a href="https://www.npmjs.com/package/@oxgeneral/orch"><img src="https://img.shields.io/npm/v/@oxgeneral/orch?color=cb0000" alt="npm" /></a>
11
- <a href="#launch-your-ai-company-in-30-seconds"><img src="https://img.shields.io/badge/setup-30%20seconds-brightgreen" alt="30 second setup" /></a>
12
- <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License" /></a>
13
- <a href="#development"><img src="https://img.shields.io/badge/tests-1493%20passing-brightgreen" alt="Tests" /></a>
14
- <a href="#architecture"><img src="https://img.shields.io/badge/TypeScript-strict-blue" alt="TypeScript strict" /></a>
15
- </p>
14
+ <a href="https://github.com/oxgeneral/ORCH/stargazers"><img src="https://img.shields.io/github/stars/oxgeneral/ORCH?style=for-the-badge&color=f59e0b&labelColor=0a0a0a" alt="GitHub Stars" /></a>&nbsp;
15
+ <a href="https://www.orch.one/"><img src="https://img.shields.io/badge/website-orch.one-f59e0b?style=for-the-badge&labelColor=0a0a0a" alt="Website" /></a>&nbsp;
16
+ <a href="https://www.npmjs.com/package/@oxgeneral/orch"><img src="https://img.shields.io/npm/v/@oxgeneral/orch?style=for-the-badge&color=f59e0b&labelColor=0a0a0a" alt="npm" /></a>&nbsp;
17
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-f59e0b?style=for-the-badge&labelColor=0a0a0a" alt="MIT License" /></a>&nbsp;
18
+ <a href="#development"><img src="https://img.shields.io/badge/tests-1647%20passing-f59e0b?style=for-the-badge&labelColor=0a0a0a" alt="Tests" /></a>
16
19
  </p>
17
20
 
18
- ---
21
+ <br/>
22
+
23
+ <p align="center">
24
+ <a href="#you-hired-ai-agents-now-youre-managing-them-full-time">Problem</a> &bull;
25
+ <a href="#start-coordinating-agents-in-30-seconds">Install</a> &bull;
26
+ <a href="#how-your-ai-team-works">How It Works</a> &bull;
27
+ <a href="#why-founders-choose-orch">Features</a> &bull;
28
+ <a href="#headless-daemon--cicd">Serve</a> &bull;
29
+ <a href="#pre-built-teams--start-with-a-proven-setup">Templates</a> &bull;
30
+ <a href="#full-cli-reference">CLI</a> &bull;
31
+ <a href="#architecture">Architecture</a> &bull;
32
+ <a href="#faq">FAQ</a>
33
+ </p>
34
+
35
+ ```bash
36
+ npm install -g @oxgeneral/orch # Install
37
+ cd ~/your-project && orch # Launch TUI
38
+ ```
39
+
40
+ <br/>
41
+
42
+ <!-- Divider -->
43
+ <picture>
44
+ <source media="(prefers-color-scheme: dark)" srcset="./assets/divider-dark.svg">
45
+ <source media="(prefers-color-scheme: light)" srcset="./assets/divider-light.svg">
46
+ <img alt="" src="./assets/divider-dark.svg" width="100%">
47
+ </picture>
48
+
49
+ <br/>
19
50
 
20
51
  <div align="center">
21
52
  <video src="https://github.com/user-attachments/assets/c7c3ab77-e718-4e5a-a8cf-bfc446ace64e" width="100%" controls autoplay loop muted></video>
22
53
  </div>
23
54
  <p align="center">
24
- <em>Command center: engineering shipping code, editorial publishing content, QA testing all at once, while you sleep.</em>
55
+ <em>Set a goal at 10pm. Five agents decompose, implement, test, and review. You wake up to pull requests.</em>
25
56
  </p>
26
57
 
27
- ---
58
+ <br/>
59
+
60
+ <!-- Divider -->
61
+ <picture>
62
+ <source media="(prefers-color-scheme: dark)" srcset="./assets/divider-dark.svg">
63
+ <source media="(prefers-color-scheme: light)" srcset="./assets/divider-light.svg">
64
+ <img alt="" src="./assets/divider-dark.svg" width="100%">
65
+ </picture>
66
+
67
+ <br/>
68
+
69
+ ## You hired AI agents. Now you're managing them full-time.
70
+
71
+ You bought Claude, Codex, maybe Cursor. Each one is powerful alone. But your actual job isn't "use AI tools" — it's **ship a product at the speed of a full team, while being one person.**
28
72
 
29
- ## You're still babysitting AI agents
73
+ Here's what that looks like today:
30
74
 
31
- You have 3 AI assistants open. Claude is implementing auth in one terminal. Codex is writing tests in another. A shell script runs migrations somewhere else.
75
+ - You open 3 terminals. Copy-paste context between them. Forget which agent is doing what.
76
+ - One agent edits a file another is working on. Merge conflict. You fix it manually.
77
+ - An agent crashes at 2am. You don't notice until morning. Half a night wasted.
78
+ - You spend **40-60% of your time routing agents** instead of building your product.
32
79
 
33
- You're the human router — switching tabs, copy-pasting context, manually tracking who's doing what, restarting crashed agents at 2am.
80
+ **You're not the founder. You're the bottleneck.**
34
81
 
35
- **You're not the founder. You're the intern.**
82
+ <br/>
36
83
 
37
- ## What if you had an entire AI department?
84
+ ## What if your agents coordinated themselves?
38
85
 
39
86
  ```
40
87
  $ orch org deploy startup-mvp --goal "Implement user auth with OAuth2"
@@ -65,55 +112,167 @@ $ orch run --all --watch
65
112
  → You wake up to 6 tasks in review. Approve. Merge. Ship.
66
113
  ```
67
114
 
68
- One goal. Five agents. Six PRs. Zero tab-switching. $4.20 in tokens.
115
+ <p align="center"><strong>One goal. Five agents. Six PRs. Zero tab-switching. $4.20 in tokens.</strong></p>
69
116
 
70
- ## Launch your AI company in 30 seconds
117
+ <br/>
71
118
 
72
- ```bash
73
- npm install -g @oxgeneral/orch
74
- ```
119
+ <!-- Divider -->
120
+ <picture>
121
+ <source media="(prefers-color-scheme: dark)" srcset="./assets/divider-dark.svg">
122
+ <source media="(prefers-color-scheme: light)" srcset="./assets/divider-light.svg">
123
+ <img alt="" src="./assets/divider-dark.svg" width="100%">
124
+ </picture>
75
125
 
76
- ```bash
77
- cd ~/your-project && orch
78
- ```
126
+ <br/>
127
+
128
+ ## Start coordinating agents in 30 seconds
79
129
 
80
- That's it. ORCH auto-initializes, opens the TUI command center. Add agents and tasks right from there.
130
+ <!-- Install Card -->
131
+ <picture>
132
+ <source media="(prefers-color-scheme: dark)" srcset="./assets/install-dark.svg">
133
+ <source media="(prefers-color-scheme: light)" srcset="./assets/install-light.svg">
134
+ <img alt="Install ORCH" src="./assets/install-dark.svg" width="100%">
135
+ </picture>
81
136
 
82
- Or deploy a pre-built department:
137
+ <br/>
138
+
139
+ That's it. ORCH auto-initializes and opens the TUI dashboard. Add agents, set goals, and run — right from there.
140
+
141
+ Or deploy a pre-built team:
83
142
 
84
143
  ```bash
85
144
  orch org deploy startup-mvp --goal "Build invoicing SaaS with Stripe"
86
145
  orch run --all --watch
87
146
  ```
88
147
 
89
- **Requirements:** Node.js >= 20. That's it. No database. No cloud. No Docker.
148
+ ### System requirements
149
+
150
+ <table>
151
+ <tr>
152
+ <td width="50%" valign="top">
153
+
154
+ **Minimum**
155
+ 1-2 agents
156
+
157
+ | | |
158
+ |---|---|
159
+ | **OS** | macOS, Linux, WSL2 |
160
+ | **CPU** | 2 cores |
161
+ | **RAM** | 4 GB |
162
+ | **Disk** | 300 MB |
163
+ | **Node.js** | >= 20 |
164
+
165
+ </td>
166
+ <td width="50%" valign="top">
167
+
168
+ **Recommended** — full department
169
+ 4-6 agents
170
+
171
+ | | |
172
+ |---|---|
173
+ | **OS** | macOS, Linux, WSL2 |
174
+ | **CPU** | 4+ cores |
175
+ | **RAM** | 8 GB |
176
+ | **Disk** | 1 GB |
177
+ | **Node.js** | >= 20 |
178
+
179
+ </td>
180
+ </tr>
181
+ </table>
182
+
183
+ <p align="center">No database. No cloud. No Docker. No GPU — LLMs run via API, not locally.</p>
184
+
185
+ ### Your code is safe
186
+
187
+ > **Every agent works in an isolated git worktree.** Your `main` branch is never touched until you explicitly approve and merge. Mandatory review step in the state machine — no code ships without your OK. Agents can't overwrite each other's work.
188
+
189
+ <details>
190
+ <summary><strong>Why does each agent need ~300 MB?</strong></summary>
191
+
192
+ <br/>
193
+
194
+ ORCH itself is lightweight (~120 MB). The RAM goes to the **agent CLI processes** that ORCH spawns — each is a separate Node.js/Python runtime:
195
+
196
+ | Agent process | RAM per instance | Why |
197
+ |---------------|-----------------|-----|
198
+ | Claude Code CLI | 200-400 MB | Full Node.js runtime + context window |
199
+ | OpenCode | 200-400 MB | Node.js + provider SDK |
200
+ | Codex CLI | 150-300 MB | Python runtime + OpenAI SDK |
201
+ | Cursor CLI | 200-400 MB | Electron-based agent |
202
+ | Shell scripts | 10-50 MB | Depends on the tool |
203
+
204
+ **Formula:** `120 MB (ORCH) + N × ~300 MB` per concurrent agent.
205
+ 2 agents ≈ 0.7 GB, 4 agents ≈ 1.3 GB, 6 agents ≈ 2 GB.
206
+
207
+ </details>
208
+
209
+ <br/>
210
+
211
+ <!-- Divider -->
212
+ <picture>
213
+ <source media="(prefers-color-scheme: dark)" srcset="./assets/divider-dark.svg">
214
+ <source media="(prefers-color-scheme: light)" srcset="./assets/divider-light.svg">
215
+ <img alt="" src="./assets/divider-dark.svg" width="100%">
216
+ </picture>
217
+
218
+ <br/>
90
219
 
91
- ## Your AI company org chart
220
+ ## How your AI team works
221
+
222
+ <table>
223
+ <tr>
224
+ <td width="50%" valign="top">
92
225
 
93
226
  ### CTO — strategic decomposition
227
+
94
228
  Set a high-level goal. Your CTO agent decomposes it into concrete tasks, assigns priorities, and delegates to the right departments. You set strategy — AI executes.
95
229
 
96
230
  ### Engineering Department — parallel execution
231
+
97
232
  Backend A, Backend B, Frontend — each agent gets its own git worktree (isolated branch). They work in parallel without file conflicts. Failed? Auto-retry with exponential backoff. Stalled? Zombie detection kills and re-queues.
98
233
 
234
+ </td>
235
+ <td width="50%" valign="top">
236
+
99
237
  ### QA Department — automated verification
238
+
100
239
  QA agents pick up completed work, run tests, validate contracts. Reject with feedback → task goes back to engineering with your notes. The loop closes automatically.
101
240
 
241
+ ### Inter-department communication
242
+
243
+ Agents talk to each other — direct messages, team broadcasts, shared context store. Backend finishes auth module → sends message to QA → QA starts testing. No copy-paste. No manual routing.
244
+
245
+ </td>
246
+ </tr>
247
+ </table>
248
+
102
249
  ### Code Review — mandatory quality gate
250
+
103
251
  Nothing touches `main` until reviewed. Every task flows through the state machine:
104
- ```
105
- todo in_progress → review → done
106
- ↘ retrying → in_progress
107
- failed
108
- ```
252
+
253
+ <!-- State Machine -->
254
+ <picture>
255
+ <source media="(prefers-color-scheme: dark)" srcset="./assets/statemachine-dark.svg">
256
+ <source media="(prefers-color-scheme: light)" srcset="./assets/statemachine-light.svg">
257
+ <img alt="State Machine: todo → in_progress → review → done" src="./assets/statemachine-dark.svg" width="100%">
258
+ </picture>
259
+
109
260
  Every transition validated. No task gets lost. No code merges without approval.
110
261
 
111
- ### Inter-department communication
112
- Agents talk to each other — direct messages, team broadcasts, shared context store. Backend finishes auth module → sends message to QA → QA starts testing. No copy-paste. No manual routing.
262
+ <br/>
263
+
264
+ <!-- Divider -->
265
+ <picture>
266
+ <source media="(prefers-color-scheme: dark)" srcset="./assets/divider-dark.svg">
267
+ <source media="(prefers-color-scheme: light)" srcset="./assets/divider-light.svg">
268
+ <img alt="" src="./assets/divider-dark.svg" width="100%">
269
+ </picture>
270
+
271
+ <br/>
113
272
 
114
273
  ## Not just engineering
115
274
 
116
- ORCH orchestrates **any process** — not just code. The shell adapter runs any CLI tool, which means any workflow becomes a zero-human department:
275
+ ORCH orchestrates **any process** — not just code. The shell adapter runs any CLI tool, which means any workflow becomes an automated pipeline:
117
276
 
118
277
  | Department | Agents | What they do |
119
278
  |-----------|--------|-------------|
@@ -127,40 +286,55 @@ ORCH orchestrates **any process** — not just code. The shell adapter runs any
127
286
 
128
287
  Every department gets the same superpowers: state machine governance, retry, messaging, isolation, review gate.
129
288
 
289
+ <br/>
290
+
291
+ <!-- Divider -->
292
+ <picture>
293
+ <source media="(prefers-color-scheme: dark)" srcset="./assets/divider-dark.svg">
294
+ <source media="(prefers-color-scheme: light)" srcset="./assets/divider-light.svg">
295
+ <img alt="" src="./assets/divider-dark.svg" width="100%">
296
+ </picture>
297
+
298
+ <br/>
299
+
130
300
  ## Why founders choose ORCH
131
301
 
132
- ### You're the CEO, not the babysitter
133
- Set goals, not tasks. Your CTO agent decomposes strategy into work. Backend builds. QA tests. Reviewer checks. You approve. That's the workflow.
302
+ <!-- Features Grid -->
303
+ <picture>
304
+ <source media="(prefers-color-scheme: dark)" srcset="./assets/features-dark.svg">
305
+ <source media="(prefers-color-scheme: light)" srcset="./assets/features-light.svg">
306
+ <img alt="ORCH Features" src="./assets/features-dark.svg" width="100%">
307
+ </picture>
134
308
 
135
- ### Real departments, not just agents
136
- Teams with leads, shared task pools, auto-claiming. CTO, Backend, QA, Reviewer — organized like a real org chart. Broadcasts, messaging, shared context.
309
+ <br/>
137
310
 
138
- ### Runs while you sleep
139
- Auto-retry, stall detection, exponential backoff. Your agents don't stop when one fails — ORCH restarts, re-queues, and keeps going. Deploy at night, review in the morning.
311
+ ### Works with every tool — AI or not
140
312
 
141
- ### Main branch is sacred
142
- Every agent works on its own git branch. Scope overlap detection prevents conflicts before they happen. Mandatory review step. Nothing merges until you approve.
313
+ <!-- Adapters -->
314
+ <picture>
315
+ <source media="(prefers-color-scheme: dark)" srcset="./assets/adapters-dark.svg">
316
+ <source media="(prefers-color-scheme: light)" srcset="./assets/adapters-light.svg">
317
+ <img alt="Adapters: Claude, OpenCode, Codex, Cursor, Shell" src="./assets/adapters-dark.svg" width="100%">
318
+ </picture>
143
319
 
144
- ### 30 seconds to a full department
145
- `orch org deploy startup-mvp` — CTO, backend x2, QA, reviewer. Team created. Goal set. Agents ready. One command.
320
+ <br/>
146
321
 
147
- ### Free. Yours. Forever.
148
- MIT license. Your API keys. Your machine. State in `.orchestry/` — plain YAML, JSON, JSONL files you can read, edit, commit. Zero cloud dependencies.
322
+ The `shell` adapter is the key: **if it runs in a terminal, it's an agent** — `npm test`, `python bot.py`, Semgrep, `curl`, CRM scripts, data pipelines. Any CLI tool gets state tracking, retry, and coordination for free.
149
323
 
150
- ### Works with every tool — AI or not
151
- | Adapter | What it runs | Use as |
152
- |---------|-------------|--------|
153
- | `claude` | Claude Code CLI | CTO, Backend, Reviewer, Writer, Analyst |
154
- | `opencode` | OpenCode (Gemini, DeepSeek via OpenRouter) | Backend, Frontend, Writer |
155
- | `codex` | OpenAI Codex CLI | Backend, QA |
156
- | `cursor` | Cursor Agent CLI (headless) | Frontend, Backend |
157
- | `shell` | **Anything**: `npm test`, `python bot.py`, Semgrep, `curl`, CRM scripts, email senders, data pipelines | QA, Security, DevOps, Sales, Analytics, Content — any role |
324
+ <br/>
158
325
 
159
- The `shell` adapter is the key: **if it runs in a terminal, it's an employee**. This is how ORCH goes beyond engineering — any CLI tool becomes part of your zero-human company.
326
+ <!-- Divider -->
327
+ <picture>
328
+ <source media="(prefers-color-scheme: dark)" srcset="./assets/divider-dark.svg">
329
+ <source media="(prefers-color-scheme: light)" srcset="./assets/divider-light.svg">
330
+ <img alt="" src="./assets/divider-dark.svg" width="100%">
331
+ </picture>
160
332
 
161
- ## Pre-built AI companies
333
+ <br/>
162
334
 
163
- Deploy a full department with one command:
335
+ ## Pre-built teams start with a proven setup
336
+
337
+ Deploy a full team with one command:
164
338
 
165
339
  **Engineering**
166
340
 
@@ -183,72 +357,236 @@ Deploy a full department with one command:
183
357
  | `docs-team` | Docs Lead, Writer x2, Editor, Reviewer | Technical docs from codebase analysis |
184
358
 
185
359
  ```bash
186
- orch org list # See all companies
360
+ orch org list # See all teams
187
361
  orch org deploy startup-mvp # Deploy the default
188
362
  orch org deploy startup-mvp --goal "Build X" # Deploy with a goal
189
- orch org export my-company # Save your setup as template
363
+ orch org export my-team # Save your setup as template
364
+ ```
365
+
366
+ <br/>
367
+
368
+ <!-- Divider -->
369
+ <picture>
370
+ <source media="(prefers-color-scheme: dark)" srcset="./assets/divider-dark.svg">
371
+ <source media="(prefers-color-scheme: light)" srcset="./assets/divider-light.svg">
372
+ <img alt="" src="./assets/divider-dark.svg" width="100%">
373
+ </picture>
374
+
375
+ <br/>
376
+
377
+ ## Headless daemon & CI/CD
378
+
379
+ Run ORCH on a server 24/7 — no terminal, no TUI. Structured JSON logs for Datadog, Grafana Loki, or `jq`.
380
+
381
+ ```bash
382
+ # Daemon mode — runs forever, picks up new tasks automatically
383
+ orch serve
384
+
385
+ # CI/CD mode — process current tasks and exit
386
+ orch serve --once # exit 0 = all done, exit 1 = has failures
387
+ ```
388
+
389
+ ### Options
390
+
391
+ | Flag | Description | Default |
392
+ |------|-------------|---------|
393
+ | `--once` | Process all todo tasks and exit | watch mode |
394
+ | `--tick-interval <ms>` | Override polling interval | 10000 |
395
+ | `--log-file <path>` | Tee logs to a file (append) | stdout only |
396
+ | `--log-format json\|text` | Output format | json |
397
+ | `--verbose` | Include `agent:output` events | off |
398
+
399
+ ### Structured logs
400
+
401
+ Every event is a single JSON line — pipe to any log aggregator:
402
+
403
+ ```json
404
+ {"ts":"2026-03-17T03:00:10.000Z","level":"info","event":"agent:started","agentId":"agt_abc","taskId":"tsk_123","runId":"run_xyz"}
405
+ {"ts":"2026-03-17T03:12:45.000Z","level":"info","event":"task:status_changed","taskId":"tsk_123","from":"in_progress","to":"review"}
406
+ {"ts":"2026-03-17T03:12:46.000Z","level":"info","event":"orchestrator:tick","running":0,"queued":2,"heap_mb":142}
407
+ ```
408
+
409
+ ### Deploy with pm2 or systemd
410
+
411
+ <details>
412
+ <summary><strong>pm2</strong></summary>
413
+
414
+ ```bash
415
+ pm2 start "orch serve" --name orch-daemon --cwd ~/my-project
416
+ pm2 logs orch-daemon # structured JSON logs
417
+ pm2 stop orch-daemon # SIGINT → graceful shutdown
190
418
  ```
191
419
 
420
+ </details>
421
+
422
+ <details>
423
+ <summary><strong>systemd</strong></summary>
424
+
425
+ ```ini
426
+ [Unit]
427
+ Description=ORCH AI Agent Daemon
428
+ After=network.target
429
+
430
+ [Service]
431
+ Type=simple
432
+ WorkingDirectory=/home/user/my-project
433
+ ExecStart=/usr/local/bin/orch serve
434
+ Restart=on-failure
435
+ RestartSec=10
436
+
437
+ [Install]
438
+ WantedBy=multi-user.target
439
+ ```
440
+
441
+ </details>
442
+
443
+ ### How it works
444
+
445
+ - **Watch mode** (default): tick loop runs indefinitely. Add tasks from another terminal (`orch task add`) — daemon picks them up on the next tick.
446
+ - **Once mode** (`--once`): processes all existing todo tasks, skips autonomous task seeding, exits when everything reaches a terminal status.
447
+ - **Lock protection**: only one orchestrator per project (reuses `.orchestry/orchestry.lock`). Second `orch serve` exits with a clear error.
448
+ - **Graceful shutdown**: SIGINT/SIGTERM → stops accepting new tasks → waits for running agents → saves state → releases lock.
449
+ - **Heap monitoring**: every tick logs `heap_mb` — catch memory leaks before OOM.
450
+ - **Idle throttling**: logs every 6th idle tick (~60s) to avoid flooding logs when nothing is happening.
451
+
452
+ <br/>
453
+
454
+ <!-- Divider -->
455
+ <picture>
456
+ <source media="(prefers-color-scheme: dark)" srcset="./assets/divider-dark.svg">
457
+ <source media="(prefers-color-scheme: light)" srcset="./assets/divider-light.svg">
458
+ <img alt="" src="./assets/divider-dark.svg" width="100%">
459
+ </picture>
460
+
461
+ <br/>
462
+
192
463
  ## Full CLI reference
193
464
 
465
+ <details>
466
+ <summary><strong>Setup & Diagnostics</strong></summary>
467
+
194
468
  ```bash
195
- # Setup
196
469
  orch init # Initialize project
197
470
  orch doctor # System diagnostics
471
+ orch update # Check for updates
472
+ ```
473
+
474
+ </details>
475
+
476
+ <details>
477
+ <summary><strong>Departments & Agents</strong></summary>
198
478
 
199
- # Departments & Agents
479
+ ```bash
200
480
  orch agent add <name> --adapter claude --role "CTO — decomposes goals"
201
481
  orch agent list # Status of all agents
202
482
  orch agent disable/enable <id> # Toggle availability
483
+ ```
203
484
 
204
- # Organization Templates
485
+ </details>
486
+
487
+ <details>
488
+ <summary><strong>Organization Templates</strong></summary>
489
+
490
+ ```bash
205
491
  orch org list # List available companies
206
492
  orch org deploy <template> # Deploy a full department
207
493
  orch org deploy <template> --goal "..." # Deploy with a goal
208
494
  orch org export <name> # Export current setup
495
+ ```
496
+
497
+ </details>
498
+
499
+ <details>
500
+ <summary><strong>Tasks</strong></summary>
209
501
 
210
- # Tasks
502
+ ```bash
211
503
  orch task add "Title" -p 1 # Create task (priority 1-4)
212
504
  orch task list # List all tasks
213
505
  orch task assign <task> <agent> # Manual assignment
214
506
  orch task cancel <task> # Cancel running task
507
+ ```
508
+
509
+ </details>
215
510
 
216
- # Teams (Departments)
511
+ <details>
512
+ <summary><strong>Teams (Departments)</strong></summary>
513
+
514
+ ```bash
217
515
  orch team create <name> --lead <agent-id>
218
516
  orch team join <team-id> <agent-id>
219
517
  orch team add-task <team-id> <task-id>
220
518
  orch team disband <id>
519
+ ```
520
+
521
+ </details>
522
+
523
+ <details>
524
+ <summary><strong>Goals (Strategy)</strong></summary>
221
525
 
222
- # Goals (Strategy)
526
+ ```bash
223
527
  orch goal add "Title" --description "..."
224
528
  orch goal list
225
529
  orch goal status <id> achieved
530
+ ```
226
531
 
227
- # Communication
532
+ </details>
533
+
534
+ <details>
535
+ <summary><strong>Communication</strong></summary>
536
+
537
+ ```bash
228
538
  orch msg send <agent-id> "message" # Direct message
229
539
  orch msg broadcast "message" --team <team-id> # Team broadcast
230
540
  orch context set <key> <value> # Shared context
541
+ ```
542
+
543
+ </details>
231
544
 
232
- # Execution
545
+ <details>
546
+ <summary><strong>Execution & Monitoring</strong></summary>
547
+
548
+ ```bash
233
549
  orch run --all --watch # Launch all agents
234
550
  orch run <task-id> # Run single task
235
-
236
- # Monitoring
551
+ orch serve # Headless daemon (JSON logs)
552
+ orch serve --once # CI/CD: process and exit
237
553
  orch status # Quick overview
238
554
  orch logs <run-id> # View run logs
239
555
  orch tui # Command center (TUI)
240
-
241
- # Config
242
556
  orch config edit # Open in $EDITOR
243
- orch update # Check for updates
244
557
  ```
245
558
 
246
- **Aliases:** `orchestry`, `orch`, `ao`
559
+ </details>
560
+
561
+ <p align="center"><strong>Aliases:</strong> <kbd>orchestry</kbd> &nbsp; <kbd>orch</kbd> &nbsp; <kbd>ao</kbd></p>
562
+
563
+ <br/>
564
+
565
+ <!-- Divider -->
566
+ <picture>
567
+ <source media="(prefers-color-scheme: dark)" srcset="./assets/divider-dark.svg">
568
+ <source media="(prefers-color-scheme: light)" srcset="./assets/divider-light.svg">
569
+ <img alt="" src="./assets/divider-dark.svg" width="100%">
570
+ </picture>
571
+
572
+ <br/>
247
573
 
248
574
  ## Architecture
249
575
 
250
576
  ORCH is an engine first, CLI second. The core has zero dependencies on CLI/TUI layers — you can import `@oxgeneral/orch` as a library and build your own interface.
251
577
 
578
+ <!-- Architecture Diagram -->
579
+ <picture>
580
+ <source media="(prefers-color-scheme: dark)" srcset="./assets/architecture-dark.svg">
581
+ <source media="(prefers-color-scheme: light)" srcset="./assets/architecture-light.svg">
582
+ <img alt="ORCH Architecture — Layered DDD" src="./assets/architecture-dark.svg" width="100%">
583
+ </picture>
584
+
585
+ <br/>
586
+
587
+ <details>
588
+ <summary><strong>Directory structure</strong></summary>
589
+
252
590
  ```
253
591
  src/
254
592
  ├── domain/ # Models, state machine, errors
@@ -263,15 +601,30 @@ src/
263
601
  └── tui/ # Ink + React command center
264
602
  ```
265
603
 
604
+ </details>
605
+
606
+ <br/>
607
+
266
608
  ## Development
267
609
 
268
610
  ```bash
269
611
  npm run dev # Run via tsx
270
612
  npm run build # Build ESM + DTS
271
- npm test # 1493 tests via Vitest
613
+ npm test # 1647 tests via Vitest
272
614
  npm run typecheck # Strict TypeScript
273
615
  ```
274
616
 
617
+ <br/>
618
+
619
+ <!-- Divider -->
620
+ <picture>
621
+ <source media="(prefers-color-scheme: dark)" srcset="./assets/divider-dark.svg">
622
+ <source media="(prefers-color-scheme: light)" srcset="./assets/divider-light.svg">
623
+ <img alt="" src="./assets/divider-dark.svg" width="100%">
624
+ </picture>
625
+
626
+ <br/>
627
+
275
628
  ## Community
276
629
 
277
630
  If ORCH saves you time — **[Star it on GitHub](https://github.com/oxgeneral/ORCH)** — it helps other founders find the project.
@@ -281,46 +634,111 @@ If ORCH saves you time — **[Star it on GitHub](https://github.com/oxgeneral/OR
281
634
  - **Open an issue** if something breaks or could be better
282
635
  - **Submit a PR** — see [CONTRIBUTING.md](CONTRIBUTING.md)
283
636
 
284
- ## Used by / Early Adopters
637
+ <br/>
638
+
639
+ ## Ship something with ORCH?
640
+
641
+ > Using ORCH on a real project? [Share your setup](https://github.com/oxgeneral/ORCH/issues/new?title=Using+ORCH&body=Tell+us+about+your+setup) — we'd love to hear how it went.
285
642
 
286
- > Running a zero-human company with ORCH? [Let us know](https://github.com/oxgeneral/ORCH/issues/new?title=Zero-human+company+with+ORCH&body=Tell+us+about+your+setup) — we'd love to feature you here.
643
+ <br/>
287
644
 
288
- <!-- ADOPTERS_START -->
289
- *Be the first to launch your AI company here.*
290
- <!-- ADOPTERS_END -->
645
+ <!-- Divider -->
646
+ <picture>
647
+ <source media="(prefers-color-scheme: dark)" srcset="./assets/divider-dark.svg">
648
+ <source media="(prefers-color-scheme: light)" srcset="./assets/divider-light.svg">
649
+ <img alt="" src="./assets/divider-dark.svg" width="100%">
650
+ </picture>
651
+
652
+ <br/>
291
653
 
292
654
  ## FAQ
293
655
 
294
- ### Do I need a team to use ORCH?
656
+ <details>
657
+ <summary><strong>Do I need a team to use ORCH?</strong></summary>
658
+
659
+ <br/>
295
660
 
296
661
  No. **Solo founders are the primary users.** You + 2 agents is already a zero-human company. ORCH gives you auto-retry, state machine, dashboard, and token tracking even with a single agent. Start with one, scale to departments.
297
662
 
298
- ### Will agents mess up my codebase?
663
+ </details>
664
+
665
+ <details>
666
+ <summary><strong>Will agents mess up my codebase?</strong></summary>
667
+
668
+ <br/>
299
669
 
300
670
  No. Every agent works in an isolated git worktree on its own branch. Nothing touches `main` until you explicitly approve. Mandatory review step in the state machine. Scope overlap detection prevents conflicts before they happen.
301
671
 
302
- ### Is this only for engineering?
672
+ </details>
673
+
674
+ <details>
675
+ <summary><strong>Is this only for engineering?</strong></summary>
676
+
677
+ <br/>
303
678
 
304
679
  No. The shell adapter runs any CLI tool — which means ORCH orchestrates any process. Engineering, editorial, sales, analytics, security, DevOps. **If it runs in a terminal, it's an employee.** Deploy `content-agency`, `data-lab`, or `sales-machine` with one command.
305
680
 
306
- ### How much does it cost?
681
+ </details>
682
+
683
+ <details>
684
+ <summary><strong>How much does it cost?</strong></summary>
685
+
686
+ <br/>
307
687
 
308
- ORCH is free forever (MIT). You pay only for the AI APIs you already use (Claude, Codex, etc.). The TUI shows token counts per agent per run in real-time — no surprise bills.
688
+ ORCH is open-source (MIT license). You pay only for the AI APIs you already use Claude, Codex, etc. The TUI shows token costs per agent per run in real-time. Example: 5 agents, 6 tasks **$4.20 in tokens**. No surprise bills.
309
689
 
310
- ### What AI tools does it support?
690
+ </details>
691
+
692
+ <details>
693
+ <summary><strong>What AI tools does it support?</strong></summary>
694
+
695
+ <br/>
311
696
 
312
697
  Five adapters: **Claude Code**, **OpenCode** (Gemini, DeepSeek, any OpenRouter model), **Codex**, **Cursor**, and **Shell** (any CLI tool). Your API keys, your tools — ORCH coordinates them.
313
698
 
314
- ### Is there a cloud component?
699
+ </details>
700
+
701
+ <details>
702
+ <summary><strong>Can I run agents 24/7 on a server?</strong></summary>
703
+
704
+ <br/>
705
+
706
+ Yes. `orch serve` runs the orchestrator as a headless daemon — no TUI, structured JSON logs to stdout. Deploy with pm2, systemd, or any process manager. Add tasks from another terminal or machine — the daemon picks them up automatically. Graceful shutdown on SIGINT/SIGTERM.
707
+
708
+ </details>
709
+
710
+ <details>
711
+ <summary><strong>Is there a cloud component?</strong></summary>
712
+
713
+ <br/>
315
714
 
316
715
  None. Zero cloud. All state in `.orchestry/` — plain YAML, JSON, JSONL files. No signup, no account, no data leaves your machine.
317
716
 
318
- ### How is this different from Paperclip?
717
+ </details>
718
+
719
+ <details>
720
+ <summary><strong>How is this different from Paperclip?</strong></summary>
721
+
722
+ <br/>
319
723
 
320
724
  Paperclip needs PostgreSQL, a web server, and cloud setup. ORCH needs `npm install`. Same vision — zero-human companies — but ORCH is the hacker's version: terminal-first, file-based, zero infrastructure, MIT licensed.
321
725
 
322
- ---
726
+ </details>
323
727
 
324
- ## License
728
+ <br/>
729
+
730
+ <!-- Divider -->
731
+ <picture>
732
+ <source media="(prefers-color-scheme: dark)" srcset="./assets/divider-dark.svg">
733
+ <source media="(prefers-color-scheme: light)" srcset="./assets/divider-light.svg">
734
+ <img alt="" src="./assets/divider-dark.svg" width="100%">
735
+ </picture>
736
+
737
+ <br/>
738
+
739
+ <p align="center">
740
+ <a href="LICENSE"><strong>MIT</strong></a> — build whatever you want.<br/>
741
+ <sub>This is how zero-human engineering teams start.</sub>
742
+ </p>
325
743
 
326
- [MIT](LICENSE) — build whatever you want.
744
+ <br/>