Skip to main content

🔍 typesense-langgraph-checkpointer

LangGraph checkpoint saver backed by Typesense — for Python and JavaScript/TypeScript.

JS CI Python CI PyPI version npm version License: MIT

Features · Installation · Quick Start · API Reference · Development · Contributing


✨ Features

  • Drop-in LangGraph saver — implements the full BaseCheckpointSaver interface
  • Dual-language — first-class Python and TypeScript packages from the same repo
  • Blazingly fast search — leverages Typesense's in-memory engine for sub-millisecond checkpoint retrieval
  • Thread management — full CRUD for threads, checkpoints, and pending writes
  • Automatic schema setup — call setup() once and collections are created for you
  • Zero-config local dev — Docker Compose included for instant Typesense instance

📦 Installation

Python

pip install langgraph-checkpoint-typesense

JavaScript / TypeScript

npm install @typesense-langgraph/checkpoint

🚀 Quick Start

Python

import typesense
from langgraph_checkpoint_typesense import AsyncTypesenseSaver

# 1. Create the saver
saver = AsyncTypesenseSaver.from_config(
    host="localhost",
    port=8108,
    api_key="your-api-key",
    protocol="http",
)

# 2. Initialize collections (run once)
await saver.setup()

# 3. Use with any LangGraph graph
from langgraph.graph import StateGraph

graph = StateGraph(...)
# ... define your nodes & edges ...
app = graph.compile(checkpointer=saver)

# 4. Invoke with a thread
config = {"configurable": {"thread_id": "my-thread"}}
result = await app.ainvoke({"input": "hello"}, config)

JavaScript / TypeScript

import { TypesenseSaver } from "@typesense-langgraph/checkpoint";

// 1. Create the saver
const saver = TypesenseSaver.fromConfig({
  host: "localhost",
  port: 8108,
  apiKey: "your-api-key",
  protocol: "http",
});

// 2. Initialize collections (run once)
await saver.setup();

// 3. Use with any LangGraph graph
import { StateGraph } from "@langchain/langgraph";

const graph = new StateGraph(...)
  // ... define your nodes & edges ...
  .compile({ checkpointer: saver });

// 4. Invoke with a thread
const config = { configurable: { thread_id: "my-thread" } };
const result = await graph.invoke({ input: "hello" }, config);

⚙️ Configuration

Parameter Python JS/TS Default Description
Host host host localhost Typesense server hostname
Port port port 8108 Typesense API port
API Key api_key apiKey — Typesense API key
Protocol protocol protocol http http or https
Timeout connection_timeout_seconds connectionTimeoutSeconds 5 Connection timeout in seconds

You can also pass a pre-configured Typesense Client directly to the constructor.


📖 API Reference

Python — AsyncTypesenseSaver

Method Description
from_config(cls, **kwargs) Create a saver from connection parameters
setup() Create Typesense collections if they don't exist
aget_tuple(config) Retrieve a checkpoint tuple
aput(config, checkpoint, metadata, new_versions) Store a checkpoint
aput_writes(config, writes, task_id) Store pending writes
alist(config, *, filter, before, limit) List checkpoint tuples
adelete_thread(thread_id) Delete all data for a thread

JavaScript / TypeScript — TypesenseSaver

Method Description
fromConfig(config) Create a saver from connection parameters
setup() Create Typesense collections if they don't exist
getTuple(config) Retrieve a checkpoint tuple
put(config, checkpoint, metadata, newVersions) Store a checkpoint
putWrites(config, writes, taskId) Store pending writes
list(config, options?) Async-generator of checkpoint tuples
deleteThread(threadId) Delete all data for a thread

🏗️ Architecture

graph LR
    A["LangGraph Runtime"] -->|checkpoint & writes| B["TypesenseSaver"]
    B -->|upsert / search| C["Typesense"]
    C --> D[("checkpoints collection")]
    C --> E[("writes collection")]
    B -->|getTuple / list| A

The saver manages two Typesense collections:

  • langgraph_checkpoints — stores serialized checkpoint state, metadata, and channel versions
  • langgraph_writes — stores pending writes keyed by (thread_id, checkpoint_id, task_id, idx)

Both collections are created automatically by setup() with optimized schemas and sorting fields.


🛠️ Development

Prerequisites

  • Docker
  • Python ≥ 3.9
  • Node.js ≥ 22

Start Typesense

docker compose up -d

Default API key: test-api-key (override with TYPESENSE_API_KEY env var).

Python

cd python
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest tests/ -v

JavaScript / TypeScript

cd js
npm ci
npm run build
npm test

🤝 Contributing

Contributions are welcome! Please read the Contributing Guide and the Code of Conduct before opening a PR.


📄 License

This project is licensed under the MIT License.

Metadata

Release files for typesense-langgraph-checkpointer 0.1.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for typesense-langgraph-checkpointer 0.1.7
File Size Uploaded
typesense_langgraph_checkpointer-0.1.7.tar.gz 9.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for typesense-langgraph-checkpointer 0.1.7
File Interpreter ABI Platform
typesense_langgraph_checkpointer-0.1.7-py3-none-any.whl Python 3 none any Details

Total release size: 17.3 kB

Release files / typesense_langgraph_checkpointer-0.1.7.tar.gz

Download URL typesense_langgraph_checkpointer-0.1.7.tar.gz
Size 9.1 kB
Tags Source
SHA-256 checksum
How to use checksums
1bdd08c148ab20d36523b725ce7c9b25cbbddddc5d6345eaae852723daf6be25
BLAKE2b-256 checksum
How to use checksums
31fd1d6f3e5b2c9e9e476c4160aaec2a8917e6b17337614969e3e6822d9da5d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 30, 2026.

Transparency log

Release files / typesense_langgraph_checkpointer-0.1.7-py3-none-any.whl

Download URL typesense_langgraph_checkpointer-0.1.7-py3-none-any.whl
Size 8.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e4e8c3589d32eb81f96663f081e6539a6a12a88108990ed91a79340bef721df0
BLAKE2b-256 checksum
How to use checksums
286d237e81868c04f0db53fb0bdc1b460720f0a745d83a753fa1665abd03d7b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 30, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.7 This release

2 release files

0.1.6

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page