Agentic orchestrator for parallel coding agents — plans tasks, spawns agents, and autonomously handles CI fixes, merge conflicts, and code reviews.
Go to file
Prateek 42a25a5448 docs: add root cause analysis for CLAUDECODE environment variable bug
Comprehensive RCA documenting the bug where spawn command failed to call
agent.getEnvironment(), causing spawned sessions to inherit CLAUDECODE from
parent orchestrator and fail silently.

Key findings:
- Bug introduced during refactoring (commit ac424c1) on Feb 14, 2026
- Original hardcoded implementation was correct (unset CLAUDECODE &&)
- Refactor migrated getLaunchCommand() but forgot getEnvironment()
- Start command (Feb 15) implemented correctly, showing inconsistency
- Tests mocked getEnvironment() but never verified it was called
- Silent failure mode: sessions created but agents never started

Prevention measures proposed:
1. Integration tests verifying agents actually start
2. Runtime contract enforcement
3. Improved test assertions for method calls
4. Health checks for spawned sessions
5. Documentation of two-method agent contract
6. PR checklist for agent plugin changes

Affected sessions: ao-22 through ao-25
Fixed in: commit a686645

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-20 19:01:36 +05:30
.changeset feat: seamless onboarding with enhanced documentation (#66) 2026-02-16 22:22:13 +05:30
.cursor feat: publish to npm under @composio scope (#32) 2026-02-15 04:28:57 +05:30
.github/workflows fix: dashboard config discovery + CLI service layer refactoring (#70) 2026-02-18 17:08:48 +05:30
.husky feat: implement comprehensive security audit and secret leak prevention (#67) 2026-02-16 10:33:50 +05:30
RCAs docs: add root cause analysis for CLAUDECODE environment variable bug 2026-02-20 19:01:36 +05:30
artifacts feat: publish to npm under @composio scope (#32) 2026-02-15 04:28:57 +05:30
changelog fix: migrate to hash-based project isolation architecture 2026-02-18 00:19:55 +05:30
docs feat(web): redesign dashboard, session detail, and orchestrator terminal (#125) 2026-02-20 18:43:57 +05:30
examples docs: update port references to reflect configurability (#122) 2026-02-19 07:37:00 +05:30
packages feat(web): redesign dashboard, session detail, and orchestrator terminal (#125) 2026-02-20 18:43:57 +05:30
scripts fix: migrate to hash-based project isolation architecture 2026-02-18 00:19:55 +05:30
tests/integration feat: configurable terminal server ports for multi-dashboard support (#113) 2026-02-19 04:00:19 +05:30
.gitignore fix: dashboard config discovery + CLI service layer refactoring (#70) 2026-02-18 17:08:48 +05:30
.gitleaks.toml feat: implement comprehensive security audit and secret leak prevention (#67) 2026-02-16 10:33:50 +05:30
.npmrc feat: publish to npm under @composio scope (#32) 2026-02-15 04:28:57 +05:30
.prettierignore chore: add ESLint, Prettier, CI workflow, and comprehensive CLAUDE.md conventions 2026-02-13 18:01:52 +05:30
.prettierrc chore: add ESLint, Prettier, CI workflow, and comprehensive CLAUDE.md conventions 2026-02-13 18:01:52 +05:30
ARCHITECTURE.md fix: migrate to hash-based project isolation architecture 2026-02-18 00:19:55 +05:30
CLAUDE.md feat(web): redesign dashboard, session detail, and orchestrator terminal (#125) 2026-02-20 18:43:57 +05:30
CLAUDE.orchestrator.md fix: dashboard config discovery + CLI service layer refactoring (#70) 2026-02-18 17:08:48 +05:30
DASHBOARD_FIXES_SUMMARY.md feat: seamless onboarding with enhanced documentation (#66) 2026-02-16 22:22:13 +05:30
LICENSE feat: publish to npm under @composio scope (#32) 2026-02-15 04:28:57 +05:30
README.md docs: update port references to reflect configurability (#122) 2026-02-19 07:37:00 +05:30
SECURITY.md fix: migrate to hash-based project isolation architecture 2026-02-18 00:19:55 +05:30
SETUP.md docs: update port references to reflect configurability (#122) 2026-02-19 07:37:00 +05:30
TROUBLESHOOTING.md fix: migrate to hash-based project isolation architecture 2026-02-18 00:19:55 +05:30
agent-orchestrator.yaml fix: dashboard config discovery + CLI service layer refactoring (#70) 2026-02-18 17:08:48 +05:30
agent-orchestrator.yaml.example feat: configurable terminal server ports for multi-dashboard support (#113) 2026-02-19 04:00:19 +05:30
eslint.config.js feat: seamless onboarding with enhanced documentation (#66) 2026-02-16 22:22:13 +05:30
package.json feat: seamless onboarding with enhanced documentation (#66) 2026-02-16 22:22:13 +05:30
pnpm-lock.yaml fix: three spawn regressions from PR #88 session-manager refactor (#100) 2026-02-18 17:53:33 +05:30
pnpm-workspace.yaml feat: scaffold TypeScript monorepo with all plugin interfaces 2026-02-13 17:02:42 +05:30
test-ao-config.yaml feat: seamless onboarding with enhanced documentation (#66) 2026-02-16 22:22:13 +05:30
test-ao-config2.yaml feat: seamless onboarding with enhanced documentation (#66) 2026-02-16 22:22:13 +05:30
tsconfig.base.json feat: scaffold TypeScript monorepo with all plugin interfaces 2026-02-13 17:02:42 +05:30

README.md

Agent Orchestrator

Orchestrate parallel AI coding agents across any runtime, any repository, any issue tracker.

Quick Start

git clone https://github.com/ComposioHQ/agent-orchestrator.git
cd agent-orchestrator && bash scripts/setup.sh
cd ~/your-project && ao init --auto && ao start

Dashboard opens at http://localhost:3000 (port configurable via port: in config)

Overview

Agent Orchestrator manages multiple AI coding agents working in parallel on your repository. Each agent operates in isolation using separate git worktrees, handles its own pull request lifecycle, and automatically responds to CI failures and review comments.

Key features:

  • Parallel execution - Work on multiple issues simultaneously
  • Human-in-the-loop - Agents escalate to you only when judgment is needed
  • Fully pluggable - Swap any component (runtime, agent, tracker, SCM)
  • Real-time dashboard - Monitor all agents from a unified interface

Features

  • Agent-agnostic: Claude Code, Codex, Aider, or bring your own
  • Runtime-agnostic: tmux, Docker, Kubernetes, or custom
  • Tracker-agnostic: GitHub Issues, Linear, Jira, or custom
  • Auto-reactions: CI failures, review comments, merge conflicts handled automatically
  • Notifications: Desktop, Slack, Composio, or webhook - only when needed
  • Live terminal: Watch agents work in real-time through the browser

Architecture

Eight plugin slots - every abstraction is swappable:

Slot Interface Default Alternatives
Runtime Runtime tmux docker, k8s, process
Agent Agent claude-code codex, aider, opencode
Workspace Workspace worktree clone
Tracker Tracker github linear, jira
SCM SCM github (gitlab, bitbucket)
Notifier Notifier desktop slack, composio, webhook
Terminal Terminal iterm2 web
Lifecycle core

All interfaces are defined in packages/core/src/types.ts.

Installation

Prerequisites

  • Node 20+
  • Git 2.25+
  • tmux (for tmux runtime)
  • gh CLI (for GitHub integration)

Setup

git clone https://github.com/ComposioHQ/agent-orchestrator.git
cd agent-orchestrator
bash scripts/setup.sh

The setup script installs dependencies with pnpm, builds all packages, rebuilds node-pty from source, and links the ao CLI globally.

Initialize Your Project

cd ~/your-project
ao init --auto  # Auto-detects project type, generates config
ao start        # Launches orchestrator and dashboard

Auto-detection recognizes your git repository, remote, project type (languages, frameworks, test runners), and generates custom agent rules based on your stack.

Usage

Spawn Agents

# Spawn agent for a GitHub issue
ao spawn my-project 123

# Spawn for a Linear issue
ao spawn my-project INT-1234

# Spawn without issue (ad-hoc work)
ao spawn my-project

Monitor Progress

# Command-line dashboard
ao status

# Web dashboard (default port 3000, configurable in agent-orchestrator.yaml)
open http://localhost:3000

Manage Sessions

# List all sessions
ao session ls

# Send message to agent
ao send <session-id> "Fix the linting errors"

# Kill session
ao session kill <session-id>

Auto-Reactions

Configure automatic responses to common scenarios:

reactions:
  ci-failed:
    auto: true
    action: send-to-agent
    retries: 3

  changes-requested:
    auto: true
    action: send-to-agent
    escalateAfter: 1h

  approved-and-green:
    auto: true
    action: auto-merge

Configuration

Basic configuration in agent-orchestrator.yaml:

port: 3000  # Dashboard port (each project needs a unique port if running multiple)

defaults:
  runtime: tmux
  agent: claude-code
  workspace: worktree
  notifiers: [desktop]

projects:
  my-app:
    repo: owner/my-app
    path: ~/my-app
    defaultBranch: main
    sessionPrefix: app
    agentRules: |
      Always run tests before pushing.
      Use conventional commits.
      Write clear commit messages.      

See agent-orchestrator.yaml.example for complete reference documentation.

Examples

The examples/ directory contains configuration templates:

  • simple-github.yaml - Minimal GitHub Issues setup
  • linear-team.yaml - Linear integration
  • multi-project.yaml - Multiple repositories
  • auto-merge.yaml - Aggressive automation

Development

pnpm install
pnpm build
pnpm dev  # Start web dev server

Project Structure

packages/
  core/          - Core types and services
  cli/           - ao command-line tool
  web/           - Next.js dashboard
  plugins/
    runtime-*/   - Runtime plugins
    agent-*/     - Agent plugins
    workspace-*/ - Workspace plugins
    tracker-*/   - Tracker plugins
    scm-*/       - SCM plugins
    notifier-*/  - Notifier plugins
    terminal-*/  - Terminal plugins

Design Philosophy

Push, not pull: Spawn agents, step away, get notified only when your judgment is needed.

  • Stateless orchestrator (filesystem over database)
  • Plugin everything (no vendor lock-in)
  • Amplify human judgment, don't bypass it
  • Auto-handle routine work, escalate complex decisions

Troubleshooting

See TROUBLESHOOTING.md for common issues and solutions.

Common issues:

  • Terminal not working → node-pty rebuild (automatic via postinstall hook)
  • Port in use → Change port: in config or kill existing server (lsof -ti:3000 | xargs kill)
  • Config not found → Run ao init from your project directory

Contributing

Contributions welcome. See CLAUDE.md for code conventions and architecture details.

License

MIT

Documentation