Checkpoints
The plane stores opaque blobs. Frameworks own the bytes; Runkite owns durability and tenancy keys.
Modes
- Direct Postgres — LangGraph AsyncPostgresSaver against your DSN.
- HTTP proxy — opaque blobs via
/internal/checkpoints(any CP backend). Used by LangGraph when DSN is unset, and by CrewAI / LlamaIndex / AutoGen / LangChain adapters for multi-turn continuity. - Memory — fallback when neither DSN nor HTTP URL is set. Demo only.
Adapter multi-turn
Non-LangGraph runners opt in via checkpoint_framework on the adapter. With
RUNKITE_HTTP_URL (or the worker’s http address) set, the generic worker
GET .../adapter-state before execute and PUT that same id after
success — so the client can send only the new message on the next run (not
.../latest, which is ordered by checkpoint id and can return a LangGraph
blob on a shared thread). LlamaIndex restores native chat_history; other
adapters fold prior turns into the next invoke string / AutoGen model context.
checkpoint_ref time-travel stays LangGraph-only.
Why opaque
The plane must not parse framework checkpoint schemas. That keeps Agent Protocol clients framework-agnostic and avoids silent breakage when LangGraph/CrewAI change serde.
How to choose
- Supported HA — Postgres direct or HTTP proxy against a durable store.
- Demo — memory mode from
docker-compose.dev.yml(lost on restart). - Never put production traffic on memory just because health checks are green.