LangGraph memory: threads, stores, and what you still operate
LangGraph has the most complete memory primitives of any agent framework: short-term state inside a thread, long-term facts across threads. Everything after the primitive is your job.
LangChain. Sources checked 2026-09-25.
How LangGraph handles memory today
The docs split memory into short-term, kept as graph state within a thread and persisted by a checkpointer, and long-term, kept in a store and recalled across threads. That is a clean architecture, and it is storage-agnostic by design.
Storage-agnostic means you pick and run the store, and you decide how recall is scored, how per-user isolation works, and how memory behaves across model upgrades. Those are the parts that turn into infrastructure work.
What LangGraph forgets
Primitives are not a product. The gaps are operational.
- Recall quality, unless you build the ranking yourself. Vector similarity alone misses decisions that use different words.
- Per-user isolation in practice. One store with a namespace convention is not the same thing as a vault per user with its own key.
- Durability across redeploys, because a development store is not a production service.
- Time-aware recall. "What changed last month" is a query shape you have to design.
The fix with MemoryRouter
The published langchain-memoryrouter package gives a LangGraph agent memory tools, recall and retain nodes, and a store backed by MemoryRouter. Per-user vaults and keys come with it.
- 1
Install the package
Python
pip install langchain-memoryrouter - 2
Add memory tools to the graph
Tools for the agent
from langchain_memoryrouter import create_memory_tools memory_tools = create_memory_tools() # search, store, and time-window recall - 3
Or wire recall and retain nodes
Deterministic nodes
from langchain_memoryrouter import create_recall_node, create_retain_node recall = create_recall_node() retain = create_retain_node() - 4
Use it as a store
Long-term store
from langchain_memoryrouter import MemoryRouterStore store = MemoryRouterStore()
Give each end user their own vault and key so memory isolation is a platform property instead of your namespace convention.
Package details and code on the LangGraph page. 14-day free trial.
Related
Full LangGraph guide
Package details and code on the LangGraph page. 14-day free trial.
CrewAI memory
A unified memory class for crews, and where durable per-user memory fits.
Mastra memory
Working memory, semantic recall, and a managed store behind them.
LlamaIndex memory
Memory blocks and chat stores, with a managed vault behind them.
LangGraph memory FAQ
Sources
Sources checked 2026-09-25. Tool behavior changes; check the vendor docs before relying on a detail.