Skip to main content

Installation Guide

This guide covers the complete installation process for Agent Orchestrator, from prerequisites to verification.

Prerequisites

Required

Required for: Runtime environment for the orchestrator and CLIVerify your installation:
node --version  # Should be v20.0.0 or higher
Install or upgrade:
  • Download from nodejs.org
  • Or use nvm:
    nvm install 20
    nvm use 20
    nvm alias default 20
    
Required for: Repository management and git worktreesVerify your installation:
git --version  # Should be 2.25.0 or higher
Why 2.25+? This version introduced improved worktree support that Agent Orchestrator relies on.Install or upgrade:
  • Download from git-scm.com
  • macOS: brew install git
  • Ubuntu/Debian: sudo apt install git
Required for: Terminal multiplexing and session managementVerify your installation:
tmux -V  # Should print version
Install:
brew install tmux
If you plan to use a different runtime (Docker, Kubernetes, process), tmux is not required.
Required for: GitHub integration, PR creation, issue managementVerify your installation:
gh --version
Install:
brew install gh
Authenticate:
gh auth login
Select:
  • GitHub.com (not Enterprise)
  • HTTPS protocol (recommended)
  • Authenticate via browser
  • Include repo scope (full repository access)
Verify authentication:
gh auth status

Optional

Required if: Using Linear for issue tracking
  1. Get your API key from linear.app/settings/api
  2. Set environment variable:
    echo 'export LINEAR_API_KEY="lin_api_..."' >> ~/.zshrc
    source ~/.zshrc
    
  3. Verify:
    echo $LINEAR_API_KEY
    
Required if: Using Slack for notifications
  1. Create an incoming webhook: api.slack.com/messaging/webhooks
  2. Set environment variable:
    echo 'export SLACK_WEBHOOK_URL="https://hooks.slack.com/services/..."' >> ~/.zshrc
    source ~/.zshrc
    
  3. Test the webhook:
    curl -X POST -H 'Content-type: application/json' \
      --data '{"text":"Agent Orchestrator test"}' \
      $SLACK_WEBHOOK_URL
    

Build from Source

Agent Orchestrator is not yet published to npm. Install by building from source. A published npm package is coming soon.
1

Clone the repository

git clone https://github.com/ComposioHQ/agent-orchestrator.git
cd agent-orchestrator
2

Run the setup script

The automated setup script handles all installation steps:
bash scripts/setup.sh
What the setup script does:
  1. Validates prerequisites:
    • Checks Node.js >= 20
    • Checks Git >= 2.25
    • Detects tmux installation
    • Detects and validates GitHub CLI authentication
  2. Offers interactive fixes (if running in a terminal):
    • Install tmux via Homebrew (macOS)
    • Authenticate GitHub CLI via gh auth login
  3. Installs pnpm:
    • Via corepack (preferred)
    • Falls back to npm install -g pnpm if corepack fails
  4. Installs dependencies:
    pnpm install
    
  5. Builds all packages:
    pnpm build
    
  6. Links CLI globally:
    cd packages/cli && npm link
    
The script will exit with an error if required prerequisites (Node.js 20+, Git 2.25+) are not met. Install these first, then re-run the script.
3

Verify the installation

Check that the ao command is available:
ao --version
If the command is not found, the npm global bin directory may not be in your PATH. Add it to your shell profile:
export PATH="$(npm config get prefix)/bin:$PATH"
Then restart your terminal or run:
source ~/.zshrc  # or ~/.bashrc

Manual Installation (Alternative)

If you prefer to install manually without the setup script:
1

Install pnpm

npm install -g pnpm
2

Install dependencies

pnpm install
3

Build all packages

pnpm build
4

Link CLI globally

npm link -g packages/cli
5

Verify installation

ao --version

Configuration Setup

After installation, you need to create a configuration file. There are three methods:

Method 1: Quick Setup with ao init --auto

