Explore Neo4j Agent Memory Service for persistent, structured LLM agent memory
Ephemeral memory is the default for most AI agents today. Reasoning chains, past facts, and tool calls vanish after the prompt, forcing repeated, redundant processing and limiting what LLM-powered software can actually do. The Neo4j Agent Memory Service (NAMS) offers a serious counterpoint: a managed cloud service that gives agents persistent, structured memory rooted in a Neo4j Aura graph database with native vector indexing. NAMS is experimental and early — a Neo4j Labs project, community-supported rather than a fully managed product — but it is available today for hands-on use. Building agents that genuinely remember, across sessions, structurally rather than as piles of text, just became something you can try rather than something you have to hand-roll.
What NAMS is, in the vendor's own words
The most reliable description of NAMS comes from Neo4j itself: an official tour published on the company's Medium publication walks through the service as "persistent, structured memory for LLM agents, delivered as a managed cloud service." You call a REST API or connect an MCP client, and NAMS handles storage, entity extraction, deduplication, embedding, background compression, and context retrieval — all backed by a managed Aura graph database with native vector indexes. The Labs labeling is explicit: experimental, community-supported, opened early so agent builders can shape it.
NAMS gives an agent three kinds of memory, all stored as connected nodes in a single per-workspace graph: short-term memory (the conversation), long-term memory (a knowledge graph of entities and relationships), and reasoning memory (a record of the agent's own steps and tool calls). Each view in the service's console — starting with a Dashboard showing service health, entity counts, and queue lag — is a different lens on that one graph.
The architecture shape is straightforward: your agent talks to NAMS over HTTP or MCP, and NAMS runs the API gateway, the MCP server, and always-on background workers, backed by one Aura database per workspace. Everything the agent needs — extraction and embedding pipelines, background compression of stale context — happens behind that interface, so the agent never touches raw database internals.
Why LLM agents need persistent memory
Context windows only get you so far. The default trick — stuffing conversation transcripts or salient text into an LLM's fixed context — breaks as soon as context grows long, facts contradict, or continuity gets fuzzy. The standard memory hacks all share the flaw:
- Append N-turn transcripts ("here is what you just saw…")
- Use cosine similarity to retrieve "relevant" snippets
- Stitch results together with prompt glue
All of these are band-aids around a fundamental limitation: when memory is ephemeral, the agent cannot maintain a persistent worldview. Every user repeats context endlessly. Contradictory statements are not resolved, just overstuffed into a fixed window. Retrieved "relevant" facts are bare text, divorced from logical structure — they do not help the agent reason over relationships.
Concrete symptoms show up everywhere: a code assistant that forgets refactored functions between sessions, a support agent that repeats onboarding because user traits were never retained, a research agent that re-derives the same conclusions weekly. If you have built agents with real users, you have met every one of these — and you know the failure mode that forgetting past context creates for agent reliability.
NAMS addresses this by making every memory — short-term, long-term, and step-wise — part of a graph-backed persistent model. Instead of wrangling loose text, the agent queries structured entities and relationships: deduplicated, vector-indexed, and retrievable across time and sessions. Retrieval returns connected nodes — conversational turns, entities, past reasoning steps — ranked by contextual relevance, not just recency or similarity score.
11 production screens. Login, database, payments — all wired.
The SaaS Dashboard Kit ships everything already connected. Nothing to set up. Live demo at saas.otf-kit.dev.
The primitives that matter, and why each earns its place
NAMS covers six primitives, and each one maps to a failure mode that hand-rolled memory gets wrong:
- Storage: all agent interactions, facts, and reasoning steps land in the graph, so nothing the agent learned is silently dropped.
- Entity extraction: inputs are parsed into entities and relationships, which is what turns "Alex Smith upgraded to premium" from a sentence into a queryable fact attached to a customer node.
- Deduplication: redundant or repeated facts merge automatically instead of accumulating as contradictions.
- Embedding: texts are embedded and indexed for vector search alongside the graph structure, so retrieval combines semantic similarity with relational context.
- Compression: old and excess context is background-compressed into persistent summaries, so the memory budget stays bounded without amnesia.
- Retrieval: one call returns what is contextually relevant across conversation, extracted knowledge, and process history.
The honest caveat, stated by the vendor: Labs status means features, pipelines, and endpoints may evolve rapidly, and early users are effectively beta-testing live. Evaluate NAMS as a foundation to prototype against — with the escape hatch of Aura itself underneath — not as a frozen dependency. That is also why agent teams should keep their prompt and context discipline rigorous: structured memory amplifies good agent instructions far more than it rescues bad ones.
Where graph memory fits in a production stack
Persistent memory is one layer in an agent system that also needs background execution, deployment, and evaluation. Memory answers "what does the agent know"; you still need answers for "what does the agent do while nobody watches" and "how does any of this reach users." Teams prototyping with NAMS should pair it early with a real deployment path — the discipline of shipping to production in one command applies to agent backends just as much as to front ends, because a memory layer you cannot operate is a demo, not infrastructure.
The strategic read: knowledge graphs were always the right structure for agent memory — entities, relationships, and history are inherently graph-shaped — and what was missing was a managed service that hid the operational burden. NAMS is Neo4j's attempt to be that service, with vector indexes covering the semantic side and the graph covering the relational side. Whether it graduates from Labs to a flagship product will depend on exactly what Labs projects always depend on: whether builders show up, push it hard, and report back.
If you build agents, that is an invitation worth accepting. Set up a workspace, point a test agent at it, and watch what changes when your agent stops waking up with amnesia. Then put the whole thing — agent, memory, and app — on infrastructure you can actually operate, starting from the production-ready kits.
Sources
- A Tour of the Neo4j Agent Memory Service (NAMS) — official Neo4j walkthrough
- Neo4j Labs — experimental projects program
- NAMS console and documentation
Ship the product, not the setup.
- 11 production screens — auth, billing, team, analytics, settings
- Real database, payments, and login — all wired on day 1
- AI configs pre-tuned so your agent extends instead of regenerates