{"id":47231382,"url":"https://github.com/oxgeneral/orch","last_synced_at":"2026-03-16T23:00:28.310Z","repository":{"id":343562460,"uuid":"1178236559","full_name":"oxgeneral/ORCH","owner":"oxgeneral","description":"One CLI to orchestrate them all. Manage a team of AI agents executing tasks in parallel from your terminal.","archived":false,"fork":false,"pushed_at":"2026-03-13T22:46:13.000Z","size":2330,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-14T07:06:12.999Z","etag":null,"topics":["agent-framework","ai-agents","automation","claude","cli","codex","cursor","developer-tools","devops","llm","multi-agent","nodejs","orchestrator","task-queue","terminal","tui","typescript","workflow-automation"],"latest_commit_sha":null,"homepage":"https://www.orch.one/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oxgeneral.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-10T20:37:40.000Z","updated_at":"2026-03-13T22:46:16.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/oxgeneral/ORCH","commit_stats":null,"previous_names":["oxgeneral/orch"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/oxgeneral/ORCH","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxgeneral%2FORCH","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxgeneral%2FORCH/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxgeneral%2FORCH/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxgeneral%2FORCH/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oxgeneral","download_url":"https://codeload.github.com/oxgeneral/ORCH/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxgeneral%2FORCH/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30552415,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-15T15:03:43.933Z","status":"ssl_error","status_checked_at":"2026-03-15T15:03:37.630Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-framework","ai-agents","automation","claude","cli","codex","cursor","developer-tools","devops","llm","multi-agent","nodejs","orchestrator","task-queue","terminal","tui","typescript","workflow-automation"],"created_at":"2026-03-13T20:27:09.725Z","updated_at":"2026-03-16T23:00:28.303Z","avatar_url":"https://github.com/oxgeneral.png","language":"TypeScript","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/logo.svg\" alt=\"ORCH\" height=\"60\" /\u003e\n  \u003cp align=\"center\"\u003e\n    \u003cstrong\u003eStop babysitting AI agents. Start orchestrating them.\u003c/strong\u003e\u003cbr/\u003e\n    One CLI to run Claude, Codex, Cursor, and shell scripts as a team — in parallel, with retries, from your terminal.\n  \u003c/p\u003e\n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/oxgeneral/ORCH/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/oxgeneral/ORCH?style=social\" alt=\"GitHub Stars\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://landing-xi-murex.vercel.app/\"\u003e\u003cimg src=\"https://img.shields.io/badge/website-landing-amber\" alt=\"Website\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://www.npmjs.com/package/@oxgeneral/orch\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/@oxgeneral/orch?color=cb0000\" alt=\"npm\" /\u003e\u003c/a\u003e\n    \u003ca href=\"#get-started-in-30-seconds\"\u003e\u003cimg src=\"https://img.shields.io/badge/setup-one%20command-brightgreen\" alt=\"One command setup\" /\u003e\u003c/a\u003e\n    \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-blue\" alt=\"MIT License\" /\u003e\u003c/a\u003e\n    \u003ca href=\"#development\"\u003e\u003cimg src=\"https://img.shields.io/badge/tests-1001%20passing-brightgreen\" alt=\"Tests\" /\u003e\u003c/a\u003e\n    \u003ca href=\"#architecture\"\u003e\u003cimg src=\"https://img.shields.io/badge/TypeScript-strict-blue\" alt=\"TypeScript strict\" /\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/p\u003e\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  \u003cvideo src=\"https://github.com/user-attachments/assets/c7c3ab77-e718-4e5a-a8cf-bfc446ace64e\" width=\"100%\" controls autoplay loop muted\u003e\u003c/video\u003e\n\u003c/div\u003e\n\u003cp align=\"center\"\u003e\n  \u003cem\u003eReal-time TUI dashboard: tasks running, agents working, activity streaming — all from one terminal.\u003c/em\u003e\n\u003c/p\u003e\n\n---\n\n## You know the pain\n\nYou 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.\n\nYou're the human router — switching tabs, copy-pasting context, manually tracking who's doing what, restarting crashed agents.\n\n**That's not engineering. That's babysitting.**\n\n## What if your AI agents worked like a real team?\n\n```\n$ orch run --all\n\n  orch · watching · 3 running · 0 queued\n\n  14:32  ▶ Backend A    → \"Implement OAuth2 flow\"\n  14:32  ▶ Backend B    → \"Write API integration tests\"\n  14:32  ▶ QA           → \"Verify auth edge cases\"\n  14:35  ✓ Backend B    DONE  (3m 12s · 4,200 tokens)\n  14:38  ✓ Backend A    DONE  (6m 44s · 8,100 tokens)\n  14:39  ↻ QA           RETRY  attempt 2 · found regression\n  14:41  ✓ QA           DONE  (2m 15s · 2,800 tokens)\n```\n\nOne command. Three agents. Zero tab-switching.\n\n## Get started in 30 seconds\n\n```bash\nnpm install -g @oxgeneral/orch\n```\n\nThen go to your project and run:\n\n```bash\ncd ~/your-project\norch\n```\n\nThat's it. ORCH auto-initializes on first run, then opens the TUI dashboard — you add agents and tasks right from there.\n\n**Requirements:** Node.js \u003e= 20\n\n## Why teams choose ORCH\n\n### Parallel execution that actually works\nRun up to N agents simultaneously. ORCH handles dispatching, slot management, and prevents double-assignments. You set `max_concurrent_agents: 5` and forget about it.\n\n### Agents that don't give up\nFailed? 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.\n\n### A real state machine, not a TODO list\n```\ntodo → in_progress → review → done\n                   ↘ retrying → in_progress\n                   ↘ failed\n```\nEvery transition is validated. No task gets lost. No agent runs something that's already done.\n\n### Real-time dashboard in your terminal\n```bash\norch          # launches TUI\n```\nFull-screen Ink/React dashboard with:\n- Live task \u0026 agent status with three tabs: **Tasks**, **Agents**, **Goals**\n- Activity feed with token counts\n- Keyboard-driven: create tasks, assign agents, approve reviews — without leaving the terminal\n- Command bar with `/task add`, `/agent add`, tab completion\n\n### Goals — strategic direction for your agents\nDefine 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.\n\n### Teams — organize agents into squads\nGroup 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.\n\n### Inter-agent messaging\nAgents 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.\n\n### Reactive dispatch\nNo 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.\n\n### Autonomous mode\nSet a goal, and ORCH generates work for idle agents automatically. Goal-directed task creation means your team stays productive without manual task assignment.\n\n### Shared context store\nA 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.\n\n### Global config \u0026 settings wizard\nConfigure activity filters, display preferences, and agent defaults through the TUI settings wizard or `orch config edit`. No manual YAML editing required.\n\n### Zero infrastructure\nAll state lives in `.orchestry/` — YAML configs, JSON state, JSONL event logs. No database. No cloud. No Docker. `git clone` and you're running.\n\n### Works with any AI tool\n| Adapter | What it runs |\n|---------|-------------|\n| `claude` | Claude Code CLI (`claude --print`) |\n| `codex` | OpenAI Codex CLI (`codex exec --json`) |\n| `cursor` | Cursor Agent CLI (headless mode) |\n| `shell` | Any command: `npm test`, `python bot.py`, custom scripts |\n\n## Full CLI reference\n\n```bash\n# Setup\norch init                          # Initialize project\norch doctor                        # System diagnostics\n\n# Tasks\norch task add \"Title\" -p 1         # Create task (priority 1-4)\norch task list                     # List all tasks\norch task list --status todo       # Filter by status\norch task assign \u003ctask\u003e \u003cagent\u003e    # Manual assignment\norch task cancel \u003ctask\u003e            # Cancel running task\n\n# Agents\norch agent add \u003cname\u003e --adapter claude --role \"Role description\"\norch agent list                    # Status of all agents\norch agent disable/enable \u003cid\u003e     # Toggle availability\n\n# Teams\norch team create \u003cname\u003e --lead \u003cagent-id\u003e    # Create a team\norch team list                               # List all teams\norch team join \u003cteam-id\u003e \u003cagent-id\u003e          # Add agent to team\norch team leave \u003cteam-id\u003e \u003cagent-id\u003e         # Remove agent from team\norch team set-lead \u003cteam-id\u003e \u003cagent-id\u003e      # Transfer lead role\norch team add-task \u003cteam-id\u003e \u003ctask-id\u003e       # Add task to team pool\norch team disband \u003cid\u003e                       # Disband a team\n\n# Messaging\norch msg send \u003cagent-id\u003e \"message\" -s \"subject\"   # Direct message\norch msg broadcast \"message\" -s \"subject\"          # Broadcast to all\norch msg broadcast \"message\" --team \u003cteam-id\u003e      # Broadcast to team\norch msg inbox \u003cagent-id\u003e                          # View inbox\n\n# Goals\norch goal add \"Title\" --description \"desc\"   # Create a goal\norch goal list                               # List all goals\norch goal list --status active               # Filter by status\norch goal show \u003cid\u003e                          # Goal details\norch goal status \u003cid\u003e achieved               # Change status\norch goal update \u003cid\u003e --title \"New title\"    # Update fields\norch goal delete \u003cid\u003e                        # Delete a goal\n\n# Shared Context\norch context set \u003ckey\u003e \u003cvalue\u003e     # Store shared data\norch context get \u003ckey\u003e             # Retrieve shared data\norch context list                  # List all entries\n\n# Execution\norch run \u003ctask-id\u003e                 # Run single task\norch run --all                     # Run everything\norch run --watch                   # Daemon mode\n\n# Monitoring\norch status                        # Quick overview\norch logs \u003crun-id\u003e                 # View run logs\norch tui                           # Interactive dashboard\n\n# Config\norch config edit                   # Open in $EDITOR\n\n# Updates\norch update                        # Check for and install latest version\n```\n\n**Aliases:** `orchestry`, `orch`, `ao`\n\n## Architecture\n\nClean DDD with dependency injection — no frameworks, no decorators, pure TypeScript:\n\n```\nsrc/\n├── domain/           # Models \u0026 state machine\n│   ├── task.ts           # Task entity, priorities, statuses\n│   ├── agent.ts          # Agent entity, stats, badges\n│   ├── run.ts            # Run entity, event types\n│   ├── goal.ts           # Goal entity, statuses\n│   ├── team.ts           # Team entity, members, pools\n│   ├── message.ts        # Message entity, channels\n│   ├── config.ts         # Project config schema\n│   ├── global-config.ts  # Global user settings\n│   ├── default-agents.ts # Default agent definitions\n│   ├── transitions.ts    # State machine transitions\n│   ├── scope.ts          # File scope matching\n│   ├── state.ts          # Orchestrator state\n│   ├── events.ts         # Event type definitions\n│   └── errors.ts         # Domain error types\n├── application/      # Orchestrator engine, services, event bus\n├── infrastructure/\n│   ├── adapters/     # Claude, Codex, Cursor, Shell (pluggable)\n│   ├── storage/      # File-based (YAML/JSON/JSONL)\n│   ├── process/      # PID management, graceful kill\n│   ├── template/     # LiquidJS template engine\n│   └── workspace/    # Isolation modes (shared/worktree/isolated)\n├── cli/              # Commander.js commands\n└── tui/              # Ink + React dashboard\n```\n\n## Development\n\n```bash\nnpm run dev            # Run via tsx\nnpm run build          # Build ESM + DTS\nnpm test               # 1001 tests via Vitest\nnpm run typecheck      # Strict TypeScript\n```\n\n**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.\n\n## Community\n\nWe 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.\n\n**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.\n\n**If ORCH saves you time → [⭐ Star it on GitHub](https://github.com/oxgeneral/ORCH)** — it helps other developers find the project.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=oxgeneral/ORCH\u0026type=Date)](https://star-history.com/#oxgeneral/ORCH\u0026Date)\n\n- **Open an issue** if something breaks or could be better\n- **Submit a PR** — see [CONTRIBUTING.md](CONTRIBUTING.md)\n\n## Used by / Early Adopters\n\n\u003e 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\u0026body=Tell+us+about+your+setup) — we'd love to feature you here.\n\n\u003c!-- ADOPTERS_START --\u003e\n*Be the first to add your project here — open an issue with \"Using ORCH in production\".*\n\u003c!-- ADOPTERS_END --\u003e\n\n## License\n\n[MIT](LICENSE) — use it however you want.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foxgeneral%2Forch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foxgeneral%2Forch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foxgeneral%2Forch/lists"}