| C1 |
StateGraph / Pregel |
Core graph builder and execution engine with v1/v2 output,
durability modes (sync/async/exit),
interrupt_before/interrupt_after |
framework-controlled |
Yes |
StateGraph.add_node(),
StateGraph.compile(), Pregel.invoke(),
Pregel.stream() |
| C2 |
JsonPlusSerializer |
Checkpoint serialization/deserialization with msgpack, JSON, and
pickle codecs; 47-entry SAFE_MSGPACK_TYPES allowlist |
framework-controlled |
Yes |
loads_typed(), dumps_typed(),
_create_msgpack_ext_hook(), _reviver() |
| C3 |
ToolNode |
Dispatches LLM-generated tool calls to registered BaseTool
instances; supports InjectedState/InjectedStore/ToolRuntime injection
into tools |
framework-controlled |
No (explicit opt-in required) |
ToolNode._func(), _run_one(),
_execute_tool_sync(), _validate_tool_call(),
_inject_tool_args() |
| C4 |
RemoteGraph |
Client for remote LangGraph Server API; implements
PregelProtocol |
framework-controlled |
No (opt-in) |
RemoteGraph.stream(),
RemoteGraph.invoke(),
RemoteGraph.get_state() |
| C5 |
PostgresSaver / PostgresStore |
PostgreSQL checkpoint saver, key-value store, and vector search |
framework-controlled |
No (opt-in) |
from_conn_string(), put(),
get_tuple(), search() |
| C6 |
SqliteSaver / SqliteStore |
SQLite checkpoint saver, key-value store with JSON path
filtering |
framework-controlled |
No (opt-in) |
from_conn_string(), put(),
get_tuple(), search() |
| C7 |
EncryptedSerializer |
AES-EAX authenticated encryption wrapper for checkpoint data |
framework-controlled |
No (opt-in) |
from_pycryptodome_aes(), loads_typed(),
dumps_typed() |
| C8 |
CLI (langgraph_cli) |
Docker-based build and deployment tooling; config schema includes
WebhookUrlPolicy for SSRF protection |
framework-controlled |
No (separate install) |
langgraph up, langgraph build,
langgraph dev, langgraph new |
| C9 |
SDK Client (langgraph_sdk) |
HTTP client for LangGraph Server API with SSE streaming and
reconnection |
framework-controlled |
Yes |
get_client(), get_sync_client(),
HttpClient.request_reconnect(),
HttpClient.stream() |
| C10 |
User-Registered Tools |
BaseTool instances provided by users; may use
InjectedState/InjectedStore/ToolRuntime annotations |
user-controlled |
N/A |
Tool invoke() / ainvoke() methods |
| C11 |
User-Registered Nodes |
Arbitrary callables added via add_node() or
@task/@entrypoint |
user-controlled |
N/A |
Node function signatures |
| C12 |
Checkpoint Storage |
PostgreSQL or SQLite databases storing serialized graph state |
external |
N/A |
Database connection interface |
| C13 |
Functional API |
@entrypoint/@task decorators for
function-based workflow authoring with retry/cache policies |
framework-controlled |
Yes |
entrypoint.__call__(), task(),
_TaskFunction.__call__()
(libs/langgraph/langgraph/func/__init__.py) |
| C14 |
BaseCache |
Cache layer for task results with JsonPlusSerializer
(pickle_fallback=False) |
framework-controlled |
No (opt-in, requires checkpointer) |
get(), set(), clear()
(libs/checkpoint/langgraph/cache/base/__init__.py) |
| C15 |
Serde Event Hooks |
Monitoring system for serialization/deserialization events
(msgpack_blocked, msgpack_unregistered_allowed,
msgpack_method_blocked) |
framework-controlled |
Yes |
register_serde_event_listener(),
emit_serde_event()
(libs/checkpoint/langgraph/checkpoint/serde/event_hooks.py) |
| C16 |
Auth System (SDK) |
Custom authentication/authorization handler framework |
framework-controlled |
No (opt-in) |
Auth.authenticate(), Auth.on() handler
registration
(libs/sdk-py/langgraph_sdk/auth/__init__.py) |
| C17 |
SDK Encryption Handlers (beta) |
Custom at-rest encryption/decryption framework; supports blob and
JSON handlers with per-model/field context; server-side execution |
framework-controlled |
No (opt-in, beta) |
Encryption.encrypt.blob(),
Encryption.encrypt.json(),
Encryption.decrypt.blob(),
Encryption.decrypt.json(),
Encryption.context()
(libs/sdk-py/langgraph_sdk/encryption/__init__.py) |