# Neo4jSaver

> **Class** in `langchain_neo4j`

📖 [View in docs](https://reference.langchain.com/python/langchain-neo4j/checkpoint/Neo4jSaver)

Synchronous Neo4j checkpoint saver for LangGraph.

This class implements the BaseCheckpointSaver interface using Neo4j
as the persistence backend with a proper graph model. It supports
storing checkpoints, channel states, and pending writes using
relationships for efficient traversal.

## Signature

```python
Neo4jSaver(
    self,
    driver: Driver,
    database: str | None = None,
)
```

## Description

**Graph Model:**

(:Thread)-[:HAS_CHECKPOINT]->(:Checkpoint)-[:PREVIOUS]->(:Checkpoint)
(:Checkpoint)-[:HAS_CHANNEL]->(:ChannelState)
(:Checkpoint)-[:HAS_WRITE]->(:PendingWrite)

**Example:**

>>> # Using from_conn_string (recommended)
>>> with Neo4jSaver.from_conn_string(
...     uri="bolt://localhost:7687",
...     user="neo4j",
...     password="password"
... ) as checkpointer:
...     checkpointer.setup()  # Create indexes (run once)
...     graph = builder.compile(checkpointer=checkpointer)
...     result = graph.invoke({"messages": [...]}, config)

>>> # Using existing driver
>>> driver = GraphDatabase.driver(uri, auth=(user, password))
>>> checkpointer = Neo4jSaver(driver)
>>> checkpointer.setup()

## Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `driver` | `Driver` | Yes | A Neo4j Driver instance. |
| `database` | `str \| None` | No | Optional database name (defaults to Neo4j default). (default: `None`) |

## Extends

- `BaseNeo4jSaver`

## Constructors

```python
__init__(
    self,
    driver: Driver,
    database: str | None = None,
) -> None
```

| Name | Type |
|------|------|
| `driver` | `Driver` |
| `database` | `str \| None` |


## Methods

- [`from_conn_string()`](https://reference.langchain.com/python/langchain-neo4j/checkpoint/Neo4jSaver/from_conn_string)
- [`close()`](https://reference.langchain.com/python/langchain-neo4j/checkpoint/Neo4jSaver/close)
- [`setup()`](https://reference.langchain.com/python/langchain-neo4j/checkpoint/Neo4jSaver/setup)
- [`put()`](https://reference.langchain.com/python/langchain-neo4j/checkpoint/Neo4jSaver/put)
- [`put_writes()`](https://reference.langchain.com/python/langchain-neo4j/checkpoint/Neo4jSaver/put_writes)
- [`get_tuple()`](https://reference.langchain.com/python/langchain-neo4j/checkpoint/Neo4jSaver/get_tuple)
- [`list()`](https://reference.langchain.com/python/langchain-neo4j/checkpoint/Neo4jSaver/list)
- [`delete_thread()`](https://reference.langchain.com/python/langchain-neo4j/checkpoint/Neo4jSaver/delete_thread)

---

[View source on GitHub](https://github.com/langchain-ai/langchain-neo4j/blob/f46cc4745b03943780ab71713adb1836adbbd425/libs/neo4j/langchain_neo4j/checkpoint/__init__.py#L50)