Skip to main content
Agent Orchestrator’s flexibility comes from its plugin architecture. Every major component — from where sessions run to how notifications are delivered — is swappable via plugins.

Plugin System Overview

A plugin is a TypeScript module that implements one of the 8 plugin interfaces defined in packages/core/src/types.ts. Each plugin:
  • Exports a manifest object 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: runtime
Interface: Runtime
Purpose: Determines WHERE and HOW agent sessions execute
Available Plugins:
Local tmux sessionsPros:
  • Native terminal access
  • Persist across disconnects
  • Easy to attach and monitor
  • Minimal overhead
Cons:
  • Local machine only
  • Requires tmux installed
Configuration:
Interface Methods:

2. Agent Plugin

Slot: agent
Interface: Agent
Purpose: Adapter for specific AI coding tools
Available Plugins:
Anthropic’s Claude CodeFeatures:
  • Session resume support
  • JSONL-based activity detection
  • Auto-generated summaries
  • Cost tracking
  • Workspace hooks for metadata updates
Configuration:
Interface Methods:
Critical for Dashboard: The setupWorkspaceHooks() method configures agents to automatically update session metadata when they run git/gh commands. Without this, PRs created by agents never show up in the dashboard.

3. Workspace Plugin

Slot: workspace
Interface: Workspace
Purpose: Code isolation mechanism
Available Plugins:
Git worktreesPros:
  • Shares git history (fast)
  • Minimal disk usage
  • Instant branch switching
  • Multiple sessions see each other’s commits
Cons:
  • Requires Git 2.25+
  • All worktrees share hooks
  • Can’t delete parent repo while worktrees exist
Configuration:
Interface Methods:

4. Tracker Plugin

Slot: tracker
Interface: Tracker
Purpose: Issue/task tracking integration
Available Plugins:
GitHub IssuesFeatures:
  • Fetch issue details
  • Generate branch names
  • Create prompts from issues
  • Check completion status
  • Extract labels
Configuration:
Usage:
Interface Methods:

5. SCM Plugin

Slot: scm
Interface: SCM
Purpose: Source control + PR/CI/review management
Available Plugins:
GitHubFeatures:
  • 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
Configuration:
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.
Interface Methods:

6. Notifier Plugin

Slot: notifier
Interface: Notifier
Purpose: 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.
Available Plugins:
Native OS notificationsFeatures:
  • System notification center
  • Works on macOS/Linux/Windows
  • No external dependencies
  • Immediate delivery
Configuration:
Interface Methods:

7. Terminal Plugin

Slot: terminal
Interface: Terminal
Purpose: Human interaction with running sessions
Available Plugins:
iTerm2 integration (macOS)Features:
  • Open sessions in new tabs
  • Native terminal experience
  • Keyboard shortcuts
  • Split panes
Configuration:
Usage:
Interface Methods:

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
State Machine Logic:
Configuration:

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:
The agent name is persisted in metadata so the same agent is used throughout the session lifecycle (including restores).

Plugin Discovery

Plugins are discovered in this order:
  1. Built-in plugins — Shipped with Agent Orchestrator
  2. npm packages — Installed via pnpm install
  3. Local paths — Custom plugins in your project

Using Custom Plugins

Create a plugin in your project:
Register in config:

Best Practices

Choosing Plugins

  • Runtime: Use tmux for local work, docker for isolation, k8s for scale
  • Agent: Start with claude-code, try others for specific needs
  • Workspace: Use worktree unless you need complete isolation
  • Tracker: Match your existing issue tracker
  • Notifier: Use desktop for personal work, slack for 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