5.2 KiB
5.2 KiB
LangGraph Components
Version: 1.0.0
Last Updated: 2026-02-23
Overview
This document lists and describes the key components in the LangGraph codebase.
Directory Structure
langgraph/libs/langgraph/langgraph/
├── pregel/ # Core execution engine
├── channels/ # Inter-node communication
├── graph/ # Graph building DSL
├── checkpoint/ # Persistence (in separate lib)
├── managed/ # Managed values
├── _internal/ # Internal utilities
├── utils/ # Helper utilities
├── types.py # Core types
├── config.py # Configuration
├── constants.py # Constants
└── errors.py # Error definitions
Core Components
1. Pregel Engine (pregel/)
The heart of LangGraph - execution engine.
| File | Lines | Purpose |
|---|---|---|
main.py |
~4400 | Public API, entry point |
_loop.py |
~1300 | Core PregelLoop class |
_algo.py |
~1500 | Task scheduling, write application |
_runner.py |
~1000 | Async execution |
_read.py |
~300 | PregelNode (node wrapper) |
_write.py |
~250 | Write application |
_checkpoint.py |
~100 | Checkpoint creation |
_executor.py |
~250 | Task execution |
_retry.py |
~250 | Retry logic |
_validate.py |
~150 | Graph validation |
2. Channels (channels/)
Inter-node communication.
| File | Purpose |
|---|---|
base.py |
Abstract BaseChannel |
last_value.py |
LastValue channel |
any_value.py |
AnyValue channel |
topic.py |
Topic (pub/sub) |
named_barrier_value.py |
Barrier synchronization |
binop.py |
Binary operation |
ephemeral_value.py |
One-time values |
untracked_value.py |
Non-checkpointed values |
3. Graph Building (graph/)
DSL for building graphs.
| File | Purpose |
|---|---|
state.py |
StateGraph builder (~1800 lines) |
_node.py |
Node definition |
_branch.py |
Conditional edges |
message.py |
Message graph utilities |
ui.py |
Graph visualization |
4. Core Types (types.py)
~600 lines of type definitions.
Key types:
# Durability
Durability = Literal["sync", "async", "exit"]
# Checkpointer
Checkpointer = None | bool | BaseCheckpointSaver
# Streaming
StreamMode = Literal["values", "updates", "checkpoints", "tasks", "debug"]
# Execution
class Send(NamedTuple):
node: str
arg: Any
class Interrupt(NamedTuple):
value: Any
when: str
class Command(NamedTuple):
update: dict | None
resume: dict | None
5. Errors (errors.py)
class GraphRuntimeException(Exception):
"""Base exception."""
pass
class EmptyInputError(GraphRuntimeException):
"""No input provided."""
pass
class GraphInterrupt(GraphRuntimeException):
"""Graph interrupted."""
pass
Public API
From pregel/__init__.py
# Main classes
class Pregel:
"""Main graph executor."""
def invoke(self, input: Any, config: RunnableConfig) -> Any: ...
def stream(self, input: Any, config: RunnableConfig) -> Iterator: ...
async def ainvoke(self, input: Any, config: RunnableConfig) -> Any: ...
async def astream(self, input: Any, config: RunnableConfig) -> AsyncIterator: ...
def get_state(self, config: RunnableConfig) -> StateSnapshot | None: ...
def get_state_history(self, config: RunnableConfig) -> Iterator[StateSnapshot]: ...
def update_state(self, config: RunnableConfig, values: dict) -> StateSnapshot: ...
# Graph builders
class StateGraph:
"""Build a stateful graph."""
def add_node(self, name: str, action: Callable) -> Self: ...
def add_edge(self, start: str, end: str) -> Self: ...
def add_conditional_edges(self, source: str, path: Callable) -> Self: ...
def compile(self) -> Pregel: ...
Configuration
RunnableConfig
From config.py:
class RunnableConfig:
"""Configuration for graph execution."""
configurable: dict = {}
tags: list[str] = []
metadata: dict = {}
recursion_limit: int = 25
max_concurrency: int = None
Config Keys
From constants.py:
CONFIG_KEY_THREAD_ID = "thread_id"
CONFIG_KEY_CHECKPOINT_ID = "checkpoint_id"
CONFIG_KEY_CHECKPOINTER = "checkpointer"
CONFIG_KEY_CHECKPOINT_MAP = "checkpoint_map"
CONFIG_KEY_DURABILITY = "durability"
CONFIG_KEY_RESUMING = "resuming"
CONFIG_KEY_RESUME_MAP = "resume_map"
Dependencies
External
langchain-core— Core utilitieslangchain— LangChain integrationpydantic— Type validationxxhash— Fast hashingtyping_extensions— Type extensions
Internal
langgraph.checkpoint.*— Checkpoint backendslanggraph.store— Long-term storage
Key Files Summary
| Component | Main File | Key Classes |
|---|---|---|
| Execution | pregel/main.py |
Pregel |
| Loop | pregel/_loop.py |
PregelLoop |
| Channels | channels/base.py |
BaseChannel |
| Graph | graph/state.py |
StateGraph |
| Types | types.py |
Send, Interrupt, Command |
| Config | config.py |
RunnableConfig |
Generated from source code analysis