Plugin System Overview
A plugin is a TypeScript module that implements one of the 8 plugin interfaces defined inpackages/core/src/types.ts. Each plugin:
- Exports a
manifestobject describing itself - Exports a
create()function that returns the plugin implementation - Uses
satisfies PluginModule<T>for compile-time type safety
Plugin Structure
Every plugin follows this pattern:The
satisfies PluginModule<T> syntax ensures compile-time checking that your plugin correctly implements all required interface methods.The 8 Plugin Slots
1. Runtime Plugin
Slot:runtimeInterface:
RuntimePurpose: Determines WHERE and HOW agent sessions execute Available Plugins:
- tmux (default)
- process
- docker
- k8s
Local tmux sessionsPros:
- Native terminal access
- Persist across disconnects
- Easy to attach and monitor
- Minimal overhead
- Local machine only
- Requires tmux installed
2. Agent Plugin
Slot:agentInterface:
AgentPurpose: Adapter for specific AI coding tools Available Plugins:
- claude-code (default)
- codex
- aider
- opencode
Anthropic’s Claude CodeFeatures:
- Session resume support
- JSONL-based activity detection
- Auto-generated summaries
- Cost tracking
- Workspace hooks for metadata updates
3. Workspace Plugin
Slot:workspaceInterface:
WorkspacePurpose: Code isolation mechanism Available Plugins:
- worktree (default)
- clone
Git worktreesPros:
- Shares git history (fast)
- Minimal disk usage
- Instant branch switching
- Multiple sessions see each other’s commits
- Requires Git 2.25+
- All worktrees share hooks
- Can’t delete parent repo while worktrees exist
4. Tracker Plugin
Slot:trackerInterface:
TrackerPurpose: Issue/task tracking integration Available Plugins:
- github (default)
- linear
GitHub IssuesFeatures:Usage:
- Fetch issue details
- Generate branch names
- Create prompts from issues
- Check completion status
- Extract labels
5. SCM Plugin
Slot:scmInterface:
SCMPurpose: Source control + PR/CI/review management Available Plugins:
- github (default)
GitHubFeatures:Automatic PR Detection:
The github-scm plugin automatically detects PRs created by agents, even if the agent doesn’t write the PR URL to metadata.
- Auto-detect PRs by branch
- Track PR state (open/merged/closed)
- Monitor CI checks
- Fetch code reviews
- Get review comments
- Check merge readiness
- Merge PRs
6. Notifier Plugin
Slot:notifierInterface:
NotifierPurpose: Push notifications to humans
Primary Human Interface: The Notifier is how the orchestrator communicates with you. The dashboard is for monitoring; notifications are for action.
- desktop (default)
- slack
- webhook
- composio
Native OS notificationsFeatures:
- System notification center
- Works on macOS/Linux/Windows
- No external dependencies
- Immediate delivery
7. Terminal Plugin
Slot:terminalInterface:
TerminalPurpose: Human interaction with running sessions Available Plugins:
- iterm2 (default)
- web
iTerm2 integration (macOS)Features:Usage:
- Open sessions in new tabs
- Native terminal experience
- Keyboard shortcuts
- Split panes
8. Lifecycle Manager
Not a plugin slot — this is core functionality built into the orchestrator. Responsibilities:- Poll all sessions periodically (default: every 30 seconds)
- Detect state transitions (working → pr_open → ci_failed → etc.)
- Emit events on transitions
- Trigger automatic reactions
- Track reaction attempts and escalation
- Notify humans when auto-handling fails
Plugin Configuration
Global Defaults
Set defaults for all projects:Per-Project Overrides
Override defaults for specific projects:Per-Session Overrides
Specify agent at spawn time:Plugin Discovery
Plugins are discovered in this order:- Built-in plugins — Shipped with Agent Orchestrator
- npm packages — Installed via
pnpm install - Local paths — Custom plugins in your project
Using Custom Plugins
Create a plugin in your project:Best Practices
Choosing Plugins
- Runtime: Use
tmuxfor local work,dockerfor isolation,k8sfor scale - Agent: Start with
claude-code, try others for specific needs - Workspace: Use
worktreeunless you need complete isolation - Tracker: Match your existing issue tracker
- Notifier: Use
desktopfor personal work,slackfor team visibility
Plugin Configuration
- Set sensible defaults in global config
- Override per-project for special cases
- Use environment variables for secrets:
${SLACK_TOKEN} - Test plugin changes with a single session first
Notification Routing
Route notifications by priority:Next Steps
Architecture
See how plugins interact in the overall architecture
Workflows
Learn how plugins work together in end-to-end workflows
Plugin Development
Build your own custom plugins
