Skip to main content

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


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_scylladb-0.1.0.tar.gz (82.3 kB view details)

Uploaded Source

Built Distribution

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

File details

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

File metadata

File hashes

Hashes for langgraph_checkpoint_scylladb-0.1.0.tar.gz
Algorithm Hash digest
SHA256 6b32649deb988eb98db75c54eb2689475a257404d4b62c4d57ce8d5e4be1134f
MD5 af2707cfc0ee3326f801a5e2bd61f724
BLAKE2b-256 752f0b773d66055494effaed021faff1aed55b2adb3b9365a4169637ca768be9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for langgraph_checkpoint_scylladb-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 28364d145575dd809b46ee1d25e38782c1e4245f3340f8f8eabacb98166ce82f
MD5 971ecd109f407e6f5f1584b5e3009c6c
BLAKE2b-256 5fd58f6aa4c6d83805e737078095c5081b51ee1e43e52c536eb9ebae49fb53c1

See more details on using hashes here.

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