Skip to content

ORCH

AI Agents & Assistants

Open‑source orchestration that lets AI agents (Claude, Codex, Cursor, etc.) coordinate themselves so developers can set goals and let the system run without manual babysitting.

TypeScript Latest v1.0.24 · 15d ago Security brief →

Features

  • Automatically deploy and manage multiple AI agents as a coordinated team
  • Zero‑infrastructure setup – one npm install launches a TUI dashboard
  • Supports Claude, Codex, Cursor and any CLI tool in parallel workflows
  • Self‑contained goal decomposition, task assignment, execution tracking and review

Recent releases

View all 24 releases →
No immediate action
v1.0.24 Mixed

Pi adapter text delta aggregation + performance

No immediate action
v1.0.23 Mixed

Pi RPC adapter + fixes + performance

v1.0.22 New feature
Notable features
  • Unified text input system replacing FormWizard text-step, InputPanel, and command-bar with shared architecture
  • New editing keyboard shortcuts (Ctrl+A/E, Ctrl+K/U/W/Y, Cmd+Backspace, etc.)
Full changelog

Refactoring

  • Unified text input system — replaced three separate text input implementations (FormWizard text-step, InputPanel, command-bar) with a shared architecture inspired by Claude Code:
    • text-cursor.ts — immutable Cursor class with NFC normalization and Intl.Segmenter-based grapheme navigation (CJK, emoji, Cyrillic, combining marks)
    • hooks/useTextInput.ts — keyboard logic hook with undo stack (Ctrl+Z / Cmd+Z), kill ring (Ctrl+K/U/W/Y), word navigation (Option+Left/Right), and all terminal editing shortcuts
    • components/TextInput.tsx — display component with sliding viewport that keeps cursor visible on text overflow

Bug Fixes

  • Cursor jumping on keyboard language switch — NFC normalization in Cursor constructor prevents position drift when IME sends NFD-encoded characters during layout switching
  • Text overflow at screen edge — single-line text inputs now use a sliding viewport instead of truncating from the end, keeping the cursor always visible
  • Undo stack over-drain — debounced undo snapshots captured current state, causing Ctrl+Z to pop identical text with no visible effect; fixed by skipping one matching snapshot before applying undo
  • React anti-pattern in textareasetTaCursorCol was called inside a setTaLines updater function; moved out to prevent potential double-fire in concurrent mode
  • Timer leak on unmount — undo debounce timer is now cleared via useEffect cleanup when the component unmounts mid-debounce

Performance

  • Zero-cost cursor navigation — arrow keys, Home/End, word navigation reuse existing grapheme segments via Cursor._withPos() factory instead of re-running Intl.Segmenter on unchanged text
  • Single-pass insertCursor.insert() uses graphemeSegments() once instead of graphemeLength() + constructor re-segmentation
  • Render-path optimizationTextInput reads cursor.beforeSegs / cursor.afterSegs directly, avoiding join + re-segmentation on every render

New Features

  • Editing shortcuts — Ctrl+A/E (start/end), Ctrl+K/U/W (kill operations), Ctrl+Y (yank), Ctrl+Z / Cmd+Z (undo), Cmd+Backspace (kill to start), Ctrl+B/F (left/right), Ctrl+D (delete forward), Ctrl+H (backspace), Home/End keys

Tests

  • 96 new tests (1829 → 1923):
    • text-cursor.test.ts (61 tests) — grapheme segmentation, NFC normalization, CJK/emoji/Cyrillic handling, cursor navigation, editing, kill operations, display width
    • text-input.test.tsx (33 tests) — E2E via ink-testing-library: FormWizard text-step input/submit, cursor navigation, backspace, all Ctrl shortcuts, Cyrillic/emoji/CJK input, undo, step transitions, validation
v1.0.21 Bug fix

Fixed parallel runs being falsely marked as failed and tasks assigned by agent name now resolve correctly.

Full changelog

Bug Fixes

  • Parallel runs race condition (#8) — when multiple agents completed in parallel via orch serve, successful runs were falsely marked as failed. Root cause: reconcile detected dead PIDs before handleRunSuccess acquired the mutex, treating clean exits as crashes. Fix: activeCollectors guard prevents reconcile from interfering with tasks that have an active event collector. Also fixes orphaned runs stuck in status: running when the running entry was already cleaned up
  • Assignee name resolution (#7) — tasks assigned by agent name (e.g. --assignee "Sam Altman") instead of agent ID were silently accepted but never dispatched. TaskService.resolveAssignee() now normalizes agent names to IDs at creation and assignment time, with clear error messages for unknown agents. findBestAgent() also matches by name as a fallback for legacy data

Tests

  • 15 new tests: activeCollectors guard (reconcile skip, crash detection, cleanup, orphaned run finalization), assignee name→ID resolution (create, assign, unknown name/ID, backward compatibility, findBestAgent name fallback)
v1.0.20 Bug fix

Fixed goal completion deadlock and allowed paused goals to transition directly to achieved.

Full changelog

Bug Fixes

  • Goal completion deadlock — agents could not mark their own goal as achieved because the agent's running [auto] task blocked the pending-tasks guard. Autonomous tasks are now excluded from the check since they are the mechanism for achieving the goal, not a blocker
  • paused → achieved transition — goals in paused state can now be directly marked as achieved without requiring a resume first. State machine updated: paused → active | achieved | abandoned
  • TUI force-complete — pressing C on a goal in TUI now uses force: true to cancel cancellable pending tasks, with an informative status message. Previously it would silently fail if any non-terminal tasks existed

Tests

  • 4 new tests: autonomous task exclusion from pending check, non-auto task still blocks, paused → achieved with side effects, paused → achieved with force + pending tasks

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

About

Stars
71
Forks
7
Languages
TypeScript HTML JavaScript
Downloads/week
348 ↑194%
NPM Maintainers
1 Single npm maintainer
Contributors
3
TypeScript
Types included ✓

Install & Platforms

Install via
npm

Beta — feedback welcome: [email protected]