ScyllaDB checkpointer for LangGraph
Project description
LangGraph Checkpoint ScyllaDB
Implementation of a LangGraph CheckpointSaver that uses ScyllaDB.
Installation
pip install langgraph-checkpoint-scylladb
Usage
Sync
from cassandra.auth import PlainTextAuthProvider
from cassandra.cluster import Cluster, ExecutionProfile, EXEC_PROFILE_DEFAULT
from cassandra.policies import DCAwareRoundRobinPolicy
from langgraph.checkpoint.scylladb import ScyllaDBSaver
profile = ExecutionProfile(
load_balancing_policy=DCAwareRoundRobinPolicy(local_dc="AWS_US_EAST_1"),
)
cluster = Cluster(
contact_points=["node-0.example.scylla.cloud"],
port=9042,
auth_provider=PlainTextAuthProvider("scylla", "secret"),
execution_profiles={EXEC_PROFILE_DEFAULT: profile},
)
session = cluster.connect()
checkpointer = ScyllaDBSaver(session, keyspace="langgraph")
checkpointer.setup()
write_config = {"configurable": {"thread_id": "1", "checkpoint_ns": ""}}
read_config = {"configurable": {"thread_id": "1"}}
checkpointer.put(write_config, {...}, {}, {})
checkpointer.get(read_config)
list(checkpointer.list(read_config))
Async — from_conn_string
from langgraph.checkpoint.scylladb import ScyllaDBSaver
SCYLLADB_URI = "scylladb://scylla:secret@node-0.example.scylla.cloud:9042/langgraph?dc=AWS_US_EAST_1"
async with ScyllaDBSaver.from_conn_string(SCYLLADB_URI) as checkpointer:
await checkpointer.aput(write_config, {...}, {}, {})
await checkpointer.aget(read_config)
[c async for c in checkpointer.alist(read_config)]
The connection string format is:
scylladb://<user>:<password>@<host>:<port>/<keyspace>?dc=<datacenter>
The dc query parameter is required for ScyllaDB Cloud (enables DC-aware load balancing).
TTL
Checkpoints can be automatically expired by passing ttl (seconds):
checkpointer = ScyllaDBSaver(session, keyspace="langgraph", ttl=3600)
# or via from_conn_string
async with ScyllaDBSaver.from_conn_string(SCYLLADB_URI, ttl=3600) as checkpointer:
...
Schema
Two tables are created in the target keyspace:
| Table | Partition key | Clustering key |
|---|---|---|
checkpoints |
thread_id |
checkpoint_ns ASC, checkpoint_id DESC |
checkpoint_writes |
(thread_id, checkpoint_ns, checkpoint_id) |
task_id, idx |
The schema is intentionally query-first: every access pattern hits a full partition key with no ALLOW FILTERING.
Additional Links
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file langgraph_checkpoint_scylladb-0.1.0.tar.gz.
File metadata
- Download URL: langgraph_checkpoint_scylladb-0.1.0.tar.gz
- Upload date:
- Size: 82.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b32649deb988eb98db75c54eb2689475a257404d4b62c4d57ce8d5e4be1134f
|
|
| MD5 |
af2707cfc0ee3326f801a5e2bd61f724
|
|
| BLAKE2b-256 |
752f0b773d66055494effaed021faff1aed55b2adb3b9365a4169637ca768be9
|
File details
Details for the file langgraph_checkpoint_scylladb-0.1.0-py3-none-any.whl.
File metadata
- Download URL: langgraph_checkpoint_scylladb-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
28364d145575dd809b46ee1d25e38782c1e4245f3340f8f8eabacb98166ce82f
|
|
| MD5 |
971ecd109f407e6f5f1584b5e3009c6c
|
|
| BLAKE2b-256 |
5fd58f6aa4c6d83805e737078095c5081b51ee1e43e52c536eb9ebae49fb53c1
|