Skip to main content
This page provides practical configuration examples for common use cases. Copy and customize these examples to get started quickly.

Quick Start

Copy an example and customize:
cp examples/simple-github.yaml agent-orchestrator.yaml
nano agent-orchestrator.yaml  # edit as needed
ao spawn my-app ISSUE-123

Simple GitHub Setup

Perfect for getting started with a single GitHub repository.
Use this if:
  • You’re working on a single GitHub repository
  • You want to use GitHub Issues for task tracking
  • You want the simplest possible setup
# Minimal setup for a single GitHub repo with GitHub Issues
# Perfect for getting started quickly

dataDir: ~/.agent-orchestrator
worktreeDir: ~/.worktrees

projects:
  my-app:
    repo: owner/my-app
    path: ~/my-app
    defaultBranch: main
This minimal configuration uses all defaults: tmux runtime, claude-code agent, worktree workspace, and desktop notifications.

Linear Integration

Integrate with Linear for issue tracking and team management.
Use this if:
  • Your team uses Linear for project management
  • You want agents to update Linear ticket status
  • You need custom agent rules per project
# Linear integration with custom team
# Requires LINEAR_API_KEY environment variable

dataDir: ~/.agent-orchestrator
worktreeDir: ~/.worktrees

projects:
  my-app:
    repo: owner/my-app
    path: ~/my-app
    defaultBranch: main

    # Linear tracker integration
    tracker:
      plugin: linear
      teamId: "2a6e9b1b-19cd-4e30-b5bd-7b34dc491c7e"

    # Custom rules for agents
    agentRules: |
      Always link Linear tickets in commit messages.
      Run tests before pushing.
      Use conventional commits (feat:, fix:, chore:).
1

Get your Linear API key

Visit Linear API Settings 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 your Linear workspace URL or via the API.

Multi-Project Setup

Manage multiple repositories with different trackers and notification routing.
Use this if:
  • You’re managing multiple repositories
  • Different projects use different trackers (GitHub Issues vs Linear)
  • You want Slack notifications in addition to desktop
  • You need different rules per project
# Managing multiple projects with different trackers
# Shows how to configure multiple repos with different settings

dataDir: ~/.agent-orchestrator
worktreeDir: ~/.worktrees

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

projects:
  frontend:
    name: Frontend
    repo: org/frontend
    path: ~/frontend
    defaultBranch: main
    sessionPrefix: fe

    tracker:
      plugin: github

    agentRules: |
      Use TypeScript strict mode.
      Follow React best practices.
      Always run `pnpm test` before pushing.

  backend:
    name: Backend API
    repo: org/backend
    path: ~/backend
    defaultBranch: main
    sessionPrefix: api

    tracker:
      plugin: linear
      teamId: "your-team-id"

    agentRules: |
      All endpoints require auth middleware.
      Add OpenAPI docs for new routes.
      Run `pnpm test` and `pnpm lint` before pushing.

# Slack notifications (requires SLACK_WEBHOOK_URL)
notifiers:
  slack:
    plugin: slack
    webhook: ${SLACK_WEBHOOK_URL}
    channel: "#agent-updates"

# Route notifications by priority
notificationRouting:
  urgent: [desktop, slack]
  action: [desktop, slack]
  warning: [slack]
  info: [slack]
Set SLACK_WEBHOOK_URL environment variable with your Slack incoming webhook URL.

Auto-Merge Configuration

Maximum automation with automatic PR merging when approved and CI passes.
Use this if:
  • You trust your agents and CI pipeline
  • You want maximum automation
  • You want agents to handle routine failures autonomously
  • You want escalation only when agents get stuck
# Aggressive automation with auto-merge
# Automatically merges approved PRs with passing CI

dataDir: ~/.agent-orchestrator
worktreeDir: ~/.worktrees

projects:
  my-app:
    repo: owner/my-app
    path: ~/my-app
    defaultBranch: main

    # Enable auto-merge for this project
    reactions:
      approved-and-green:
        auto: true # Automatically merge when PR is approved and CI passes
        action: auto-merge