Auto-generate configuration with smart defaults:
cd ~/your-project
ao init --auto
This command:
  • Detects your git repository and remote
  • Identifies the default branch (main/master)
  • Detects project type (language, frameworks)
  • Generates agent rules based on detected project type
  • Creates agent-orchestrator.yaml with sensible defaults
Example output:
dataDir: ~/.agent-orchestrator
worktreeDir: ~/.worktrees
port: 3000
defaults:
  runtime: tmux
  agent: claude-code
  workspace: worktree
  notifiers: [desktop]
projects:
  my-app:
    repo: owner/my-app
    path: ~/my-app
    defaultBranch: main
    agentRules: |
      Always run tests before pushing.
      Use conventional commits (feat:, fix:, chore:).

Method 2: Interactive Wizard

Step through a guided setup:
cd ~/your-project
ao init
The wizard will prompt you for:
  1. Data directory (default: ~/.agent-orchestrator)
  2. Worktree directory (default: ~/.worktrees)
  3. Dashboard port (default: 3000)
  4. Runtime plugin (default: tmux)
  5. Agent plugin (default: claude-code)
  6. Workspace plugin (default: worktree)
  7. Notifiers (default: desktop)
  8. Project ID (short name for your project)
  9. GitHub repo (format: owner/repo)
  10. Local path (path to your repository)
  11. Default branch (usually main or master)
  12. Issue tracker (github, linear, or none)
The wizard auto-detects as much as possible from your current directory and environment variables.

Method 3: Manual Configuration

Copy and edit the example config:
cp agent-orchestrator.yaml.example agent-orchestrator.yaml
nano agent-orchestrator.yaml
Or start from a template in the examples/ directory:
cp examples/simple-github.yaml agent-orchestrator.yaml
nano agent-orchestrator.yaml

Configuration File Breakdown

Here’s what a minimal configuration looks like:
# Where to store session metadata
dataDir: ~/.agent-orchestrator

# Where to create workspaces (git worktrees/clones)
worktreeDir: ~/.worktrees

# Web dashboard port
port: 3000

# Default plugins (these are the defaults — can be omitted)
defaults:
  runtime: tmux
  agent: claude-code
  workspace: worktree
  notifiers: [desktop]

# Projects (at minimum: repo and path)
projects:
  my-app:
    repo: owner/my-app
    path: ~/my-app
    defaultBranch: main
    sessionPrefix: app  # Optional: prefix for session IDs
See the complete configuration reference in agent-orchestrator.yaml.example with all available options:
  • Reactions: Auto-handle CI failures, review comments, auto-merge
  • Notification routing: Route by priority (urgent, action, warning, info)
  • Agent rules: Inline or file-based rules included in agent prompts
  • Per-project overrides: Override default plugins per project
  • Tracker configuration: Linear team IDs, custom trackers
  • Notifier configuration: Slack webhooks, custom webhooks
  • Symlinks and post-create commands: Copy files or run setup commands in workspaces
Example:
reactions:
  ci-failed:
    auto: true              # Enable auto-handling
    action: send-to-agent   # Send CI logs to agent
    retries: 2              # Retry up to 2 times
    escalateAfter: 2        # Notify after 2 failures

  changes-requested:
    auto: true
    action: send-to-agent
    escalateAfter: 30m      # Escalate after 30 minutes

  approved-and-green:
    auto: false             # Disabled by default
    action: auto-merge      # Merge when approved + CI passes
    priority: action

Verification Steps

After installation and configuration, verify everything is working:
1

Verify CLI is installed

ao --version
Should print the version number.
2

Verify configuration exists

ls agent-orchestrator.yaml
Should find the config file.
3

Verify GitHub authentication

gh auth status
Should show “Logged in to github.com”.
4

Verify tmux is available

tmux -V
Should print tmux version.
5

Start the orchestrator

ao start
Dashboard should open at http://localhost:3000 (or your configured port).

Integration Setup

GitHub Issues Integration

