Rust redesign of LangGraph — not a direct port. Leverages Rust's ownership, async traits, and type system rather than mimicking JS/TS patterns.
cargo build
cargo test
cargo test -p langgraph-core
cargo run --example basic_agent
cargo clippy -- -D warnings| Crate | Purpose |
|---|---|
langgraph-core |
Graph builder, Pregel engine, channels, types, errors |
langgraph-checkpoint |
Checkpointer trait + memory/sqlite/postgres/redis backends |
langgraph-prebuilt |
ReactAgent, ToolNode, prompt utilities |
langgraph-runtime |
High-level runtime wrapping core + checkpoint |
langgraph-observability |
Metrics, tracing, dashboard |
- State =
GraphStatetrait bound: anyClone + Serialize + Deserialize + Send + Sync. No reflection needed. - Node =
NodeFunction<S>trait: blanket-impl forasync fn(S, ExecutionContext) -> GraphResult<NodeOutput<S>>. Node returnsStateUpdate(aJsonMap) merged via channels. - Pregel / BSP execution: nodes run in parallel supersteps; state is immutable during a step; updates applied atomically after barrier.
- Channels type-dispatch state merging per key:
LastValue,Accumulator,BinaryOp,Ephemeral. Configured viaStateGraph::set_channel_type. Command<S>enables routing:Goto,Send(fan-out to specific nodes with state),Interrupt.- Checkpointer is generic over
S— thread-scoped, supportsget_latest,list,put,delete.
- Applies
my-rust-standardsskill (see.claude/skills/my-rust-standards/SKILL.md) - No
unwrap/expectin non-test code - Errors via
thiserror—LangGraphError/GraphResult<T> - No multi-paragraph doc comments; terse
///only where non-obvious - Test names:
test_<subject>_<condition>— max 3 words aftertest_
See docs/missing-features.md for planned work.