# Global reactions
reactions:
  # Auto-retry CI failures up to 3 times
  ci-failed:
    auto: true
    action: send-to-agent
    retries: 3

  # Auto-address review comments
  changes-requested:
    auto: true
    action: send-to-agent
    escalateAfter: 1h # Notify human if not resolved in 1 hour

  # Notify when agent is stuck
  agent-stuck:
    threshold: 10m
    action: notify
    priority: urgent
Only enable auto-merge if:
  • ✅ You have comprehensive CI/CD tests
  • ✅ You require code review approval
  • ✅ You trust your agents to write correct code
  • ✅ You want maximum automation
Start with auto: false and enable after building confidence.

Codex Integration

Use GPT-4/Codex instead of Claude Code as your AI coding assistant.
Use this if:
  • You prefer GPT-4/Codex over Claude
  • You need agent-specific configuration
  • You’re evaluating different AI coding assistants
# Using Codex instead of Claude Code
# Demonstrates using a different AI agent

dataDir: ~/.agent-orchestrator
worktreeDir: ~/.worktrees

defaults:
  agent: codex # Use Codex instead of Claude Code
  runtime: tmux
  workspace: worktree

projects:
  my-app:
    repo: owner/my-app
    path: ~/my-app
    defaultBranch: main

    # Codex-specific configuration
    agentConfig:
      model: gpt-4
      permissions: default

    agentRules: |
      Write clean, well-documented code.
      Follow project conventions.
      Run tests before pushing.
You can switch between different AI agents (claude-code, codex, aider, opencode) by changing the agent field.

Real-World Use Cases

Monorepo with Multiple Workspaces

projects:
  web:
    repo: company/monorepo
    path: ~/monorepo
    defaultBranch: main
    sessionPrefix: web
    postCreate:
      - "pnpm install"
    symlinks: [.env, node_modules]
    agentRules: |
      Work only in packages/web directory.
      Run pnpm build before tests.

  api:
    repo: company/monorepo
    path: ~/monorepo
    defaultBranch: main
    sessionPrefix: api
    postCreate:
      - "pnpm install"
    agentRules: |
      Work only in packages/api directory.
      Update OpenAPI spec for new endpoints.

Team with Different Notification Preferences

notifiers:
  slack-urgent:
    plugin: slack
    webhook: ${SLACK_WEBHOOK_URL}
    channel: "#urgent-alerts"

  slack-info:
    plugin: slack
    webhook: ${SLACK_WEBHOOK_URL}
    channel: "#agent-logs"

notificationRouting:
  urgent: [desktop, slack-urgent]
  action: [desktop, slack-urgent]
  warning: [slack-info]
  info: [slack-info]

Custom Agent Rules per Language

projects:
  frontend:
    agentRules: |
      Use TypeScript strict mode.
      Prefer functional components and hooks.
      Add Storybook stories for new components.
      Run Playwright tests before pushing.

  backend:
    agentRules: |
      Write docstrings for all public functions.
      Add type hints (Python 3.10+).
      Use pytest for tests, aim for 80% coverage.
      Format with black, lint with ruff.

Configuration Tips

1

Start simple

Use simple-github.yaml as a starting point.
2

Add complexity incrementally

Enable features as you need them.
3

Test with one project first

Get comfortable before adding multiple projects.
4

Review defaults

Most sensible defaults are already configured.
5

Use environment variables

Store API keys in env vars, not config files.

Environment Variables

Commonly used environment variables:
# Linear integration
export LINEAR_API_KEY="lin_api_..."

# Slack notifications
export SLACK_WEBHOOK_URL="https://hooks.slack.com/services/..."

# GitHub (usually set by gh CLI)
# export GITHUB_TOKEN="ghp_..."
Add these to your shell profile (~/.zshrc or ~/.bashrc) to persist them.

Next Steps

After copying an example:
  1. Edit the config - Update repo paths, team IDs, etc.
  2. Validate - Run ao start to check for config errors
  3. Spawn an agent - Try ao spawn project-id ISSUE-123
  4. Monitor - Use ao status or open the dashboard
See the Setup Guide for detailed configuration reference and troubleshooting.

Build docs developers (and LLMs) love