Neo4j Agent Memory is a memory system for single- and multi-agent applications that stores three kinds of memory in one property graph. Short-term memory holds conversations and messages, scoped per session and searchable by vector and text. Long-term memory holds entities, preferences, and facts as a knowledge graph classified with the POLE+O model, with entity resolution, deduplication, and temporal fact validity. Reasoning memory records traces of tool calls and decisions so an agent can retrieve how it solved a similar task before.
Agents share the entity, preference, and fact nodes while conversations and reasoning traces stay separated by session or by a multi-tenant user identifier, so several agents — including ones written in different languages — read and write the same memory graph. Two SDKs, Python and TypeScript, implement the same memory model and are versioned independently, with cross-language behaviour enforced by a separate conformance suite.
Two backends sit behind the same MemoryClient API. The hosted NAMS service needs no database and runs embedding and entity extraction server-side, asynchronously. Pointing the client at your own Neo4j instance over bolt instead unlocks write-Cypher access, geospatial queries, adopting an existing production graph as long-term memory, and air-gapped operation. Entity extraction is multi-stage — spaCy, GLiNER, and an LLM — with relationship extraction through GLiREL and optional background enrichment from Wikipedia or Diffbot.
Models are configurable rather than fixed: MemorySettings.embedding and MemorySettings.llm accept a provider-prefixed string or a provider instance, with native adapters for OpenAI, Anthropic, Bedrock, Vertex AI, and sentence-transformers, and a LiteLLM fallback covering further providers. An air-gapped configuration can run with no LLM at all, using local sentence-transformers with spaCy or GLiNER. The project is published by Neo4j Labs as experimental and community supported, and requires Python 3.10+ and Neo4j 5.20+.
Features
- Three memory layers: conversations, a knowledge graph of entities and facts, and reasoning traces, connected in one graph
- Shared graph, scoped sessions: agents share entities and preferences while conversations and traces stay per session or per tenant
- Two SDKs: Python and TypeScript against the same memory model, with a cross-language conformance suite
- Hosted or self-hosted: the NAMS service with an API key, or your own Neo4j over bolt for Cypher, geospatial, and air-gapped use
- Entity extraction: multi-stage spaCy, GLiNER, and LLM extraction plus GLiREL relationships and Wikipedia or Diffbot enrichment
- MCP server: 16 tools by default, or a 6-tool core profile, over stdio or SSE transports
- Framework integrations: LangChain, Pydantic AI, Google ADK, Strands, CrewAI, LlamaIndex, OpenAI Agents, and Microsoft Agent
- Provider choice: native adapters for OpenAI, Anthropic, Bedrock, Vertex AI, and sentence-transformers, with a LiteLLM fallback
- Production primitives: adopting an existing graph, buffered fire-and-forget writes, entity deduplication, an eval harness, and :TOUCHED audit edges
- Scaffolding: create-context-graph generates a full-stack project with a FastAPI backend, Next.js frontend, and the memory layer preconfigured
Integrates with
Agent Development Kit (ADK)
Google's open-source SDK for building, evaluating and deploying multi-agent systems.
Claude Code
Terminal-based agentic coding tool that reads your codebase and runs tasks through natural-language commands
CrewAI
Python multi-agent framework pairing autonomous role-based Crews with event-driven Flows for precise orchestration
LangChain
Framework for building LLM applications and agents from interoperable components and a large integrations library
