Skip to main content

Kanon

Your LangGraph agent crashed at step 38. Kanon resumes it at step 38.

# Before
from langgraph.checkpoint.memory import MemorySaver
graph = builder.compile(checkpointer=MemorySaver())

# After — agents resume from last signed checkpoint on restart
from kanon.langgraph import KanonCheckpointer
graph = builder.compile(checkpointer=KanonCheckpointer(api_key="kn_..."))
pip install kanon[langgraph]

Every checkpoint is cryptographically signed. If the stored state is altered between save and resume, Kanon raises KanonTamperedError before returning state to LangGraph.

Run the demo →


Crash-resume demo

$ python demo/crash_resume_demo.py --demo

[kanon-demo] Starting 5-step research agent  thread=demo-thread-1
  Step 1/5  node=gather_sources        ✓  snap=snap_a1b2c3  (signed)
  Step 2/5  node=summarise_sources     ✓  snap=snap_d4e5f6  (signed)
  Step 3/5  node=draft_findings        ✓  snap=snap_g7h8i9  (signed)
💥 Simulated crash after step 3. Process state wiped.

[kanon-demo] Resuming  thread=demo-thread-1  from=snap_g7h8i9
  Step 4/5  node=verify_findings       ✓  snap=snap_j0k1l2  (signed)
  Step 5/5  node=write_report          ✓  snap=snap_m3n4o5  (signed)

[kanon-demo] Complete. Signed receipt chain:
  snap_a1b2c3  →  snap_d4e5f6  →  snap_g7h8i9  (crash)  →  snap_j0k1l2  →  snap_m3n4o5
  proof_bundle hash: e3b0c442...  agent=kanon-demo  tenant=demo

Or as two separate processes:

bash demo/run_demo.sh

How it works

KanonCheckpointer is a drop-in replacement for LangGraph's MemorySaver. After each node, LangGraph calls put() — Kanon signs the checkpoint and stores it server-side. On resume, get_tuple() calls restore_snapshot, the server verifies the HMAC proof bundle, and LangGraph continues from the last good state.

The signed receipt chain links every checkpoint to its predecessor. After a crash, the resume linkage (work_artifacts[resume_linkage]) keeps the server-side audit graph connected across the recovery boundary.

Metadata

Release files for kanon-langgraph 0.1.0

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

Source distribution (sdist)

Source distribution for kanon-langgraph 0.1.0
File Size Uploaded Provenance Actions
kanon_langgraph-0.1.0.tar.gz 112.6 kB Without provenance Details for kanon_langgraph-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for kanon-langgraph 0.1.0
File Interpreter ABI Platform Actions
kanon_langgraph-0.1.0-py3-none-any.whl Python 3 none any Details for kanon_langgraph-0.1.0-py3-none-any.whl

Total release size: 181.4 kB

Release files / kanon_langgraph-0.1.0.tar.gz

Download URL kanon_langgraph-0.1.0.tar.gz
Size 112.6 kB
Tags Source
SHA-256 checksum
How to use checksums
99ad21868b99c1eb5f3d499d8ad828ed0b25f7ce819d7a8d4437c60eccb1762a
BLAKE2b-256 checksum
How to use checksums
ed59b431250c2411f9cfc2323d55cdb15d3eec371e2c1d2e385687a9847ed9ea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release files / kanon_langgraph-0.1.0-py3-none-any.whl

Download URL kanon_langgraph-0.1.0-py3-none-any.whl
Size 68.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f878d31769f267077317ea749826a831a080e21fe66adbd58df5e5396b536f4b
BLAKE2b-256 checksum
How to use checksums
9ea961873786143ce2f5363ba7869e6e2cee85cd18f6b2a8e02537b18b3ae2f0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Security for kanon-langgraph 0.1.0

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

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