Two protocols

Clients never speak Runner Protocol. Runners never expose Agent Protocol.

Agent Protocol (front door)

Threads, runs, streaming — the public, framework-agnostic client API. SDKs and HTTP clients live here. This is what product UIs and automations call.

Runner Protocol (back door)

Runkite’s internal contract: pull job, stream events, heartbeat, reclaim/fencing. Workers authenticate with runner tokens and never publish a public Agent surface.

Why not one protocol

Collapsing them either leaks reclaim/fencing internals to every client, or starves workers of the semantics they need to fail closed under partition. Keep the seam.

Chapter: two protocols · getrunkite/runner-protocol · runner-protocol/PROTOCOL.md · docs/api.md