Build
Framework matrix
Same control plane, many runners. The plane never assumes LangGraph — adapters share a generic worker loop and speak Runner Protocol.
What it is
Python LangGraph + TypeScript LangGraph.js are first-class. CrewAI, LlamaIndex, AutoGen, and plain LangChain ship as thin adapters under python/adapters/.
Why it is here
“Framework-agnostic” only counts if dispatch, cancel, HITL, and connectors work the same way for every runner kind — with honest gaps called out.
Support matrix
| Capability | LangGraph (Py) | LangGraph.js | CrewAI | LlamaIndex | AutoGen | LangChain |
|---|---|---|---|---|---|---|
| Dispatch via plane | Yes | Yes | Yes | Yes | Yes | Yes |
| Cancel (WatchCancels) | Yes | Yes* | Yes | Yes | Yes | Yes |
| HITL interrupt / resume | Yes | Yes* | Limited | Limited | Limited | Limited |
| Opaque checkpoint proxy | Yes | Yes | Yes† | Yes | Yes† | Yes† |
| Direct Postgres saver | Yes | Yes | — | — | — | — |
| True --concurrency N | Yes | Yes | Serialized per graph | Yes | Serialized per graph | Yes |
| Isolated adapter venv | — | — | Yes | Yes | Yes | Shared |
| E2E in CI matrix | Yes | Happy path | Happy path | Happy path | Happy path | Yes |
* TypeScript cancel/HITL verified live; matrix CI scenarios today lean on LangGraph-Python example agents.
† CrewAI / AutoGen / LangChain restore a message transcript on the plane and fold prior turns into the next invoke
(not a full framework-native memory graph). LlamaIndex restores chat_history natively. LangGraph keeps
its own saver (direct Postgres or HTTP proxy). checkpoint_ref time-travel remains LangGraph-only.
How to implement
- LangGraph —
runkite-runner(Py) or TS runner withlanggraph.json. - Adapters — install each adapter’s deps (isolated venv for CrewAI / LI / AutoGen), then
PYTHONPATH=python:python/adaptersandpython -m crewai_adapter(etc.). - Clients keep the same Agent Protocol shape: last human message in, AI message out.
- See Agents for register/run; Checkpoints for durable state (LangGraph + adapters).
In the product
What to expect
- Same plane features — connectors, grants, kill, webhooks apply regardless of framework.
- Honest limits — adapter opaque checkpoints need
RUNKITE_HTTP_URL(or the worker http address); they store message transcripts, not LangGraph channel state. Time-travelcheckpoint_refis LangGraph-only. - Dependency isolation — don’t install CrewAI into the LangGraph venv (protobuf pin fights).
Reference: docs/runners.md · Protocols