Harness adapters
Adapters normalize how each agent CLI launches, receives work, reports capabilities, and exposes health.
Built-in adapters
AdapterInputInsightNotes
mockfilestructuredBuilt-in deterministic test agentclaude-codesend-keysprocess + teamsSystem briefing; discovers on-disk team rosterscodexsend-keysprocessInitial-prompt briefing; real interactive CLIopencodesend-keysprocessGeneric TUI adapter with readiness marker supportcopilotsend-keysprocessHandles first-run trust and approval dialogsantigravitysend-keysprocessLaunches agy; configurable settle timingThe 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
- Implement the interfaceCreate
internal/adapter/<name>/<name>.go. - Declare real capabilitiesNever advertise an unverified fallback.
- Register itAdd the adapter to the CLI registry.
- Test the boundaryCover launch shape, input, readiness, parsing, and capabilities.