What are Plugins?
Agent Orchestrator uses a plugin architecture where every abstraction is swappable. This means you can choose different implementations for how agents run (tmux vs Docker), which AI tool to use (Claude Code vs Codex), how to manage code isolation (git worktrees vs clones), and more. All plugins implement well-defined TypeScript interfaces from@composio/ao-core, ensuring consistency and interoperability across the system.
The 8 Plugin Slots
Agent Orchestrator has 8 plugin slots, each representing a different aspect of the orchestration system:Runtime
WHERE and HOW agent sessions executeControls the execution environment for agents. Determines whether agents run in tmux sessions, Docker containers, Kubernetes pods, or simple child processes.
- Interface:
Runtime - Default:
tmux - Alternatives:
process,docker,k8s
Agent
WHICH AI coding tool to useAdapter for a specific AI coding assistant. Knows how to launch the tool, detect its activity state, and extract session information.
- Interface:
Agent - Default:
claude-code - Alternatives:
codex,aider,opencode
Workspace
HOW to isolate code for each sessionManages code isolation so each agent session gets its own copy of the repository to work in without conflicts.
- Interface:
Workspace - Default:
worktree - Alternatives:
clone
Tracker
WHERE to fetch issues and tasksIntegration with issue tracking systems. Fetches issue details, generates prompts, and creates branches.
- Interface:
Tracker - Default:
github - Alternatives:
linear
SCM
HOW to manage PRs, CI, and reviewsSource control management platform integration. Handles the full PR lifecycle including CI checks and code reviews.
- Interface:
SCM - Default:
github - Alternatives: (gitlab, bitbucket - community contributions welcome)
Notifier
HOW to reach humansPush notifications to bring humans back when their judgment is needed. This is the primary human interface.
- Interface:
Notifier - Default:
desktop - Alternatives:
slack,composio,webhook
Terminal
HOW humans view and interact with sessionsOpens terminal sessions for human interaction. Launches IDE tabs, browser windows, or terminal sessions.
- Interface:
Terminal - Default:
iterm2 - Alternatives:
web
Plugin Architecture
Core Interfaces
All plugin interfaces are defined inpackages/core/src/types.ts. Each plugin slot has a corresponding TypeScript interface:
The full interface definitions include
Tracker, SCM, Notifier, and Terminal. See packages/core/src/types.ts for complete details.Plugin Module Pattern
Every plugin exports aPluginModule with two required properties:
- manifest - Plugin metadata (name, slot, description, version)
- create - Factory function that returns the plugin implementation
satisfies operator for compile-time type checking:
How Plugins are Loaded
Plugins are loaded during system initialization:- Built-in plugins - Core plugins shipped with Agent Orchestrator
- npm packages - Third-party plugins installed via npm (prefix:
@ao-plugin/) - Local paths - Custom plugins from local directories
agent-orchestrator.yaml:
Available Plugins by Slot
Runtime Plugins
tmux (default)
tmux (default)
Runs agents in tmux sessions. Provides session isolation, persistence, and easy human attachment.Features:
- Detached execution
- Session persistence across network disconnects
- Easy attachment:
tmux attach -t <session-id> - Supports long commands via buffer pasting
@composio/ao-plugin-runtime-tmuxprocess
process
Runs agents as child processes. Simpler than tmux but less robust.Features:
- Direct process control
- Lower overhead
- No external dependencies
@composio/ao-plugin-runtime-processAgent Plugins
claude-code (default)
claude-code (default)
Adapter for Anthropic’s Claude Code CLI.Features:
- Activity detection via JSONL session files
- Cost tracking from usage data
- Session resumption support
- Auto-summary extraction
- PostToolUse hooks for metadata updates
@composio/ao-plugin-agent-claude-codecodex
codex
Adapter for Composio’s Codex agent.Features:
- Native orchestrator integration
- Rich session metadata
- Cost tracking
@composio/ao-plugin-agent-codexaider
aider
Adapter for Paul Gauthier’s Aider.Features:
- Multi-model support
- Git-aware code editing
- Cost tracking
@composio/ao-plugin-agent-aideropencode
opencode
Adapter for OpenCode AI coding assistant.Location:
@composio/ao-plugin-agent-opencodeWorkspace Plugins
worktree (default)
worktree (default)
Uses git worktrees for code isolation. Each session gets its own working directory sharing the same .git folder.Features:
- Fast workspace creation
- Shared git history (space efficient)
- Automatic symlink support
- postCreate hooks
@composio/ao-plugin-workspace-worktreeclone
clone
Creates full git clones for isolation. Slower but more independent.Features:
- Complete repository independence
- No worktree conflicts
@composio/ao-plugin-workspace-cloneTracker Plugins
github (default)
github (default)
GitHub Issues integration.Features:
- Fetch issue details
- Generate agent prompts from issues
- Branch naming from issue numbers
- List and filter issues
- Update issue state
- Create new issues
@composio/ao-plugin-tracker-githublinear
linear
Linear issue tracking integration.Features:
- Linear GraphQL API integration
- Issue states (Todo, In Progress, Done)
- Team-based issue organization
- Priority and label support
@composio/ao-plugin-tracker-linearSCM Plugins
github (default)
github (default)
GitHub PR lifecycle management.Features:
- PR detection and state tracking
- CI check monitoring
- Review collection and analysis
- Merge readiness assessment
- Automated comment detection (bots)
- PR merge/close operations
@composio/ao-plugin-scm-githubNotifier Plugins
desktop (default)
desktop (default)
OS-native desktop notifications.Features:
- macOS (via osascript)
- Linux (via notify-send)
- Priority-based sound alerts
- Urgent event highlighting
@composio/ao-plugin-notifier-desktopslack
slack
Slack channel notifications.Features:
- Channel-based routing
- Rich message formatting
- Action buttons
- Thread support
@composio/ao-plugin-notifier-slackcomposio
composio
Composio platform integration.Features:
- Multi-channel routing
- Action tracking
- Unified notification history
@composio/ao-plugin-notifier-composiowebhook
webhook
Generic webhook notifications.Features:
- POST events to custom endpoints
- Flexible payload formatting
- Retry logic
@composio/ao-plugin-notifier-webhookTerminal Plugins
iterm2 (default)
iterm2 (default)
iTerm2 integration (macOS).Features:
- Opens tmux sessions in new tabs
- AppleScript automation
- Multi-session tab management
@composio/ao-plugin-terminal-iterm2web
web
Web-based terminal viewer.Features:
- Browser-based session viewing
- WebSocket live updates
- Cross-platform
@composio/ao-plugin-terminal-webPlugin Selection Priority
Plugins are selected in this order:- Session-level override (e.g.,
ao spawn --agent codex) - Project-level override (in
agent-orchestrator.yaml) - Global default (in
defaultssection) - Hardcoded fallback (if not configured)
Notifiers are special - they can be plural. You can configure multiple notifiers that all receive events based on priority routing.
Plugin Discovery
ThePluginRegistry service manages plugin loading and lookup:
- npm packages:
@ao-plugin/<slot>-<name> - Local paths: specified in config
Plugin Configuration
Some plugins accept configuration via the config file:Next Steps
Create a Plugin
Learn how to build your own plugin
Core Types
View complete interface definitions
