LangGraph checkpointing and persistence. Use when implementing fault-tolerant workflows, resuming interrupted executions, debugging with state history, or avoiding re-running expensive operations.
View on GitHubyonatangross/skillforge-claude-plugin
ork
January 25, 2026
Select agents to install to:
npx add-skill https://github.com/yonatangross/skillforge-claude-plugin/blob/main/skills/langgraph-checkpoints/SKILL.md -a claude-code --skill langgraph-checkpointsInstallation paths:
.claude/skills/langgraph-checkpoints/# LangGraph Checkpointing
Persist workflow state for recovery and debugging.
## Checkpointer Options
```python
from langgraph.checkpoint import MemorySaver
from langgraph.checkpoint.sqlite import SqliteSaver
from langgraph.checkpoint.postgres import PostgresSaver
# Development: In-memory
memory = MemorySaver()
app = workflow.compile(checkpointer=memory)
# Production: SQLite
checkpointer = SqliteSaver.from_conn_string("checkpoints.db")
app = workflow.compile(checkpointer=checkpointer)
# Production: PostgreSQL
checkpointer = PostgresSaver.from_conn_string("postgresql://...")
app = workflow.compile(checkpointer=checkpointer)
```
## Using Thread IDs
```python
# Start new workflow
config = {"configurable": {"thread_id": "analysis-123"}}
result = app.invoke(initial_state, config=config)
# Resume interrupted workflow
config = {"configurable": {"thread_id": "analysis-123"}}
result = app.invoke(None, config=config) # Resumes from checkpoint
```
## PostgreSQL Setup
```python
def create_checkpointer():
"""Create PostgreSQL checkpointer for production."""
return PostgresSaver.from_conn_string(
settings.DATABASE_URL,
save_every=1 # Save after each node
)
# Compile with checkpointing
app = workflow.compile(
checkpointer=create_checkpointer(),
interrupt_before=["quality_gate"] # Manual review point
)
```
## Inspecting Checkpoints
```python
# Get all checkpoints for a workflow
checkpoints = app.get_state_history(config)
for checkpoint in checkpoints:
print(f"Step: {checkpoint.metadata['step']}")
print(f"Node: {checkpoint.metadata['source']}")
print(f"State: {checkpoint.values}")
# Get current state
current = app.get_state(config)
print(current.values)
```
## Resuming After Crash
```python
import logging
async def run_with_recovery(workflow_id: str, initial_state: dict):
"""Run workflow with automatic recovery."""
config = {"configurable": {"thread_id": workflow_id}}
try:
# Try to resume exist