@oxgeneral/orch 0.2.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.
- package/LICENSE +21 -0
- package/dist/App-CPQPQTZU.js +4751 -0
- package/dist/agent-J62U7ABO.js +157 -0
- package/dist/chunk-2B32FPEB.js +11 -0
- package/dist/chunk-2B32FPEB.js.map +1 -0
- package/dist/chunk-2VSAM7RH.js +166 -0
- package/dist/chunk-33QNTNR6.js +46 -0
- package/dist/chunk-45K2XID7.js +29 -0
- package/dist/chunk-6GFVB6EK.js +101 -0
- package/dist/chunk-6HENRUYZ.js +2 -0
- package/dist/chunk-6HENRUYZ.js.map +1 -0
- package/dist/chunk-AELEEEV3.js +92 -0
- package/dist/chunk-AELEEEV3.js.map +1 -0
- package/dist/chunk-CHIP7O6V.js +83 -0
- package/dist/chunk-CIIE6LNG.js +217 -0
- package/dist/chunk-E3TCKHU6.js +13 -0
- package/dist/chunk-E3TCKHU6.js.map +1 -0
- package/dist/chunk-ED47GL3F.js +29 -0
- package/dist/chunk-HNKJ4IF7.js +177 -0
- package/dist/chunk-HXYAZGLP.js +15 -0
- package/dist/chunk-IRN2U2NE.js +79 -0
- package/dist/chunk-IZYSGYXG.js +2 -0
- package/dist/chunk-IZYSGYXG.js.map +1 -0
- package/dist/chunk-O5AO5QIR.js +76 -0
- package/dist/chunk-P6ATSXGL.js +107 -0
- package/dist/chunk-PBFE5V3G.js +2 -0
- package/dist/chunk-PBFE5V3G.js.map +1 -0
- package/dist/chunk-PNE6LQRF.js +5 -0
- package/dist/chunk-POUC4CPC.js +2 -0
- package/dist/chunk-POUC4CPC.js.map +1 -0
- package/dist/chunk-TX7WOFCW.js +59 -0
- package/dist/chunk-VTA74YWX.js +291 -0
- package/dist/chunk-XI4TU6VU.js +50 -0
- package/dist/chunk-ZU6AY2VU.js +2 -0
- package/dist/chunk-ZU6AY2VU.js.map +1 -0
- package/dist/claude-GH6P2DC5.js +4 -0
- package/dist/claude-S47YTIHU.js +2 -0
- package/dist/claude-S47YTIHU.js.map +1 -0
- package/dist/cli.js +205 -0
- package/dist/codex-2CH57B7G.js +2 -0
- package/dist/codex-2CH57B7G.js.map +1 -0
- package/dist/codex-U7LTJTX6.js +115 -0
- package/dist/config-VN4MYHSY.js +75 -0
- package/dist/container-74P43KDY.js +1532 -0
- package/dist/context-EPHCF34F.js +83 -0
- package/dist/cursor-3DI5GKRF.js +92 -0
- package/dist/cursor-QFUNKPCQ.js +2 -0
- package/dist/cursor-QFUNKPCQ.js.map +1 -0
- package/dist/doctor-BK46WCQ5.js +67 -0
- package/dist/doctor-service-A34DHPKI.js +2 -0
- package/dist/doctor-service-NTWBWOM2.js +2 -0
- package/dist/doctor-service-NTWBWOM2.js.map +1 -0
- package/dist/goal-KGAIM3ZK.js +110 -0
- package/dist/index.d.ts +1356 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/init-QBWCEDCI.js +152 -0
- package/dist/logs-PYEKMQE2.js +207 -0
- package/dist/msg-BBIPCGDO.js +95 -0
- package/dist/orchestrator-TAFBYQQ5.js +2 -0
- package/dist/orchestrator-TAFBYQQ5.js.map +1 -0
- package/dist/orchestrator-VGYKSOZJ.js +1292 -0
- package/dist/output-5VQVCJ2K.js +2 -0
- package/dist/process-manager-HUVNAPQV.js +2 -0
- package/dist/process-manager-TLZOTO4Y.js +2 -0
- package/dist/process-manager-TLZOTO4Y.js.map +1 -0
- package/dist/registry-PQWRVNF2.js +2 -0
- package/dist/registry-UQAHK77P.js +2 -0
- package/dist/registry-UQAHK77P.js.map +1 -0
- package/dist/run-4GSZFGQZ.js +95 -0
- package/dist/shell-5ZNXFGXV.js +3 -0
- package/dist/shell-OGTSH4RJ.js +3 -0
- package/dist/shell-OGTSH4RJ.js.map +1 -0
- package/dist/status-KIISF542.js +56 -0
- package/dist/task-NUCRHYW7.js +209 -0
- package/dist/team-IBUP5XV4.js +97 -0
- package/dist/template-engine-322SCRR6.js +2 -0
- package/dist/template-engine-322SCRR6.js.map +1 -0
- package/dist/template-engine-3CDRZNMJ.js +3 -0
- package/dist/tui-WWZA73IO.js +225 -0
- package/dist/update-RJ4IYACQ.js +64 -0
- package/dist/update-check-4RV7Z6WT.js +2 -0
- package/dist/workspace-manager-47KI7B27.js +179 -0
- package/dist/workspace-manager-7M46ESUL.js +2 -0
- package/dist/workspace-manager-7M46ESUL.js.map +1 -0
- package/package.json +79 -0
- package/readme.md +270 -0
package/readme.md
ADDED
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="assets/logo.svg" alt="ORCH" height="60" />
|
|
3
|
+
<p align="center">
|
|
4
|
+
<strong>Stop babysitting AI agents. Start orchestrating them.</strong><br/>
|
|
5
|
+
One CLI to run Claude, Codex, Cursor, and shell scripts as a team — in parallel, with retries, from your terminal.
|
|
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://landing-xi-murex.vercel.app/"><img src="https://img.shields.io/badge/website-landing-amber" alt="Website" /></a>
|
|
10
|
+
<a href="https://github.com/oxgeneral/ORCH/packages"><img src="https://img.shields.io/badge/npm-@oxgeneral/orch-cb0000" alt="GitHub Packages" /></a>
|
|
11
|
+
<a href="#get-started-in-30-seconds"><img src="https://img.shields.io/badge/setup-one%20command-brightgreen" alt="One command 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-844%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>
|
|
16
|
+
</p>
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
<p align="center">
|
|
21
|
+
<img src="assets/screenshot-tui.png" alt="ORCH TUI Dashboard — real-time task monitoring, agent activity feed, and keyboard-driven controls" width="100%" />
|
|
22
|
+
<br/>
|
|
23
|
+
<em>Real-time TUI dashboard: tasks running, agents working, activity streaming — all from one terminal.</em>
|
|
24
|
+
</p>
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## You know the pain
|
|
29
|
+
|
|
30
|
+
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.
|
|
31
|
+
|
|
32
|
+
You're the human router — switching tabs, copy-pasting context, manually tracking who's doing what, restarting crashed agents.
|
|
33
|
+
|
|
34
|
+
**That's not engineering. That's babysitting.**
|
|
35
|
+
|
|
36
|
+
## What if your AI agents worked like a real team?
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
$ orch run --all
|
|
40
|
+
|
|
41
|
+
orch · watching · 3 running · 0 queued
|
|
42
|
+
|
|
43
|
+
14:32 ▶ Backend A → "Implement OAuth2 flow"
|
|
44
|
+
14:32 ▶ Backend B → "Write API integration tests"
|
|
45
|
+
14:32 ▶ QA → "Verify auth edge cases"
|
|
46
|
+
14:35 ✓ Backend B DONE (3m 12s · 4,200 tokens)
|
|
47
|
+
14:38 ✓ Backend A DONE (6m 44s · 8,100 tokens)
|
|
48
|
+
14:39 ↻ QA RETRY attempt 2 · found regression
|
|
49
|
+
14:41 ✓ QA DONE (2m 15s · 2,800 tokens)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
One command. Three agents. Zero tab-switching.
|
|
53
|
+
|
|
54
|
+
## Get started in 30 seconds
|
|
55
|
+
|
|
56
|
+
### Option 1: Install from GitHub Packages
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npm install -g @oxgeneral/orch --registry=https://npm.pkg.github.com
|
|
60
|
+
|
|
61
|
+
cd ~/your-project
|
|
62
|
+
orch
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Option 2: Clone and build
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
git clone https://github.com/oxgeneral/ORCH.git && cd ORCH
|
|
69
|
+
npm install && npm run build
|
|
70
|
+
|
|
71
|
+
# Go to your project and launch
|
|
72
|
+
cd ~/your-project
|
|
73
|
+
orch
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
That's it. The TUI opens, you add agents and tasks right from the dashboard — no CLI memorization needed.
|
|
77
|
+
|
|
78
|
+
**Requirements:** Node.js >= 20
|
|
79
|
+
|
|
80
|
+
## Why teams choose ORCH
|
|
81
|
+
|
|
82
|
+
### Parallel execution that actually works
|
|
83
|
+
Run up to N agents simultaneously. ORCH handles dispatching, slot management, and prevents double-assignments. You set `max_concurrent_agents: 5` and forget about it.
|
|
84
|
+
|
|
85
|
+
### Agents that don't give up
|
|
86
|
+
Failed? ORCH retries with exponential backoff. Stalled? Automatic detection kills the zombie and re-queues. Crashed? The next tick picks it up. Your tasks finish even when individual runs fail.
|
|
87
|
+
|
|
88
|
+
### A real state machine, not a TODO list
|
|
89
|
+
```
|
|
90
|
+
todo → in_progress → review → done
|
|
91
|
+
↘ retrying → in_progress
|
|
92
|
+
↘ failed
|
|
93
|
+
```
|
|
94
|
+
Every transition is validated. No task gets lost. No agent runs something that's already done.
|
|
95
|
+
|
|
96
|
+
### Real-time dashboard in your terminal
|
|
97
|
+
```bash
|
|
98
|
+
orch # launches TUI
|
|
99
|
+
```
|
|
100
|
+
Full-screen Ink/React dashboard with:
|
|
101
|
+
- Live task & agent status with three tabs: **Tasks**, **Agents**, **Goals**
|
|
102
|
+
- Activity feed with token counts
|
|
103
|
+
- Keyboard-driven: create tasks, assign agents, approve reviews — without leaving the terminal
|
|
104
|
+
- Command bar with `/task add`, `/agent add`, tab completion
|
|
105
|
+
|
|
106
|
+
### Goals — strategic direction for your agents
|
|
107
|
+
Define high-level goals and let ORCH autonomously generate tasks to achieve them. Goals have statuses (`active`, `paused`, `achieved`, `abandoned`), can be assigned to specific agents, and appear in a dedicated TUI tab for tracking.
|
|
108
|
+
|
|
109
|
+
### Teams — organize agents into squads
|
|
110
|
+
Group agents into teams with a lead, shared task pools, and auto-claiming. Each team member has a role and badge. The lead coordinates work distribution, and the team pool keeps related tasks together.
|
|
111
|
+
|
|
112
|
+
### Inter-agent messaging
|
|
113
|
+
Agents communicate through direct messages and broadcasts. Send context between agents, coordinate across teams, and keep everyone in sync — all via CLI or programmatically during runs.
|
|
114
|
+
|
|
115
|
+
### Reactive dispatch
|
|
116
|
+
No more waiting for the next 30-second poll cycle. When a task is created, ORCH dispatches it immediately (500ms debounce). Your agents start working in under a second.
|
|
117
|
+
|
|
118
|
+
### Autonomous mode
|
|
119
|
+
Set a goal, and ORCH generates work for idle agents automatically. Goal-directed task creation means your team stays productive without manual task assignment.
|
|
120
|
+
|
|
121
|
+
### Shared context store
|
|
122
|
+
A key-value store for inter-agent data exchange. Agents save results, share findings, and build on each other's work — with optional TTL for ephemeral data.
|
|
123
|
+
|
|
124
|
+
### Global config & settings wizard
|
|
125
|
+
Configure activity filters, display preferences, and agent defaults through the TUI settings wizard or `orch config edit`. No manual YAML editing required.
|
|
126
|
+
|
|
127
|
+
### Zero infrastructure
|
|
128
|
+
All state lives in `.orchestry/` — YAML configs, JSON state, JSONL event logs. No database. No cloud. No Docker. `git clone` and you're running.
|
|
129
|
+
|
|
130
|
+
### Works with any AI tool
|
|
131
|
+
| Adapter | What it runs |
|
|
132
|
+
|---------|-------------|
|
|
133
|
+
| `claude` | Claude Code CLI (`claude --print`) |
|
|
134
|
+
| `codex` | OpenAI Codex CLI (`codex exec --json`) |
|
|
135
|
+
| `cursor` | Cursor Agent CLI (headless mode) |
|
|
136
|
+
| `shell` | Any command: `npm test`, `python bot.py`, custom scripts |
|
|
137
|
+
|
|
138
|
+
## Full CLI reference
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
# Setup
|
|
142
|
+
orch init # Initialize project
|
|
143
|
+
orch doctor # System diagnostics
|
|
144
|
+
|
|
145
|
+
# Tasks
|
|
146
|
+
orch task add "Title" -p 1 # Create task (priority 1-4)
|
|
147
|
+
orch task list # List all tasks
|
|
148
|
+
orch task list --status todo # Filter by status
|
|
149
|
+
orch task assign <task> <agent> # Manual assignment
|
|
150
|
+
orch task cancel <task> # Cancel running task
|
|
151
|
+
|
|
152
|
+
# Agents
|
|
153
|
+
orch agent add <name> --adapter claude --role "Role description"
|
|
154
|
+
orch agent list # Status of all agents
|
|
155
|
+
orch agent disable/enable <id> # Toggle availability
|
|
156
|
+
|
|
157
|
+
# Teams
|
|
158
|
+
orch team create <name> --lead <agent-id> # Create a team
|
|
159
|
+
orch team list # List all teams
|
|
160
|
+
orch team join <team-id> <agent-id> # Add agent to team
|
|
161
|
+
orch team leave <team-id> <agent-id> # Remove agent from team
|
|
162
|
+
orch team set-lead <team-id> <agent-id> # Transfer lead role
|
|
163
|
+
orch team add-task <team-id> <task-id> # Add task to team pool
|
|
164
|
+
orch team disband <id> # Disband a team
|
|
165
|
+
|
|
166
|
+
# Messaging
|
|
167
|
+
orch msg send <agent-id> "message" -s "subject" # Direct message
|
|
168
|
+
orch msg broadcast "message" -s "subject" # Broadcast to all
|
|
169
|
+
orch msg broadcast "message" --team <team-id> # Broadcast to team
|
|
170
|
+
orch msg inbox <agent-id> # View inbox
|
|
171
|
+
|
|
172
|
+
# Goals
|
|
173
|
+
orch goal add "Title" --description "desc" # Create a goal
|
|
174
|
+
orch goal list # List all goals
|
|
175
|
+
orch goal list --status active # Filter by status
|
|
176
|
+
orch goal show <id> # Goal details
|
|
177
|
+
orch goal status <id> achieved # Change status
|
|
178
|
+
orch goal update <id> --title "New title" # Update fields
|
|
179
|
+
orch goal delete <id> # Delete a goal
|
|
180
|
+
|
|
181
|
+
# Shared Context
|
|
182
|
+
orch context set <key> <value> # Store shared data
|
|
183
|
+
orch context get <key> # Retrieve shared data
|
|
184
|
+
orch context list # List all entries
|
|
185
|
+
|
|
186
|
+
# Execution
|
|
187
|
+
orch run <task-id> # Run single task
|
|
188
|
+
orch run --all # Run everything
|
|
189
|
+
orch run --watch # Daemon mode
|
|
190
|
+
|
|
191
|
+
# Monitoring
|
|
192
|
+
orch status # Quick overview
|
|
193
|
+
orch logs <run-id> # View run logs
|
|
194
|
+
orch tui # Interactive dashboard
|
|
195
|
+
|
|
196
|
+
# Config
|
|
197
|
+
orch config edit # Open in $EDITOR
|
|
198
|
+
|
|
199
|
+
# Updates
|
|
200
|
+
orch update # Check for and install latest version
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
**Aliases:** `orchestry`, `orch`, `ao`
|
|
204
|
+
|
|
205
|
+
## Architecture
|
|
206
|
+
|
|
207
|
+
Clean DDD with dependency injection — no frameworks, no decorators, pure TypeScript:
|
|
208
|
+
|
|
209
|
+
```
|
|
210
|
+
src/
|
|
211
|
+
├── domain/ # Models & state machine
|
|
212
|
+
│ ├── task.ts # Task entity, priorities, statuses
|
|
213
|
+
│ ├── agent.ts # Agent entity, stats, badges
|
|
214
|
+
│ ├── run.ts # Run entity, event types
|
|
215
|
+
│ ├── goal.ts # Goal entity, statuses
|
|
216
|
+
│ ├── team.ts # Team entity, members, pools
|
|
217
|
+
│ ├── message.ts # Message entity, channels
|
|
218
|
+
│ ├── config.ts # Project config schema
|
|
219
|
+
│ ├── global-config.ts # Global user settings
|
|
220
|
+
│ ├── default-agents.ts # Default agent definitions
|
|
221
|
+
│ ├── transitions.ts # State machine transitions
|
|
222
|
+
│ ├── scope.ts # File scope matching
|
|
223
|
+
│ ├── state.ts # Orchestrator state
|
|
224
|
+
│ ├── events.ts # Event type definitions
|
|
225
|
+
│ └── errors.ts # Domain error types
|
|
226
|
+
├── application/ # Orchestrator engine, services, event bus
|
|
227
|
+
├── infrastructure/
|
|
228
|
+
│ ├── adapters/ # Claude, Codex, Cursor, Shell (pluggable)
|
|
229
|
+
│ ├── storage/ # File-based (YAML/JSON/JSONL)
|
|
230
|
+
│ ├── process/ # PID management, graceful kill
|
|
231
|
+
│ ├── template/ # LiquidJS template engine
|
|
232
|
+
│ └── workspace/ # Isolation modes (shared/worktree/isolated)
|
|
233
|
+
├── cli/ # Commander.js commands
|
|
234
|
+
└── tui/ # Ink + React dashboard
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
## Development
|
|
238
|
+
|
|
239
|
+
```bash
|
|
240
|
+
npm run dev # Run via tsx
|
|
241
|
+
npm run build # Build ESM + DTS
|
|
242
|
+
npm test # 844 tests via Vitest
|
|
243
|
+
npm run typecheck # Strict TypeScript
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**Performance:** CLI startup is ~40% faster thanks to lazy command imports — heavy dependencies (orchestrator, adapters, LiquidJS) are loaded only when the relevant subcommand is invoked. `--help` and lightweight commands like `task list` skip the full container entirely.
|
|
247
|
+
|
|
248
|
+
## Community
|
|
249
|
+
|
|
250
|
+
We just hit **10 stars** — small number, real users. Every star so far came from someone who actually runs multi-agent workflows and needed something better than tab-switching.
|
|
251
|
+
|
|
252
|
+
**Next milestone: 25 stars** — when we get there, we'll add a public "Used by" showcase. If you're already running ORCH in your workflow, [open an issue](https://github.com/oxgeneral/ORCH/issues) and tell us — you'll be first on the list.
|
|
253
|
+
|
|
254
|
+
If ORCH saves you time, let others find it too:
|
|
255
|
+
|
|
256
|
+
- **⭐ Star the repo** — helps other developers find ORCH: [github.com/oxgeneral/ORCH](https://github.com/oxgeneral/ORCH)
|
|
257
|
+
- **Open an issue** if something breaks or could be better
|
|
258
|
+
- **Submit a PR** — see [CONTRIBUTING.md](CONTRIBUTING.md)
|
|
259
|
+
|
|
260
|
+
## Used by / Early Adopters
|
|
261
|
+
|
|
262
|
+
> This section will be filled as the community grows. Using ORCH in your project? [Let us know](https://github.com/oxgeneral/ORCH/issues/new?title=Using+ORCH+in+production&body=Tell+us+about+your+setup) — we'd love to feature you here.
|
|
263
|
+
|
|
264
|
+
<!-- ADOPTERS_START -->
|
|
265
|
+
*Be the first to add your project here — open an issue with "Using ORCH in production".*
|
|
266
|
+
<!-- ADOPTERS_END -->
|
|
267
|
+
|
|
268
|
+
## License
|
|
269
|
+
|
|
270
|
+
[MIT](LICENSE) — use it however you want.
|