LangGraph setup and checkpointer packages: what ships in the box
pip install langgraph gets the graph runtime and the in-memory checkpointer. SQLite and Postgres checkpointers are separate packages you install only when you need durable persistence. Not the full reference manual.
TL;DR: pip install langgraph gets the graph runtime and the in-memory checkpointer. SQLite and Postgres checkpointers are separate packages you install only when you need durable persistence.
The fix
- In-memory (dev, tests):
from langgraph.checkpoint.memory import InMemorySaver- ships inside the langgraph package, nothing else to install. - SQLite (local workflows): SqliteSaver / AsyncSqliteSaver - install
langgraph-checkpoint-sqliteseparately. - Postgres (production): PostgresSaver / AsyncPostgresSaver - install
langgraph-checkpoint-postgresseparately. - Persistence only works if you pass a checkpointer to
compile(). Without one you get MISSING_CHECKPOINTER the moment you use persistence features. - Pass a
thread_idin the config ({"configurable": {"thread_id": "..."}}) so conversations checkpoint per thread. No thread id, no resumable history. - Async graphs need the async checkpointer variants. Mixing a sync saver into an async graph fails.
When to use this
- This covers exactly what the title says: LangGraph setup and checkpointer packages.
- You are setting this up for the first time, or auditing an existing setup.
- You want the key gotchas in one place before you start.
When not to use this
- You are doing a different workflow with LangGraph; these steps are specific to the title above.
- You need the full reference docs; this is the short path, not the manual.
Compatibility
- Not pinned to a specific version; follows current LangGraph behavior.