Skip to main content

Adapters Overview

Adapters are the bridge between Baton's orchestration layer and agent runtimes. Each adapter knows how to invoke a specific type of AI agent and capture its results.

How Adapters Work

When a heartbeat fires, Baton:

  1. Looks up the agent's adapterType and adapterConfig
  2. Calls the adapter's execute() function with the execution context
  3. The adapter spawns or calls the agent runtime
  4. The adapter captures stdout, parses usage/cost data, and returns a structured result

Built-in Adapters

Local Coding Adapters

AdapterType KeyDescription
Claude Localclaude_localRuns Claude Code CLI locally
Codex Localcodex_localRuns OpenAI Codex CLI locally
Cursor LocalcursorRuns Cursor CLI locally
Gemini Localgemini_localRuns the Gemini CLI locally
OpenCode Localopencode_localRuns OpenCode locally
Pi Localpi_localRuns the Pi coding agent locally

Infrastructure Adapters

AdapterType KeyDescription
ProcessprocessExecutes arbitrary shell commands
HTTPhttpSends webhooks to external agents

Adapter Architecture

Each adapter is a package with three modules:

packages/adapters/<name>/
src/
index.ts # Shared metadata (type, label, models)
server/
execute.ts # Core execution logic
parse.ts # Output parsing
test.ts # Environment diagnostics
ui/
parse-stdout.ts # Stdout -> transcript entries for run viewer
build-config.ts # Form values -> adapterConfig JSON
cli/
format-event.ts # Terminal output for `baton run --watch`

Three registries consume these modules:

RegistryWhat it does
ServerExecutes agents, captures results
UIRenders run transcripts, provides config forms
CLIFormats terminal output for live watching

Shared Adapter Utilities

Several local adapters also use shared helper utilities from packages/adapter-utils:

  • Session compaction — rotate or reset resumable sessions when run count, token volume, or age thresholds are exceeded
  • Log redaction — scrub sensitive home-directory paths from logs
  • Billing inference — normalize usage and cost reporting across providers

Prompt Composition

Supported local adapters can receive supplementary project instructions composed by Baton at heartbeat time.

That composed layer can include:

  • project backstory
  • compact context or full conventions
  • critical governance reminders

Choosing an Adapter

  • Need a coding agent? Use claude_local, codex_local, cursor, gemini_local, opencode_local, or pi_local
  • Need to run a script or command? Use process
  • Need to call an external service? Use http
  • Need something custom? Create your own adapter