# MISSING_CHECKPOINTER

```python
from langgraph.checkpoint.memory import InMemorySaver
from langgraph.graph import StateGraph

checkpointer = InMemorySaver()
graph = builder.compile(checkpointer=checkpointer)
```

Functional API:

```python
from langgraph.func import entrypoint

@entrypoint(checkpointer=checkpointer)
def workflow(messages: list) -> str:
    ...
```

## Rules

- Every persistence feature (per-thread history, interrupts, time travel) requires the checkpointer. There is no default.
- InMemorySaver is for dev and tests. For local durable runs use SqliteSaver (`langgraph-checkpoint-sqlite`); for production use PostgresSaver (`langgraph-checkpoint-postgres`).
- Async graphs need AsyncSqliteSaver / AsyncPostgresSaver.
- In JS this is the MISSING_CHECKPOINTER error code.