Docs/Core concepts

Harness adapters

Adapters normalize how each agent CLI launches, receives work, reports capabilities, and exposes health.

Built-in adapters

AdapterInputInsightNotes
mockfilestructuredBuilt-in deterministic test agent
claude-codesend-keysprocess + teamsSystem briefing; discovers on-disk team rosters
codexsend-keysprocessInitial-prompt briefing; real interactive CLI
opencodesend-keysprocessGeneric TUI adapter with readiness marker support
copilotsend-keysprocessHandles first-run trust and approval dialogs
antigravitysend-keysprocessLaunches agy; configurable settle timing

The contract

An adapter describes the harness; it never touches tmux directly. The orchestrator owns every terminal.

Name()Stable registry keyCapabilities()Only features truly implementedDetect()Installation and versionBuildLaunch()Arguments, environment, and work directoryFormatInput()Render one routed messageParseOutput()Extract structured events without guessingDetectReady()Verify the composer can accept inputCheckHealth()Healthy, unresponsive, or unknown
Honest capability reporting

Unrecognized output produces no structured event. clishake falls back to process-level supervision rather than guessing intent or state from prose.

Structured wire protocol

agent stdout
##clishake:{"type":"status","status":"running"} 
##clishake:{"type":"message","to":"reviewer","text":"please inspect"} 
##clishake:{"type":"task","task_id":"task_ab12","status":"completed"} 
##clishake:{"type":"approval","action":"merge","risk":"high"}

Add an adapter

  1. Implement the interfaceCreate internal/adapter/<name>/<name>.go.
  2. Declare real capabilitiesNever advertise an unverified fallback.
  3. Register itAdd the adapter to the CLI registry.
  4. Test the boundaryCover launch shape, input, readiness, parsing, and capabilities.