This is an early release preview. You may encounter bugs.
Agent Memory logo
Unclaimed

Tool memory

Agent Memory

neo4j-labs/agent-memory gives agents three memory layers in one graph: conversation histo...

B 72/100 GitHub score ? This grade is derived from GitHub signals, not user votes. Open for the full breakdown.
No votes yet

01 / About

What Agent Memory is.

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

02 / Discussion CREDIBILITY-GATED

Discussion

Reading is open to everyone. Posting and voting need a verified identity or a GitHub grade of B or higher.

  • No discussions yet.

04 / Build

Build with Agent Memory.

Browse the catalogue for frameworks, tools, and harnesses, each scored on real GitHub credibility.

Get Agent Memory →

Browse the catalogue