Skip to content

Release history

ORCH releases

CLI orchestrator that manages Claude Code, Codex, and Cursor as a typed task queue with state machine (todo→in_progress→review→done), auto-retry, inter-agent messaging, and TUI dashboard.

All releases

24 shown

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
v1.0.19 Bug fix

Fixed a retry dispatch race condition that could cause zombie processes and incorrect task‑failure stats.

Full changelog

Bug Fixes

  • Retry dispatch race condition — fixed a race where a task could be re-dispatched from the retry queue after it had already succeeded. dispatchTask() now checks isDispatchable(task.status) before spawning, retry queue processing validates task status before dispatch, and _handleRunFailure skips if the running entry was already cleaned up by the success handler. This prevents zombie processes, false tasks_failed stats, and orphaned preparing runs
  • GitHub star count on landing page — navbar and CTA now show live star count fetched from GitHub API

Tests

  • 5 new tests covering retry race condition guards (dispatch of done/cancelled/failed tasks, retry queue skip, failure handler race)
v1.0.18 New feature
Notable features
  • Adapter‑agnostic `orch init` auto‑detects installed AI adapters (claude, opencode, codex, cursor) and lets you select a default; agent shop templates use semantic model tiers (`balanced`, `capable`, `fast`) instead of hard‑coded Claude names.
  • Goal completion guard blocks marking a goal as achieved while linked tasks are in `todo`, `in_progress`, `retrying`, or `review` states, reporting blocking tasks and allowing forced cancellation with `--force`.
Full changelog

