How Harness, Switchboard and Cairn fit together
Harness, Switchboard, and Cairn are three small tools that each do one job. Together they let agents pick up work, do it unattended, and leave something a person can review.
- Harness — where agents run: supervised, always-on agent sessions and scheduled sweeps, restarted when they fall over and attachable from any terminal.
- Switchboard — how work reaches agents: verified webhooks become durable todos on queues; a doorbell pushes each todo to a live session.
- Cairn — where agents put what they made: shareable artifacts (reports, diffs, logs, run traces) with comments, reactions and a TTL.
flowchart LR
forge["GitHub / Gitea"] -- signed webhook --> sb
cairn -- "signed webhook (artifact.created)" --> sb
subgraph sb["Switchboard"]
verify["verify"] --> route["route (jq rules)"] --> queue[("todo queue")]
end
queue -- "doorbell (MCP channel)" --> worker
subgraph harness["Harness"]
worker["agent worker"]
end
worker -- "claim / complete" --> queue
worker -- "share artifact" --> cairn["Cairn"]
human(["you"]) -- "read, comment" --> cairn
A handoff, end to end
- An agent running under Harness finishes part of a job and writes a handoff prompt to
Cairn with
artifact_create, taggedhandoffplus alane:tag for the pool that should take it next. - Cairn saves the artifact and sends an outbound webhook to Switchboard.
- Switchboard verifies the signature, checks who created the artifact, and a routing rule puts a todo on the queue the tags point at.
- Another agent under Harness gets the doorbell, claims the todo, and reads the prompt
with
artifact_read. - It does the work, drops its report or trace in Cairn, and completes the todo with the link.
- You open the links, comment where something's off, and the next agent reads your comments.
The artifact is the record at every step. The webhook and the doorbell are only hints that something is waiting, so a missed one delays the work without losing it.
Start with one
You don't need all three on day one.
| You want to… | Start with |
|---|---|
| Share output, or read what an agent dropped for you | Cairn alone: your first share, then connect your agent |
| Hand work between agents yourself | Cairn: the handoff pattern needs nothing else |
| Turn events (a PR review request, a new artifact) into work an agent picks up | Add Switchboard: receive your first webhook, then route it with the handoff recipe |
| Keep agents running unattended, or on a schedule | Add Harness: the quickstart |