Grafomem (Fair Source) adapter for LangGraph Checkpointers
Project description
langgraph-checkpoint-grafomem
Signed checkpoints and provable thread erasure for LangGraph.
A drop-in LangGraph checkpointer that wraps the saver you already use and adds two things standard checkpointers can't give you:
- Signed checkpoints — every persisted checkpoint is Ed25519-signed and tamper-evident.
- Verifiable erasure —
delete_thread()produces a signed state-transition receipt: cryptographic proof that a user's thread was erased, bound to a key and a timestamp. The receipt for right-to-be-forgotten you can hand an auditor.
Install
pip install langgraph-checkpoint-grafomem
Quickstart
import sqlite3
from langgraph.checkpoint.sqlite import SqliteSaver
from grafomem_checkpoint import GrafomemSerializer, GrafomemCheckpointSaver
# your own signing identity — self-hosted keys, no cloud
conn = sqlite3.connect("memory.db", check_same_thread=False)
inner = SqliteSaver(conn, serde=GrafomemSerializer(private_key, key_id=key_id, trusted_keys=trusted_keys))
saver = GrafomemCheckpointSaver(inner)
graph = builder.compile(checkpointer=saver) # persist as usual
# right to be forgotten, with proof:
saver.delete_thread("user-123")
receipt = saver.last_receipt("user-123")
assert receipt.verify(public_key) # signed proof the erasure transition occurred
print(receipt.to_json())
The receipt cryptographically binds the hash of the entire thread's checkpoint history before deletion to the empty state after it — so it commits to the specific data that was erased, not a placeholder.
What the receipt proves (and what it doesn't)
A signed state-transition receipt attests that the erasure operation occurred — the thread's state was overwritten and the transition is bound to a key and a timestamp. It is not a claim of media sanitization or information-theoretic unrecoverability. That precision is the point: an honest, independently verifiable record of deletion, not an unprovable guarantee.
Full example
A runnable reference agent (persist memory, /recall, /forget → verified receipt) lives at
grafomem-langgraph-example.
Licensing
This adapter is Apache-2.0. It depends on the GRAFOMEM runtime, which is Fair Source (FSL-1.1-Apache-2.0) — self-host and modify freely; not "open source." See grafomem.com.
A project of Ulissy s.r.l. · the standard is stewarded by the GNS Foundation.
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_grafomem-1.0.1.tar.gz.
File metadata
- Download URL: langgraph_checkpoint_grafomem-1.0.1.tar.gz
- Upload date:
- Size: 7.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c3a6f9427e197bf830f9d777d0338960b71515097f3e6bc973de402869d5bfac
|
|
| MD5 |
e618fd1b3dba557a39e2e47c2643e6a9
|
|
| BLAKE2b-256 |
69fc3ea07254bd07526663554430c63fb0ee3c40e4dc819efa03efd192cb303f
|
File details
Details for the file langgraph_checkpoint_grafomem-1.0.1-py3-none-any.whl.
File metadata
- Download URL: langgraph_checkpoint_grafomem-1.0.1-py3-none-any.whl
- Upload date:
- Size: 6.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cbce8204619ce480681f24b8e8886dc31772f92963f54ad4070f011639514353
|
|
| MD5 |
13e8e65d05794deaa7e65ddaa0f48243
|
|
| BLAKE2b-256 |
91f9de1bbd51e74e6e6e354e8b5b074fb1beb800e0f65b9e96861619d2d25872
|