oxidizedgraph
A humble attempt at LangGraph in Rust - High-performance agent orchestration framework.
Why oxidizedgraph?
| Feature | LangGraph (Python) | oxidizedgraph |
|---|---|---|
| Parallelism | Limited by GIL | True multi-core |
| Memory per session | ~50MB | ~5MB |
| Startup time | ~200ms | ~10ms |
| Type safety | Runtime | Compile-time |
| Binary size | Needs Python | ~15MB standalone |
Quick Start
[]
= "0.1"
= { = "1", = ["full"] }
= "0.1"
use *;
// Define a simple node
;
async
Core Concepts
State
State flows through the graph between nodes. The built-in AgentState provides common fields:
Nodes
Nodes implement NodeExecutor and transform state:
Edges
Edges connect nodes. They can be direct or conditional:
new
// Direct edge
.add_edge
// Edge to END
.add_edge_to_end
// Conditional edge
.add_conditional_edge
Built-in Nodes
EchoNode- Stores a message in contextDelayNode- Adds a configurable delayStaticTransitionNode- Always routes to a fixed targetContextRouterNode- Routes based on context valuesConditionalNode- Routes based on a predicateFunctionNode- Create nodes from closuresLLMNode- Call LLM providersToolNode- Execute pending tool calls
Runner
Execute your graph with configurable options:
let runner = new;
let result = runner.invoke.await?;
Examples
Run the included examples:
# Simple linear workflow
# ReAct agent pattern
Feature Roadmap
- Core graph primitives
- State management (AgentState)
- NodeExecutor trait
- Conditional edges
- GraphRunner execution
- Built-in nodes (LLM, Tool, Conditional, Function)
- Checkpointing (SQLite, Postgres)
- LLM integrations (Anthropic, OpenAI)
- Streaming execution
- WASM compilation
- Python bindings (PyO3)
License
Apache-2.0 License - see LICENSE file.
Contributing
Contributions welcome! Please open an issue or PR.