langgraph-persistence

Configure LangGraph checkpointers, thread state, time travel, and cross-thread memory stores.

Updated Jan 10, 2026
One-click install
npx skills add https://github.com/orezek/monorepo_template --skill langgraph-persistence-orezek
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: langgraph-persistence
Source: https://github.com/orezek/monorepo_template/tree/main/.agents/skills/langgraph-persistence
Command: npx skills add https://github.com/orezek/monorepo_template --skill langgraph-persistence-orezek

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? LangGraph agents lose conversation state between invocations by default, and developers struggle to choose the right checkpointer, manage thread IDs, replay past states, or scope subgraph persistence correctly. ## Core Features & Use Cases - Checkpointer Setup: Configure InMemorySaver for testing or PostgresSaver for production, with mandatory thread_id-based state persistence. - Time Travel & State Editing: Browse checkpoint history, replay or fork from past states, and update state manually with reducer-aware Overwrite semantics. - Subgraph Scoping & Long-Term Memory: Choose between checkpointer False/None/True modes for subgraphs and use a Store for cross-thread user preferences. - Use Case: Build a multi-turn support chatbot where each user gets an isolated thread, conversation history survives restarts via Postgres, and user preferences persist across all sessions through a shared Store. ## Quick Start Ask the AI to add Postgres-backed checkpointing with thread_id persistence to your LangGraph agent so it remembers conversations across restarts.

Frequently Asked Questions about langgraph-persistence

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add persistent memory to a LangGraph agent?▼

Compile the graph with a checkpointer and always pass a thread_id in the config. Use InMemorySaver for development or PostgresSaver for production, then invoke with {"configurable": {"thread_id": "session-1"}} so state persists across calls.

Which LangGraph checkpointer should I use for production?▼

PostgresSaver is the production-ready checkpointer, created via PostgresSaver.from_conn_string with a one-time setup() call to create tables. InMemorySaver loses data on restart and SqliteSaver is only suited for local development.

How do I time travel or replay LangGraph checkpoint history?▼

Call get_state_history (Python) or getStateHistory (TypeScript) with the thread config to list past checkpoints. Resume from one by invoking with None/null and the past state's config, or fork by calling update_state first.

Why does my LangGraph agent forget previous messages?▼

State is not persisted when thread_id is missing from the invocation config. Always pass {"configurable": {"thread_id": "..."}} on every invoke call so the checkpointer can save and reload the thread's state.

Can I run the same stateful LangGraph subgraph in parallel?▼

No. A subgraph compiled with checkpointer=True cannot be called multiple times within a single node because the calls write to the same checkpoint namespace and conflict. Use checkpointer=None for parallel invocations or wrap different subgraphs with unique node names.

How do I share memory across LangGraph threads?▼

Use a Store such as InMemoryStore compiled alongside the checkpointer. Access it inside nodes via the Runtime parameter (runtime.store) and key entries by user namespace so preferences persist across all threads.