@langgraph-toolkit/adapter-checkpointers
v0.2.3
Published
Database checkpointers for @langgraph-toolkit/core: SQL (SQLite/Postgres/MySQL), Redis, MongoDB. Drivers are injected, so no database library is a hard dependency.
Maintainers
Readme
@langgraph-toolkit/adapter-checkpointers
Choose persistence without changing graph code. This package implements the Core checkpoint contract and provides a small Persistence facade over injected SQL, Redis, MongoDB, or in-memory drivers.
Install when the graph needs durable state
npm install @langgraph-toolkit/core @langgraph-toolkit/adapter-checkpointersConfigure persistence while composing the resource. Normal graph calls still receive business input. A resume call adds only the thread identifier and the interrupt response required by the graph.
import { createPersistence } from "@langgraph-toolkit/adapter-checkpointers";
const persistence = createPersistence();
await persistence.snapshot({
threadId: "conversation-1",
snapshotId: "snapshot-1",
state: { question: "count users", answer: "6" },
node: "answer",
round: 2,
createdAt: Date.now(),
});
const latest = await persistence.restore<{ question: string; answer: string }>({
threadId: "conversation-1",
});The default is an in-memory implementation for local development and tests: createMemoryCheckpointer (also available as autoCheckpoint()) is re-exported from @langgraph-toolkit/core, which owns the single canonical implementation. It orders checkpoint lookup by insertion rather than timestamp, so same-millisecond checkpoints never return a stale record on resume. Production applications inject a driver-backed checkpointer through createPersistence({ checkpointer }).
Redis convenience
useRedis() keeps the common Redis path short while still allowing the application to inject its own five-command client. No Redis SDK is bundled or forced on the application.
import { useRedis } from "@langgraph-toolkit/adapter-checkpointers";
const persistence = useRedis({
driver: redisDriver,
prefix: "app:graph:",
ttlSeconds: 86_400,
});The facade exposes snapshot, restore, history, and fork. fork() creates a new thread and snapshot identifier without mutating the source snapshot.
Lower-level drivers
| Backend | Public surface | Application responsibility |
|---|---|---|
| SQLite, PostgreSQL, MySQL | SqlCheckpointer, syncSqlDriver | Client, pool, migrations and credentials |
| Redis | RedisCheckpointer, useRedis | Five-command driver, key namespace and TTL |
| MongoDB | MongoCheckpointer | Collection, indexes, client and credentials |
| Local tests | createPersistence() | No external dependency |
The graph imports only Core contracts. It does not import a database client, know a table schema, or receive a checkpointer on every request.
Development
npm install
npm run build
npm testTests use deterministic injected drivers and do not require a live external database.
License
MIT
