Same API surface

# Before (LangGraph)
from langgraph.graph import StateGraph, START, END

# After (Agentmatic) — one line changes
from agentmatic import StateGraph, START, END

add_node, add_edge, add_conditional_edges, compile, invoke, stream, astream — every method is identical. TypedDict state, Annotated reducers, MemorySaver, SqliteSaver, PostgresSaver — same names, same semantics.

Performance

WorkloadLangGraphAgentmaticΔ
Graph traversalbaseline10–15× faster10–15×
Channel throughputbaseline70–80× faster70–80×
Memorybaseline50–80% less50–80%
Cold startbaseline78% faster4.5×
End-to-end (multi-agent, 30 LLM calls)baseline8–12× faster p958–12×

Full methodology: /benchmarks.

What you get that LangGraph platform-tier ships

FeatureLangGraph OSSLangGraph PlatformAgentmatic
StateGraph runtime
Memory checkpointer
SQLite checkpointer
Postgres checkpointer
Redis / S3 checkpointerpartial
Retry with backoff
Dead-letter queue
Circuit breakers
Distributed execution
Multi-language SDKsPython, JSPython, JSPython, TS, Rust, Go, Java
Visual debugger✗ (separate)
LicenseMITproprietaryMIT

Migration

See /migrate for the step-by-step. The TL;DR is: change one import, optionally adopt resilience primitives, ship.