Features

  • Adapter-agnostic onboarding (#6) — orch init now auto-detects installed AI adapters (claude, opencode, codex, cursor) and lets you choose a default. Agent shop templates use semantic tiers (balanced, capable, fast) instead of hardcoded Claude model names, so agents are created with the correct model for your chosen adapter. Pass --adapter <name> to skip detection
  • Goal completion guard — goals can no longer be marked achieved while linked tasks are still pending (todo, in_progress, retrying, review). Agents calling orch goal status <id> achieved will see a clear error listing the blocking tasks. Use --force to cancel pending tasks and force the transition (skips in_progress tasks with live processes)

Fixes

  • MCP skills filtered for non-Claude adapters — agent shop templates and TUI wizard now strip MCP skills (colon-format like testing-suite:generate-tests) when the default adapter is not Claude, since MCP skills only work with the Claude CLI
  • Cursor agent probe false-positiveorch init adapter detection no longer probes the generic agent binary (too common on systems), only cursor-agent
  • TUI refresh after status change — fixed a race condition where entityListChanged() compared tasks by updated_at timestamp, causing refresh no-ops when initial and updated tasks had identical timestamps

Tests

  • 32 new tests: goal pending-tasks validation (10), model tier resolution (8), agent factory (5), adapter-agnostic init (4), MCP skill filtering (3), TUI refresh fix (2)
v1.0.13 New feature
Notable features
  • TUI Observer Mode enters OBSERVING state with amber badge when another process holds the orchestrator lock
  • Full cross‑process event visibility including agent output, file changes, errors, tool calls, lifecycle events, task status transitions, and orchestrator ticks
Full changelog

Features

  • TUI Observer Mode — when another process holds the orchestrator lock (orch run --watch, orch serve, or the orch skill in Claude Code), the TUI now enters OBSERVING mode instead of showing a dead IDLE screen
  • Full cross-process event visibility — agent output, file changes, errors, tool calls, lifecycle events, task status transitions, orchestrator ticks
  • OBSERVING header badge — amber ● OBSERVING chip

Fixes

  • DiskObserver JSONL tailingstate.running keys are taskIds, not runIds. Fixed to use entry.run_id for JSONL paths

Improvements

  • Byte-offset JSONL tailing with partial-line buffering
  • Concurrent poll guard, stale-refresh dedup, 64KB remainder cap

Tests

  • 15 new tests (unit + integration) + battle test (5 runs, 44 events)

Install: npm install -g @oxgeneral/[email protected]

v1.0.12 New feature
Notable features
  • TUI Observer Mode enters OBSERVING state and mirrors real‑time activity from an external orchestrator via DiskObserver
  • Full cross‑process event visibility includes agent output, file changes, errors, tool calls, lifecycle transitions, and task status updates
Full changelog

Features

  • TUI Observer Mode — when another process holds the orchestrator lock (orch run --watch, orch serve, or the orch skill in Claude Code), the TUI now enters OBSERVING mode instead of showing a dead IDLE screen. The new DiskObserver polls state.json and tails run JSONL files to deliver the same real-time activity stream as the in-process orchestrator
  • Full cross-process event visibility — observer mode shows agent output, file changes, errors, tool calls, lifecycle events (started/completed), task status transitions, and orchestrator ticks — identical to the native TUI experience
  • OBSERVING header badge — amber ● OBSERVING chip replaces the red error message, clearly indicating the TUI is connected to an external orchestrator

Improvements

  • Byte-offset JSONL tailing — DiskObserver tracks per-run byte offsets with partial-line buffering, reading only new bytes each tick. Handles mid-line splits across poll boundaries correctly
  • Concurrent poll guard — prevents race conditions when a poll tick takes longer than the poll interval
  • Stale-refresh dedup — periodic state refresh in observer mode skips if an event-driven refresh already ran recently, avoiding redundant disk reads
  • Remainder cap — partial JSONL line buffer is capped at 64KB to prevent unbounded memory growth on stalled writes

Tests

  • 15 new tests: 11 unit tests for DiskObserver (event translation, byte offsets, partial lines, error handling, unsubscribe), 4 integration tests (full lifecycle, failed runs, concurrent runs, orchestrator restart detection)
  • Battle test script simulating real cross-process orchestration with 5 runs and 44 events

Install: npm install -g @oxgeneral/[email protected]

v1.0.5 New feature
Notable features
  • Headless `orch serve` daemon mode for 24/7 operation
  • Structured JSON logging (`--log-format json`) for observability tools
  • `--once` flag processes tasks and exits, supporting CI/CD workflows
Full changelog

orch serve — Headless Daemon Mode

Run ORCH as a background daemon for 24/7 operation on servers. Compatible with pm2 and systemd.

# On your VPS:
orch serve &

# From another terminal:
orch task add "Fix auth bug" -p 1   # daemon picks it up on next tick
orch status                          # see orchestrator state

Highlights

  • Structured JSON logging — machine-parseable output for Datadog, Grafana Loki, jq
  • --once mode — process all tasks and exit, designed for CI/CD pipelines (exit 0 = success, exit 1 = failures)
  • Graceful shutdown — SIGINT/SIGTERM waits for running agents, saves state, releases lock
  • Heap monitoring — memory usage tracked in tick events for 24/7 stability
  • pm2 / systemd ready — works as a managed process out of the box

New Options

orch serve [options]

  --once                 Process current tasks and exit
  --tick-interval <ms>   Override polling interval (default: 10000)
  --log-file <path>      Tee logs to file in addition to stdout
  --log-format <fmt>     json | text (default: json)
  --verbose              Include agent:output events (noisy, off by default)

Example Output

{"ts":"2026-03-17T10:00:00Z","level":"info","event":"serve:started","mode":"watch","pid":12345,"poll_interval_ms":10000}
{"ts":"2026-03-17T10:00:01Z","level":"info","event":"task:status_changed","taskId":"tsk_abc","from":"todo","to":"in_progress"}
{"ts":"2026-03-17T10:00:01Z","level":"info","event":"agent:started","agentId":"agt_1","taskId":"tsk_abc","runId":"run_xyz"}
{"ts":"2026-03-17T10:00:15Z","level":"info","event":"agent:completed","runId":"run_xyz","agentId":"agt_1","success":true}
{"ts":"2026-03-17T10:00:15Z","level":"info","event":"task:status_changed","taskId":"tsk_abc","from":"review","to":"done"}
{"ts":"2026-03-17T10:00:20Z","level":"info","event":"orchestrator:tick","running":0,"queued":0,"heap_mb":9.2}

Files Changed

| File | Action |
|------|--------|
| src/cli/serve/types.ts | New — LogFormat, ServeEvent types |
| src/cli/serve/structured-logger.ts | New — StructuredLogger class |
| src/cli/serve/once-runner.ts | New — runOnce() for --once mode |
| src/cli/commands/serve.ts | New — serve command |
| src/application/orchestrator.ts | Modified — startWatch({ skipAutonomousSeeding }) option |
| src/bin/cli.ts | Modified — registered serve command |

Tests: 1649 (37 new) · TypeScript: clean · Build: clean


Full Changelog: https://github.com/oxgeneral/ORCH/compare/v1.0.4...v1.0.5

v1.0.4 Bug fix

Orphaned tasks are now cancelled on restart preventing re‑execution of already committed work

Full changelog

Fixes

  • Restart safety — orphaned tasks on restart are now cancelled instead of retried, preventing agents from re-executing already committed work
  • FTUE parent leakorch in a new folder no longer picks up a parent directory's .orchestry/ project
  • Activity feed — history now loads correctly on startup (sort by recency, filter cancelled runs, log errors instead of silently swallowing)
v1.0.3 Breaking risk
Notable features
  • IndexManager introduced with a single `_index.json` cache for all store list operations
  • CLI startup parallelizes `requireInit()` and `configStore.read()`
  • Output buffering consolidates `printTable`/`printKeyValue` writes into one `stdout.write` call
Full changelog

What's New

Reasoning & Cache Token Tracking

TokenUsage now tracks reasoning, cache_read, cache_write separately. Reasoning tokens are included in total; cache tokens are informational (subset of input, not double-counted). TUI header shows 🧠 icon when reasoning tokens are present.

Performance: IndexManager + Caching

  • Extracted generic IndexManager<T> with _index.json cache — list operations across all stores (TaskStore, AgentStore, ContextStore, GoalStore, MessageStore) now read 1 file instead of N
  • Parallel requireInit() + configStore.read() during CLI startup
  • Buffered printTable/printKeyValue output (single stdout.write call)
  • Orchestrator tick: parallel reconcile, findProjectRoot cache, lazy globalConfig
  • Removed redundant requireInit() in read-only commands

Fixes

  • IndexManager promise-chain mutex prevents TOCTOU race on concurrent reads/writes
  • rebuildIndex no longer deadlocks on re-entrant calls
  • Token code simplified: createTokenUsage as single source of truth, TokenUsage type reuse, useMemo for TUI header

Daemon Mode (design only)

Architecture doc for sub-10ms CLI responses via persistent background process — implementation coming in a future release.


Install / Upgrade:

npm i -g @oxgeneral/orch

🤖 Generated with Claude Code

v1.0.0 New feature
Notable features
  • 5 adapter ecosystem (Claude, OpenCode, Codex, Cursor, Shell) enabling mixed AI provider teams
  • Real-time TUI dashboard with tasks, agents, goals, activity feed and log filtering
  • Smart prompt architecture with system/user split for Claude API caching
Full changelog

First stable release. Production-ready CLI orchestrator for AI agent teams.

Highlights

  • 5 adapter ecosystem — Claude, OpenCode, Codex, Cursor, Shell — mix any AI providers in one team
  • 1493 tests — comprehensive coverage across all layers
  • Real-time TUI dashboard — tasks, agents, goals, activity feed, logs with filtering
  • Smart prompt architecture — system/user split for caching, relevance-based context filtering
  • Zero-config startnpm i -g @oxgeneral/orch && orch auto-initializes

New in 1.0.0 (since 0.3.4)

Features

  • OpenCode adapter — new opencode adapter for multi-provider agent support via OpenCode CLI (OpenRouter, DeepSeek, Gemini, etc.). JSONL event streaming with --format json, model pass-through as provider/model
  • System/User prompt split — separate static system prompt (agent identity, rules) from dynamic user prompt (task details) for Claude API prompt caching (~40-60% fewer input tokens on repeat runs)
  • Agent picker [adapter] tags — assignee lists in TUI now show [claude], [opencode], [codex] etc. next to each agent for provider visibility
  • OpenCode model catalog — TUI wizard offers Default (use opencode config), Claude, Gemini, DeepSeek, and Big Pickle models when creating opencode agents

Bug Fixes

  • OpenCode tool display — tool_call events from opencode now render as ⚙ grep(pattern: "...") instead of raw JSON in TUI logs
  • step_finish noise — intermediate step_finish lifecycle events no longer pollute activity feed

Reverted Optimizations

  • Context value truncation (500 char cap) — silently lost agent context
  • Agent role truncation (80 char / first line) — agents couldn't see teammates' capabilities
  • Goal task names cap (30 entries) — agents lost goal progress visibility
  • Retry output tail reads (50 lines) — agents lost failure chain context

Design principle: token optimizations must not silently lose data that agents need. Filtering by relevance is OK; hard truncation is not.

Full Feature Set (cumulative)

Orchestration Engine

  • Parallel agent execution with configurable concurrency (max_concurrent_agents)
  • State machine: todo → in_progress → review → done with retrying and failed branches
  • Automatic retry with exponential backoff, stall detection, zombie process cleanup
  • Priority-based dispatch (P1-first, goal-linked tasks prioritized)
  • Scope-based file conflict prevention (--scope, --depends-on)
  • Task dependencies with topological ordering

Adapters

  • Claude — Claude Code CLI with --system-prompt for prompt caching
  • OpenCode — OpenCode CLI with multi-provider support (OpenRouter, DeepSeek, Gemini)
  • Codex — OpenAI Codex CLI with stdin prompt delivery
  • Cursor — Cursor Agent CLI with auto-binary resolution
  • Shell — arbitrary commands via bash -lc with env variable prompt

TUI Dashboard (Ink/React)

  • 3-tab interface: Tasks, Agents, Goals with detail panels
  • Real-time activity feed with type-based filtering (text, tools, errors, events)
  • Logs view with agent/type multi-filter, duration-based queries
  • Form wizards for agent/task/goal creation with inline validation
  • Agent Shop — 15 pre-built agent templates
  • Toast notifications, help overlay, keyboard shortcuts
  • Clipboard image paste for task attachments

Smart Prompts

  • LiquidJS template engine with conditional sections
  • System/User split for Claude API prompt caching
  • Relevance-based context filtering (top 15 of 340+ entries)
  • Inter-agent messaging (orch msg send/broadcast/inbox)
  • Goal context injection with progress tracking
  • Autonomous goal mode with structured decomposition loop

CLI Commands

  • orch run / orch tui — start orchestration
  • orch task — add, list, show, edit, cancel, approve, reject
  • orch agent — add, list, show, edit, disable, shop
  • orch goal — add, list, show, status, delete
  • orch team — create, list, show, delete
  • orch msg — send, broadcast, inbox
  • orch context — set, get, list, delete (shared key-value store)
  • orch logs — view run events with filtering
  • orch config — view/edit orchestrator settings
  • orch doctor — health check for all adapters
  • orch update — check and install updates

Storage & Performance

  • File-based storage (.orchestry/) — YAML, JSON, JSONL, no database
  • Atomic writes with temp file + rename
  • Parallel file reads with EMFILE batching (groups of 64)
  • JSONL tail reads for OOM protection
  • 3-layer event data truncation pipeline (16KB → 8KB → 4KB → 2KB)
  • TUI batched message queue (80ms flush) with LRU caps

Tests

  • 1493 tests across 83 test files
  • Coverage: orchestrator resilience, adapter event parsing, template rendering, TUI components, wizard validation, state machine transitions, storage atomicity, process management

v0.3.4 Maintenance

Routine maintenance release for ORCH.

Changelog

Full Changelog: https://github.com/oxgeneral/ORCH/compare/v0.3.3...v0.3.4

v0.3.3 Maintenance

Routine maintenance release for ORCH.

Changelog

Full Changelog: https://github.com/oxgeneral/ORCH/compare/v0.3.2...v0.3.3

v0.3.2 Maintenance

Routine maintenance release for ORCH.

Changelog

Full Changelog: https://github.com/oxgeneral/ORCH/compare/v0.3.1...v0.3.2

v0.3.1 Maintenance

Routine maintenance release for ORCH.

Changelog

Full Changelog: https://github.com/oxgeneral/ORCH/compare/v0.3.0...v0.3.1

v0.3.0 New feature
Notable features
  • Task attachments via `orch task add --attach` storing files in `.orchestry/attachments/`
  • Clipboard image paste (Ctrl+V) across macOS/Linux/Windows in the TUI wizard
  • Scrollable GoalDetailPanel with virtual scrolling and j/k navigation
Full changelog

What's New in 0.3.0

ORCH v0.3.0 brings major UX improvements for multi-agent workflows: task attachments, clipboard paste in TUI, goal-driven autonomous mode, and a significant performance overhaul.

✨ New Features

  • Task attachmentsorch task add --attach <file> copies files into .orchestry/attachments/<taskId>/ and displays them in TUI with a 📎 indicator
  • Clipboard image paste (Ctrl+V) — paste images directly from system clipboard in the task creation/edit TUI wizard; cross-platform (macOS/Linux/Windows)
  • Goal-driven autonomous mode — agents in [auto] tasks get a structured loop: decompose → execute → track progress → mark goal achieved; agents see full goal context (title, linked tasks, progress report)
  • Scrollable GoalDetailPanel — virtual scrolling with j/k navigation, section dividers, task summary counts, and progress report display
  • Skills display — agent detail panel now shows configured skills list

⚡ Performance

| Metric | v0.2.0 | v0.3.0 | Improvement |
|--------|--------|--------|-------------|
| Per-test speed | 52ms | 15ms | 3.5× faster |
| Task dispatch latency | 30s | <500ms | 60× faster |
| Build time | 2.7s | 1.35s | 2× faster |
| CLI startup | 75ms | 41ms | 1.8× faster |
| TUI memory | OOM after 27min | Stable | Fixed |

Key optimizations: state.claimed Array→Set, ScopeIndex pre-computation, isBlocked O(d×1) taskMap lookup, lazy chalk/process-manager imports, parallel reconcile with Promise.all, adaptive Vitest thread pool.

🐛 Bug Fixes

  • Tick interval 30s→10s — faster task dispatch
  • GoalDetailPanel useMemo fix — prevents stale closure
  • FormWizard paste mock types — correct union type
  • 22 bugs fixed from architecture audit (4 P1 critical, 10 P2 high, 8 P3 medium)

🏗️ Architecture

  • SectionDivider reused from DetailPanel (no duplicate GoalDivider)
  • TASK_STATUS_COLOR / GOAL_STATUS_COLOR extracted to colors.ts with Record<Status, string> type safety
  • GoalContext in template engine — agents get full goal info in Liquid templates
  • clipboard-service.ts with platform detection and type-safe API

🧪 Tests

987 tests (up from 851 in 0.2.0) — new coverage: clipboard paste, GoalDetailPanel, ScopeIndex, attachments, orchestrator perf benchmarks, lazy chalk init.


Quick Start

npm install -g @oxgeneral/orch --registry=https://npm.pkg.github.com
cd ~/your-project && orch init
orch  # opens TUI dashboard

Full changelog: https://github.com/oxgeneral/ORCH/compare/v0.2.4...v0.3.0

v0.2.4 Maintenance

Routine maintenance release for ORCH.

Changelog

Full Changelog: https://github.com/oxgeneral/ORCH/compare/v0.2.3...v0.2.4

v0.2.3 Maintenance

Routine maintenance release for ORCH.

Changelog

Full Changelog: https://github.com/oxgeneral/ORCH/compare/v0.2.0...v0.2.3

v0.2.0 New feature
Notable features
  • `orch update` command to check and install latest version from npm with optional check‑only mode
  • Background update notifications showing newer versions after a 4‑hour cache
  • Lazy command loading cutting startup time ~40% by dynamically importing commands
Full changelog

Changelog

0.2.0 (2026-03-13)

New Features

  • orch update command — check for updates and install the latest version from npm (orch update --check for check-only mode)
  • Background update notifications — CLI silently checks npm registry (4h cache) and shows a notification when a newer version is available
  • Lazy command loading — commands are dynamically imported on demand, reducing CLI startup time ~40%
  • Light/Full container split — read-only commands (task, agent, status, logs, config, context, msg, goal, team) use a lightweight container without loading adapters, ProcessManager, or LiquidJS
  • --help fast pathorch --help and orch --version skip container initialization entirely

Bug Fixes

  • OOM fix (runtime) — truncate event data before event bus and JSONL writes; replace unbounded readline with backpressured Buffer-based stream reader
  • OOM fix (startup) — replace N×M file reads (277 tasks x 376 runs = 104K reads) with single listAll() pass; add 50MB JSONL file size guard
  • cancelTask/forceStopAgent lock bug — both methods now auto-acquire lock via withTemporaryLock when called standalone (previously always threw LockConflictError from fresh Orchestrator)
  • task cancel for running tasksorch task cancel now uses orchestrator.cancelTask for in_progress tasks (kills agent process, cleans state)
  • State machine violation — remove in_progress → done shortcut, enforce mandatory review step
  • Truncated JSON in TUI logs — add extractSummaryFromTruncated regex fallback for truncated event data
  • [undefined] in TUI — fix fallback to [${type ?? role}]
  • $EDITOR with argscode --wait no longer fails with ENOENT
  • --since in logs — no longer loads entire JSONL into memory
  • NO_COLOR compliance — respect NO_COLOR env var per no-color.org spec
  • Done tasks showing wrong time — use updated_at instead of created_at
  • Race condition in TUI — move setTaCursorCol out of setTaLines updater
  • Process spawn — add proc.unref() after detached spawn to unblock parent exit
  • isProcessAlive — return true on EPERM (process alive, no permission)
  • Retry backoff — fix off-by-one using attempts - 1 for correct backoff start
  • Scope overlap — fix patternsOverlap false negative for sibling paths
  • CJK/emoji titles — fix prepareWorktree empty branch name
  • sanitizeId — reject forbidden characters instead of silently stripping
  • appendJsonl — truncate data to PIPE_BUF (4096) for atomic O_APPEND writes
  • cancelTask abort — call .abort() on AbortController before delete
  • forceTaskToReview — now clears agent.current_task

Performance

  • Progressive history loading — parallel I/O in onLoadHistory with batched setState (80ms flush)
  • readJsonlTail — read last N records from JSONL without loading entire file
  • EMFILE protection — batched Promise.all reads in groups of 64
  • Vitest threads pool — test suite runs ~12% faster

Architecture

  • buildLightContainer / buildFullContainer — split DI container for fast startup
  • readLines generator — Buffer-based with backpressure, replaces readline.createInterface
  • serializeEventData — DRY event serialization with 3-layer truncation
  • resolveFailureStatus — extracted from duplicated retry logic
  • createTokenUsage factory — ensures total = input + output
  • Atomic cache writes — update-check uses temp file + rename

Tests

  • 851 tests (up from 737 in 0.1.0)
  • New coverage: process-manager, streamEvents, lazy routing, task cancel, progressive loading, context, token usage, retry status

0.1.0 (2026-03-12)

Initial release.

v0.1.0 Breaking risk
Notable features
  • Inter‑agent messaging with direct, broadcast, and inbox commands (`orch msg`)
  • Agent Teams creation, lead assignment, and TUI wizard for member selection
  • Goals tab and CRUD via `orch goal` with pause/resume support
Full changelog

v0.1.0 — First Public Release (2026-03-12)

61 commits | 74 files changed | +7,246 / -1,016 lines | 737 tests

Major Features

  • Inter-agent messaging & team coordination — agents can send direct messages, broadcast, and coordinate within teams (orch msg send/broadcast/inbox)
  • Agent Teams — create teams, assign leads, multiselect members via TUI wizard; team section headers and badges in Agents tab
  • Goals as first-class entities — dedicated Goals tab in TUI, goal CRUD via orch goal, pause/resume with autonomous task lifecycle management
  • Autonomous agent mode — goal-directed work generation; agents auto-create subtasks, track progress, and work in a continuous loop until goal is achieved
  • Default Agent Creatororch init now bootstraps an Agent Creator agent out of the box
  • Global config & settings wizard — activity filter presets, interactive config via TUI
  • Log filter bar redesign — split into two logical lines for better UX

Bug Fixes

  • Paused goals still executing tasks — now disables autonomous mode and cancels pending tasks on pause; re-enables on resume
  • Agents not picking up new tasks — added reactive dispatch on task completion (500ms instead of 30s polling wait)
  • Scope overlap dispatch — blocks conflicting tasks instead of just warning
  • Orphaned child processes — kills process group (-pid) instead of single PID
  • TUI flicker — global animation tick, React.memo, useMemo for header stats
  • Inbox expiry bug, logs --since truncation, stale closures, duplicate team headers, layout overlap

Performance

  • Reactive dispatch on task:created and task completion — agents pick up work immediately
  • Parallel I/O in logs, cancel operations, and task reads (Promise.all)
  • readEventsTail for efficient log reading without loading entire JSONL files

Code Quality

  • Agent prompts rewritten — removed 120+ lines of duplicated goal-handling instructions; moved to conditional template section
  • Agent Creator prompt translated to English for global use
  • AUTONOMOUS_LABEL constant used everywhere (no hardcoded strings)
  • 8 simplify passes — deduplicated wizard code, centralized glyphs, extracted helpers, removed dead code
  • isDispatchable() — single source of truth for dispatchable task statuses

Documentation

  • SPEC.md updated: module structure, dispatch sort, event types (11→31), new sections (Goal, Team, Message)
  • USER_STORIES.md audited: 13→142 stories with test coverage, 6 new epics (EP-22..EP-27)
  • README updated: 737 tests badge, GitHub stars badge, Community section

Tests

  • 737 tests (736 green, 1 known flaky lock-concurrency)
  • New test suites: goal-service autonomous mode (21 tests), scope overlap dispatch, default Agent Creator, process signals, readJsonl corrupt lines

Beta — feedback welcome: [email protected]