Skip to main content

Multi-Provider Support

CAO orchestrates AI coding CLI agents from multiple providers within the same session. A supervisor on one provider can delegate to workers running on entirely different providers, enabling you to leverage each tool's strengths.

Supported Providers

ProviderEnum ValueAuthenticationDocumentation
Kiro CLI (default)kiro_cliAWS credentialsProvider docs
Claude Codeclaude_codeAnthropic API key or subscriptionProvider docs
Codex CLIcodexOpenAI API keyProvider docs
Hermes AgenthermesHermes authProvider docs
Kimi CLIkimi_cliMoonshot API keyProvider docs
GitHub Copilot CLIcopilot_cliGitHub authProvider docs
OpenCode CLIopencode_cliPer-model API keyProvider docs
Cursor CLIcursor_cliCursor subscription / API keyProvider docs
Antigravity CLIantigravity_cliGoogle accountProvider docs

Specifying a Provider

At launch time (CLI flag)

# Launch with a specific provider
cao launch --agents code_supervisor --provider claude_code

# Valid values: kiro_cli | claude_code | codex | antigravity_cli |
# hermes | kimi_cli | copilot_cli | opencode_cli | cursor_cli

In an agent profile (frontmatter)

Pin a profile to a provider so it always runs on that CLI regardless of how the session was launched:

---
name: developer
description: Developer Agent
provider: claude_code
---

You are a developer agent. Write clean, tested code.

Provider inheritance

Workers inherit the supervisor's provider by default. The precedence chain:

  1. Profile provider field (if valid)
  2. Supervisor's provider (inherited)
  3. --provider flag from cao launch (initial session only)
  4. Default: kiro_cli

Cross-Provider Orchestration Example

A Kiro CLI supervisor delegating to a Claude Code developer and a Codex reviewer:

supervisor.md

---
name: cross_provider_supervisor
description: Orchestrates cross-provider work
provider: kiro_cli
role: supervisor
---

You coordinate developer and reviewer agents.

developer.md

---
name: developer
description: Developer Agent
provider: claude_code
role: developer
---

You implement features based on specifications.

reviewer.md

---
name: reviewer
description: Code Reviewer
provider: codex
role: reviewer
---

You review code for quality and correctness.
# Install profiles
cao install cross_provider_supervisor
cao install developer
cao install reviewer

# Launch -- supervisor runs on kiro_cli, workers auto-select their declared provider
cao launch --agents cross_provider_supervisor

When the supervisor calls handoff("developer", "Implement login page"), CAO reads the developer profile, sees provider: claude_code, and spawns the worker using Claude Code -- regardless of the supervisor's own provider.

Provider-Specific Features

Each provider preserves its native capabilities inside CAO:

  • Claude Code -- sub-agents, --permission-mode, native agent routing, MCP config injection
  • Kiro CLI -- custom agents (~/.kiro/agents/), skill resources, legacy and TUI mode
  • Codex -- named profiles (--profile), inline config overrides (-c key=value)
  • Hermes -- profile aliases, structured approval prompts (answer_user_prompt)
  • Copilot CLI -- baked-in .agent.md skill delivery
  • OpenCode -- CAO-managed config root, temporary inbox polling fallback

Status Detection

Every provider implements its own status detection patterns. CAO's StatusMonitor delegates to the provider-specific get_status() method, which analyzes the rolling output buffer for patterns unique to that CLI (prompts, spinners, response markers, error indicators).