Human-in-the-loop workflows
Refunds, contract changes and production deployments wait for a person to approve, for minutes or days, without holding a process open.
Persist LangGraph agents on HotKV. Pause, resume and time-travel through graph state, and keep long-term memory searchable by meaning.
One package for the checkpointer and the store. Python 3.10 or newer.
An animated walkthrough with real HotKV commands and example replies. Click any step to jump to it.
A LangGraph agent that keeps its state in process memory loses everything on a restart. Human-in-the-loop approvals cannot wait overnight, failed runs cannot be resumed, and nothing the agent learned survives to the next conversation.
langgraph-checkpoint-hotkv stores each graph's checkpoints in HotKV. A graph can be interrupted and resumed, or rewound to any earlier step and branched from it. The companion store keeps long-term memory across threads, found by namespace, by filter or, with an embedding model, by meaning.
One package for the checkpointer and the store. Python 3.10 or newer.
pip install langgraph-checkpoint-hotkvEvery step of the graph is now saved in HotKV.
graph = builder.compile(checkpointer=HotKVSaver(hotkv.from_url("hotkv://localhost:6379")), interrupt_before=["refund"])The graph works through its steps, saving a checkpoint after each, and stops before the refund.
graph.invoke({"messages": [("user", "Refund order 1182")]}, {"configurable": {"thread_id": "t-81"}})The process restarted overnight. The state is still in HotKV, waiting at the same step.
graph.get_state({"configurable": {"thread_id": "t-81"}}).nextThe approver says yes and the graph continues from the saved checkpoint.
graph.invoke(None, {"configurable": {"thread_id": "t-81"}})Long-term memory lives in the store and is found again in any later conversation.
store.put(("users", "42"), "prefs", {"refunds": "prefers store credit"})Refunds, contract changes and production deployments wait for a person to approve, for minutes or days, without holding a process open.
A run that fails at step 40 resumes from step 40 instead of starting over.
Go back to any earlier checkpoint, change the input and branch, to see how the agent would have behaved.
HotKVSaver and AsyncHotKVSaver keep graph state between runs, with interrupt, resume and time travel.
HotKVStore keeps items across threads, searchable by namespace, filter or meaning, with optional expiry.
Passes LangGraph's own checkpointer conformance suite, 81 tests in 8 capabilities, for both savers.
Uses HotKV's core data types and its vector index, and works with or without an enterprise license.
from langgraph.checkpoint.hotkv import HotKVSaver
with HotKVSaver.from_conn_string("hotkv://localhost:6379") as checkpointer:
graph = builder.compile(checkpointer=checkpointer)
graph.invoke({"messages": [("user", "hi")]}, {"configurable": {"thread_id": "1"}})No. The checkpointer and store use HotKV's core data types and vector index, and work on a server with or without a license.
Yes. AsyncHotKVSaver and AsyncHotKVStore work with ainvoke and astream.
Yes. Everything is stored under a key prefix, langgraph by default, which you can change per application or environment.
HotKV speaks the Redis protocol, so you can point an existing client at it and run these same commands.