# 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.