@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.
- package/dist/App-LEVUTWQN.js +22 -0
- package/dist/{chunk-YHIYJ5OL.js → chunk-4TDXD3LA.js} +60 -8
- package/dist/chunk-4TDXD3LA.js.map +1 -0
- package/dist/{chunk-BSJVYRI3.js → chunk-EH3HRQP4.js} +59 -8
- package/dist/chunk-EH3HRQP4.js.map +1 -0
- package/dist/chunk-FQ5YUP4J.js +4 -0
- package/dist/{chunk-TPTHLFOB.js → chunk-HYPSQAQX.js} +1 -1
- package/dist/{chunk-LXNRCJ22.js → chunk-KR7VDF23.js} +1 -1
- package/dist/{chunk-KFQTWMZI.js → chunk-LOJ26OVK.js} +1 -1
- package/dist/{chunk-PJ5DKXGR.js → chunk-N4OXN2HW.js} +1 -1
- package/dist/{chunk-MOWC2CHX.js → chunk-TWEMIPRN.js} +12 -8
- package/dist/chunk-TWEMIPRN.js.map +1 -0
- package/dist/chunk-WVJTXBPL.js +11 -0
- package/dist/claude-ADMRIWTR.js +2 -0
- package/dist/{claude-4R6L6BWY.js → claude-OTQ2NSJR.js} +3 -3
- package/dist/{claude-4R6L6BWY.js.map → claude-OTQ2NSJR.js.map} +1 -1
- package/dist/cli.js +1 -1
- package/dist/{codex-YRSODLH4.js → codex-AZD52UPS.js} +1 -1
- package/dist/{codex-IMOW5ZUZ.js → codex-WQ3LU3MM.js} +3 -3
- package/dist/{codex-IMOW5ZUZ.js.map → codex-WQ3LU3MM.js.map} +1 -1
- package/dist/container-FXUUV6PP.js +4 -0
- package/dist/{cursor-2HILMNM3.js → cursor-M3EJ432K.js} +1 -1
- package/dist/{cursor-NHV7X3WG.js → cursor-TKV5FFCN.js} +3 -3
- package/dist/{cursor-NHV7X3WG.js.map → cursor-TKV5FFCN.js.map} +1 -1
- package/dist/doctor-P2J6VAUX.js +2 -0
- package/dist/index.d.ts +18 -2
- package/dist/index.js +14 -11
- package/dist/index.js.map +1 -1
- package/dist/{init-56QC5QVX.js → init-PTAYCSMO.js} +4 -4
- package/dist/once-runner-AMKCFW22.js +2 -0
- package/dist/{opencode-3S4VDXRG.js → opencode-4G7VAZGY.js} +1 -1
- package/dist/{opencode-ULT6DYCT.js → opencode-YWT3M4NX.js} +3 -3
- package/dist/{opencode-ULT6DYCT.js.map → opencode-YWT3M4NX.js.map} +1 -1
- package/dist/orchestrator-JOTMB5XT.js +13 -0
- package/dist/orchestrator-XPEMMBOO.js +6 -0
- package/dist/{orchestrator-QFNYZ6AH.js.map → orchestrator-XPEMMBOO.js.map} +1 -1
- package/dist/serve-5OAANN6J.js +3 -0
- package/dist/shell-JC2WDWBR.js +2 -0
- package/dist/{shell-UXEJRK3D.js → shell-PMLIRG3N.js} +3 -3
- package/dist/{shell-UXEJRK3D.js.map → shell-PMLIRG3N.js.map} +1 -1
- package/dist/structured-logger-EXMGTUDB.js +4 -0
- package/dist/{task-SZBYNAZP.js → task-QFLIIRKZ.js} +1 -1
- package/dist/{tui-4VRDSRVB.js → tui-BJHZBCIR.js} +1 -1
- package/dist/{workspace-manager-ABXFBL2A.js → workspace-manager-5EYCMAEO.js} +25 -9
- package/dist/workspace-manager-5EYCMAEO.js.map +1 -0
- package/dist/workspace-manager-XKOZ5WM6.js +3 -0
- package/package.json +16 -7
- package/readme.md +516 -98
- package/scripts/demo.sh +202 -0
- package/scripts/postinstall.js +2 -0
- package/dist/App-SSYYVFGW.js +0 -22
- package/dist/chunk-BSJVYRI3.js.map +0 -1
- package/dist/chunk-MOWC2CHX.js.map +0 -1
- package/dist/chunk-QNZ6D63E.js +0 -4
- package/dist/chunk-X54D5JZG.js +0 -11
- package/dist/chunk-YHIYJ5OL.js.map +0 -1
- package/dist/claude-ZLVOLRUG.js +0 -2
- package/dist/container-FJI7RN2L.js +0 -4
- package/dist/doctor-GKTV4YYD.js +0 -2
- package/dist/orchestrator-PM4BW7W5.js +0 -13
- package/dist/orchestrator-QFNYZ6AH.js +0 -6
- package/dist/shell-OBHIVC2H.js +0 -2
- package/dist/workspace-manager-ABXFBL2A.js.map +0 -1
- 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
|
-
<
|
|
3
|
-
<
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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>
|
|
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>
|
|
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>
|
|
17
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-f59e0b?style=for-the-badge&labelColor=0a0a0a" alt="MIT License" /></a>
|
|
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> •
|
|
25
|
+
<a href="#start-coordinating-agents-in-30-seconds">Install</a> •
|
|
26
|
+
<a href="#how-your-ai-team-works">How It Works</a> •
|
|
27
|
+
<a href="#why-founders-choose-orch">Features</a> •
|
|
28
|
+
<a href="#headless-daemon--cicd">Serve</a> •
|
|
29
|
+
<a href="#pre-built-teams--start-with-a-proven-setup">Templates</a> •
|
|
30
|
+
<a href="#full-cli-reference">CLI</a> •
|
|
31
|
+
<a href="#architecture">Architecture</a> •
|
|
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>
|
|
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
|
-
|
|
73
|
+
Here's what that looks like today:
|
|
30
74
|
|
|
31
|
-
You
|
|
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
|
|
80
|
+
**You're not the founder. You're the bottleneck.**
|
|
34
81
|
|
|
35
|
-
|
|
82
|
+
<br/>
|
|
36
83
|
|
|
37
|
-
## What if
|
|
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
|
-
|
|
117
|
+
<br/>
|
|
71
118
|
|
|
72
|
-
|
|
73
|
-
|
|
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
|
-
|
|
77
|
-
|
|
78
|
-
|
|
126
|
+
<br/>
|
|
127
|
+
|
|
128
|
+
## Start coordinating agents in 30 seconds
|
|
79
129
|
|
|
80
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
106
|
-
|
|
107
|
-
|
|
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
|
-
|
|
112
|
-
|
|
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
|
|
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
|
-
|
|
133
|
-
|
|
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
|
-
|
|
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
|
-
###
|
|
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
|
-
|
|
142
|
-
|
|
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
|
-
|
|
145
|
-
`orch org deploy startup-mvp` — CTO, backend x2, QA, reviewer. Team created. Goal set. Agents ready. One command.
|
|
320
|
+
<br/>
|
|
146
321
|
|
|
147
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
333
|
+
<br/>
|
|
162
334
|
|
|
163
|
-
|
|
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
|
|
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-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
#
|
|
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
|
-
|
|
559
|
+
</details>
|
|
560
|
+
|
|
561
|
+
<p align="center"><strong>Aliases:</strong> <kbd>orchestry</kbd> <kbd>orch</kbd> <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 #
|
|
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
|
-
|
|
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
|
-
|
|
643
|
+
<br/>
|
|
287
644
|
|
|
288
|
-
<!--
|
|
289
|
-
|
|
290
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
681
|
+
</details>
|
|
682
|
+
|
|
683
|
+
<details>
|
|
684
|
+
<summary><strong>How much does it cost?</strong></summary>
|
|
685
|
+
|
|
686
|
+
<br/>
|
|
307
687
|
|
|
308
|
-
ORCH is
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
744
|
+
<br/>
|