Why Agent Protocol on the front?
Clients need a portable runs/threads/streaming surface. Workers need a different contract: leases, heartbeats, fencing, connector sessions.
Decision
Clients speak Agent Protocol (HTTP/SSE) to the plane. Runners speak Runner Protocol (gRPC) to the plane. The plane is the only place those worlds meet, grants, HITL, kill, audit, and opaque checkpoints live there, not in each framework SDK.
Consequences
- Any Agent Protocol client can drive the plane without learning Runkite-only APIs first.
- Framework adapters stay thin: implement Runner Protocol, not a second control plane.
- We do not pretend ThreadState is a LangGraph checkpointer, see opaque checkpoints.
Rejected alternatives
- Expose only a proprietary admin API, kills portability and client ecosystem.
- Make runners speak Agent Protocol, wrong shape for reclaim/fencing/connector minting.
Map: Docs · Protocols · runner-protocol/.