Files
langgraphjs/libs/checkpoint-postgres
Christian Bromann 9e114e55d3 chore(deps): remove uuid dependency in favor of embedded uuid in core (#2527)
## Summary
- Remove the direct `uuid` npm dependency from `@langchain/langgraph`,
`@langchain/langgraph-checkpoint`,
`@langchain/langgraph-checkpoint-redis`, `@langchain/langgraph-api`,
`@langchain/langgraph-supervisor`, and `@langchain/langgraph-sdk`.
- Switch all UUID generation and validation to
`@langchain/core/utils/uuid` (v4, v5, v6, v7, and `validate`).
- Drop unused `@types/uuid` devDependencies from checkpoint backend
packages that no longer reference `uuid` directly.

fixes #2481
2026-06-12 10:54:29 -07:00
..
2026-06-10 10:41:31 -07:00
2025-07-02 02:35:57 +02:00

@langchain/langgraph-checkpoint-postgres

Implementation of a LangGraph.js CheckpointSaver that uses a Postgres DB.

Usage

import { PostgresSaver } from "@langchain/langgraph-checkpoint-postgres";

const writeConfig = {
  configurable: {
    thread_id: "1",
    checkpoint_ns: ""
  }
};
const readConfig = {
  configurable: {
    thread_id: "1"
  }
};

// you can optionally pass a configuration object as the second parameter
const checkpointer = PostgresSaver.fromConnString("postgresql://...", {
  schema: "schema_name" // defaults to "public"
});

// You must call .setup() the first time you use the checkpointer:
await checkpointer.setup();

const checkpoint = {
  v: 1,
  ts: "2024-07-31T20:14:19.804150+00:00",
  id: "1ef4f797-8335-6428-8001-8a1503f9b875",
  channel_values: {
    my_key: "meow",
    node: "node"
  },
  channel_versions: {
    __start__: 2,
    my_key: 3,
    "start:node": 3,
    node: 3
  },
  versions_seen: {
    __input__: {},
    __start__: {
      __start__: 1
    },
    node: {
      "start:node": 2
    }
  },
  pending_sends: [],
}

// store checkpoint
await checkpointer.put(writeConfig, checkpoint, {}, {});

// load checkpoint
await checkpointer.get(readConfig);

// list checkpoints
for await (const checkpoint of checkpointer.list(readConfig)) {
  console.log(checkpoint);
}

Usage with existing connection pool

import { PostgresSaver } from "@langchain/langgraph-checkpoint-postgres";
import pg from "pg";

// You can use any existing postgres connection pool
// we create a new pool here for the sake of the example
const pool = new pg.Pool({
  connectionString: "postgresql://..."
});

const checkpointer = new PostgresSaver(pool, undefined, {
  schema: "schema_name"
});

await checkpointer.setup();

// ...

Testing

Spin up testing PostgreSQL

docker-compose up -d && docker-compose logs -f

Then use the following connection string to initialize your checkpointer:

const testCheckpointer = PostgresSaver.fromConnString(
  "postgresql://user:password@localhost:5434/testdb"
);