**TL;DR:** You used a persistence feature (threads, time travel, interrupts, human-in-the-loop) without passing a checkpointer to compile(). Pass one; the in-memory saver needs no extra install.

## The fix

1. Every persistence feature (per-thread history, interrupts, time travel) requires the checkpointer. There is no default.

2. InMemorySaver is for dev and tests. For local durable runs use SqliteSaver (`langgraph-checkpoint-sqlite`); for production use PostgresSaver (`langgraph-checkpoint-postgres`).

3. Async graphs need AsyncSqliteSaver / AsyncPostgresSaver.

4. In JS this is the MISSING_CHECKPOINTER error code.

## When to use this

- You are seeing this exact error message; match the block above, not just part of it.
- The failing call matches the scenario in the title: MISSING_CHECKPOINTER.
- You want the fastest verified fix before digging through logs.

## When not to use this

- Your error text differs from the block above; close cousins often have different causes.
- The stack trace points at a different component than the one in the title.
- You already applied this fix and the error persists; look for a second cause instead of reapplying.

## Compatibility

- Not pinned to a specific version; follows current MISSING_CHECKPOINTER behavior.