# LangGraph install
```
pip install -U langgraph
```
The base package plus LangChain for models and tools:
```
pip install -U langchain
```
## Checkpointers
- 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-sqlite` separately.
- Postgres (production): PostgresSaver / AsyncPostgresSaver - install `langgraph-checkpoint-postgres` separately.
```python
from langgraph.checkpoint.memory import InMemorySaver
graph = builder.compile(checkpointer=InMemorySaver())
```
## Rules
- 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_id` in 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.