Skip to main content

Library with a Tigris object-storage implementation of LangGraph checkpoint saver, with zero-copy bucket-fork branching.

Project description

LangGraph Tigris Checkpoint

Implementation of a LangGraph BaseCheckpointSaver that persists agent state in Tigris globally-distributed object storage over the S3 API (sync and async), plus a zero-copy bucket-fork helper for instant branching of an entire thread's checkpoint lineage.

Why Tigris

  • Durable, global, cheap state — checkpoints live in globally-replicated object storage with no egress fees.
  • Instant branchingfork() creates a zero-copy fork of the bucket, so an agent's entire checkpoint history can be branched in O(1) for parallel experiments, evals, or what-if exploration. Writes to the fork are isolated from the source.
  • Pure object store — no separate database to operate. "Latest checkpoint" is found via a sorted list under strong consistency; conditional writes are available for idempotency/CAS.

Bucket requirement

Use a Single-region or Multi-region Tigris bucket. These provide strong, globally consistent reads, lists, and conditional operations, which this saver relies on. Global and Dual-region buckets give only eventual cross-region consistency and can return stale "latest" results.

Install

pip install langgraph-checkpoint-tigris

Usage

from langgraph.checkpoint.tigris import TigrisSaver

# Credentials from the standard AWS env chain
# (AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY), endpoint defaults to Tigris.
with TigrisSaver.from_conn_string("my-bucket") as checkpointer:
    checkpointer.setup()
    graph = builder.compile(checkpointer=checkpointer)
    graph.invoke({"messages": [...]}, {"configurable": {"thread_id": "1"}})

Async:

from langgraph.checkpoint.tigris.aio import AsyncTigrisSaver

async with AsyncTigrisSaver.from_conn_string("my-bucket") as checkpointer:
    await checkpointer.setup()
    graph = builder.compile(checkpointer=checkpointer)
    await graph.ainvoke({"messages": [...]}, {"configurable": {"thread_id": "1"}})

Instant branching with forks

with TigrisSaver.from_conn_string("prod-agent-state") as checkpointer:
    # Branch the ENTIRE bucket (all threads/checkpoints) instantly.
    experiment = checkpointer.fork("experiment-run-42")
    # `experiment` is an isolated TigrisSaver; writes here never touch prod.

Object layout

{prefix}checkpoints/{thread}/{ns}/{checkpoint_id}/manifest.json
{prefix}checkpoints/{thread}/{ns}/{checkpoint_id}/checkpoint.bin
{prefix}checkpoints/{thread}/{ns}/{checkpoint_id}/writes/{task_id}/{idx}.bin

Checkpoints are immutable and uniquely keyed; checkpoint_ids are time-sortable so the latest is max(...) of a prefix listing — no mutable HEAD pointer.

Development

cd libs/checkpoint-tigris
uv sync
make format && make lint && make test         # unit tests run without creds

# Full suite (conformance + integration + fork) needs a live Tigris bucket:
TIGRIS_TEST_BUCKET=my-bucket \
AWS_ACCESS_KEY_ID=... AWS_SECRET_ACCESS_KEY=... \
make test

Integration, conformance, and fork tests are skipped automatically when those environment variables are absent. The pure key-layout unit tests (tests/test_keys.py) always run.

Status

The synchronous and asynchronous savers, the copy_thread/acopy_thread branching capability, and the zero-copy fork() helper are implemented and pass the LangGraph checkpointer conformance suite (langgraph-checkpoint-conformance) against a live Tigris bucket. The pure key-layout and manifest logic are additionally unit-tested offline.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

langgraph_checkpoint_tigris-0.1.0.tar.gz (183.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

langgraph_checkpoint_tigris-0.1.0-py3-none-any.whl (16.4 kB view details)

Uploaded Python 3

File details

Details for the file langgraph_checkpoint_tigris-0.1.0.tar.gz.

File metadata

File hashes

Hashes for langgraph_checkpoint_tigris-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d6ee266a2f82ce6b94d826081c864aed6f02c9b726f5f278e76880326c1dd63f
MD5 ff8554f8dd6e099992d196a9de22ff7b
BLAKE2b-256 5a0b54dc8e6c0ca3fc0058e213529a5f48f29ed1271c6afcb4124a583d089f49

See more details on using hashes here.

Provenance

The following attestation bundles were made for langgraph_checkpoint_tigris-0.1.0.tar.gz:

Publisher: release.yml on tigrisdata/tigris-langgraph

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file langgraph_checkpoint_tigris-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for langgraph_checkpoint_tigris-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e434082eec038843c2fd23b84a2709d85811e296263eced8c97bcbcafeb805c1
MD5 5b15b00c5a6d7d5822fb707ba4bb2723
BLAKE2b-256 4345b738b906031e975c68138c6121d7886299805996ca548c0c72827f448a8f

See more details on using hashes here.

Provenance

The following attestation bundles were made for langgraph_checkpoint_tigris-0.1.0-py3-none-any.whl:

Publisher: release.yml on tigrisdata/tigris-langgraph

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page