GitHub integration is enabled by default if you have the GitHub CLI authenticated. Authentication:
gh auth login
Required scopes:
  • repo — Full repository access (read/write code, issues, PRs)
  • read:org — Read organization membership (optional, for team mentions)
Verification:
gh auth status
gh repo view owner/repo  # Test API access

Linear Integration

1

Get API key

Visit linear.app/settings/api and create a new API key.
2

Set environment variable

echo 'export LINEAR_API_KEY="lin_api_..."' >> ~/.zshrc
source ~/.zshrc
3

Find your team ID

Your team ID is visible in the Linear workspace URL or via the API. You’ll need this for the config.
4

Configure in agent-orchestrator.yaml

projects:
  my-app:
    tracker:
      plugin: linear
      teamId: "your-team-id"
5

Verify

echo $LINEAR_API_KEY  # Should print your key

Slack Integration

1

Create incoming webhook

Follow the Slack guide: api.slack.com/messaging/webhooks
2

Set environment variable

echo 'export SLACK_WEBHOOK_URL="https://hooks.slack.com/services/..."' >> ~/.zshrc
source ~/.zshrc
3

Configure in agent-orchestrator.yaml

defaults:
  notifiers: [desktop, slack]

notifiers:
  slack:
    plugin: slack
    webhook: ${SLACK_WEBHOOK_URL}
    channel: "#agent-updates"
4

Test the webhook

curl -X POST -H 'Content-type: application/json' \
  --data '{"text":"Agent Orchestrator test"}' \
  $SLACK_WEBHOOK_URL

Troubleshooting

Problem: The CLI is linked but not in your PATH.Solution:
# Add npm global bin to PATH
export PATH="$(npm config get prefix)/bin:$PATH"

# Add to shell profile (make it permanent)
echo 'export PATH="$(npm config get prefix)/bin:$PATH"' >> ~/.zshrc

# Reload shell
source ~/.zshrc
Problem: Node.js version is below 20.Solution:
# Check version
node --version

# Upgrade with nvm (recommended)
nvm install 20
nvm use 20
nvm alias default 20

# Or download from: https://nodejs.org/
Problem: The orchestrator can’t find your config file.Solution:
# Run init wizard
ao init

# Or copy an example
cp examples/simple-github.yaml agent-orchestrator.yaml
Problem: tmux is not installed (required for default runtime).Solution:
# macOS
brew install tmux

# Ubuntu/Debian
sudo apt install tmux

# Fedora/RHEL
sudo dnf install tmux
Problem: GitHub CLI is not authenticated.Solution:
gh auth login

# Select:
# - GitHub.com (not Enterprise)
# - HTTPS (recommended)
# - Authenticate via browser
# - Include repo scope
Verify:
gh auth status
Problem: Another service is using the dashboard port.Solution:Option 1: Change the port in agent-orchestrator.yaml:
port: 3001
Option 2: Kill the process using port 3000:
lsof -ti:3000 | xargs kill
When running multiple orchestrator instances, each needs a different port value.
Problem: Syntax error in agent-orchestrator.yaml.Common issues:
  • Incorrect indentation (use 2 spaces, not tabs)
  • Missing quotes around strings with special characters
  • Typo in field names
Solution: Validate YAML syntax at yamllint.com
Problem: Orchestrator can’t create worktrees or clones.Solution:
# Check worktreeDir permissions
ls -la ~/.worktrees

# Create directory if missing
mkdir -p ~/.worktrees

# Check disk space
df -h
Problem: Agent doesn’t have permissions for git operations.Solution:
# Check SSH keys are added
ssh -T [email protected]

# Add SSH key if needed
ssh-add ~/.ssh/id_ed25519

# Or use HTTPS and authenticate gh CLI
gh auth login

Next Steps

Now that Agent Orchestrator is installed and configured:

Quickstart

Spawn your first agent in 5 minutes

Configuration

Customize reactions, plugins, and routing

CLI Reference

Complete command reference

Troubleshooting

Common issues and solutions

Build docs developers (and LLMs) love