Memory for AI agents

One self-hosted service your agents search by meaning, over REST, MCP, OAuth or the CLI.

recallexample data
>
    5 ms
    local read latency
    86%
    LongMemEval R@5, session mode
    4,639
    tests
    25+
    AI apps supported
    Every memory is a node, every relationship an edge. Recall works by meaning, not keywords.
    See it in 50 seconds: store, retrieve, link and consolidate. Narrated with a local text-to-speech model.

    What's new in v12.0

    75 commits since the previous release, 4,639 tests.

    • Sync

      Self-hosted sync hub

      A hybrid client can now use another mcp-memory-service instance as its secondary over HTTP, with no Cloudflare credentials. MCP_HYBRID_SECONDARY_BACKEND=http selects it, and an embedding-model check fails closed on a mismatch. See the operator guide.

    • Delta-sync

      Event-log sync between hosts

      Mutations are recorded as ordered events with a hybrid logical clock, pulled and pushed over /api/sync/events, and a new spoke can bootstrap from a peer's current state instead of reprocessing the corpus.

    • Breaking default

      Search summaries need operator opt-in

      Configuring a Harvest LLM provider no longer turns on memory_search summarization. Set MCP_SEARCH_SUMMARIZE_ENABLED=true to keep it. Also new: an opt-in Prometheus /metrics endpoint, concentric-ring graph layout, and PyMilvus 3.x support.

    Full release notes for v12.0.0

    One service, three ways in

    Agents on your machine talk to it over stdio, frameworks over REST, and browser chat apps over Remote MCP with OAuth 2.1.

    Terminal and IDE agentsClaude Code, Codex CLI, Cursor, OpenCode
    Local MCPstdio, on your machine
    Agent frameworksLangGraph, CrewAI, AutoGen, any HTTP client
    REST APIHTTP with API key or OAuth
    Browser chatclaude.ai, ChatGPT (Developer Mode)
    Remote MCPStreamable HTTP, OAuth 2.1 + PKCE
    Memory service Search by meaning, knowledge graph, consolidation SQLite-vec, Cloudflare or Hybrid storage

    The underlined lane is the one that crosses the network with OAuth. Local MCP is a process on your machine, with no network hop.

    In the wild

    Three deployments people built and run themselves.

    "After I work with one of the cluster agents on something I want my local agent to know about, the cluster agent adds a special tag to the memory entry that my local agent recognizes as a message from a cluster agent. So they end up using it as a comms bridge, and it's pretty delightful."
    @jeremykoerber

    A five-agent cluster uses one memory service as shared state and as an inter-agent channel, with no custom protocol: cluster agents write a sentinel tag, the local agent filters on it. The pattern

    "File-based memory demands constant discipline. Semantic recall from a live database doesn't. Storing data on my own hardware while making it remotely accessible across platforms turned out to be a feature I didn't know I needed."
    @PL-Peter

    Two Docker containers on one SQLite backend, a Cloudflare tunnel for name-based routing, and an auth gateway in front. The checklist

    "Claude Code, Claude Desktop, Codex CLI and OpenCode all talk to the same sqlite-vec DB over stdio on my Mac. ~5,900 memories and counting. It's the closest thing to persistent identity my agents have."
    Mingjian Shao, AI PM and consultant, September 2026

    One local sqlite-vec database shared by four agents: no server, no cloud, offline embeddings, daily backups and scheduled consolidation.

    How it compares

    Against the commercial memory APIs and the MCP-native alternatives.

    Commercial memory APIs

    mcp-memory-serviceMem0ZepDIY Redis+Pinecone
    LicenseApache 2.0ProprietaryEnterprise—
    Cost$0Per-call APIEnterpriseInfra costs
    claude.ai browserRemote MCPDesktop onlyDesktop onlyNo
    OAuth 2.0 + DCRYesUnknownUnknownNo
    Streamable HTTPYes (SSE too)NoNoNo
    Framework integrationREST, any HTTP clientSDKSDKManual
    Knowledge graphYes, typed edgesNoLimitedNo
    Auto consolidationYes, decay + compressionNoNoNo
    On-premise embeddingsYes, ONNX localNoNoManual
    Privacy100% localCloudCloudPartial
    Hybrid searchYes, BM25 + vectorNoYesManual
    MCP protocolYesNoNoNo

    MCP-native: MemPalace

    mcp-memory-serviceMemPalace
    LongMemEval R@5 (raw ChromaDB, zero LLM)86.0% session / 80.4% turn96.6%1
    LongMemEval R@5 (with reranking)—100%2
    Storage granularityTurn-level and session-levelSession-level
    Team / multi-device syncCloudflare syncLocal only
    REST API / web dashboardYesNo
    OAuth 2.1 + multi-userYesNo
    Knowledge graphYes, typed edgesNo
    Auto consolidationYes, decay + compressionNo
    LicenseApache 2.0MIT

    Why the benchmark gap? MemPalace stores whole sessions as single units, and LongMemEval asks which session contains the answer, so that granularity answers the question structurally. This service defaults to turn-level storage for finer retrieval; session-mode ingestion brings it to 86.0% R@5.
    1 Measured in MemPalace "raw mode": plain text in ChromaDB with default embeddings. Per Issue #27, the Palace structural features are bypassed in that configuration, and the maintainers acknowledged most of the review's points.
    2 Uses optional LLM reranking (~500 API calls) on a partially tuned test set. Clean held-out score as reported by the maintainers: 98.4% R@5.
    Full numbers and the run commands: docs/BENCHMARKS.md

    SHODH ecosystem

    Fully compatible with the SHODH Unified Memory API Specification: every SHODH implementation shares the same memory schema (emotional metadata, episodic memory, source tracking, quality scoring), so memories export and import across implementations with full fidelity. The reference implementation is shodh-memory (RocksDB); shodh-cloudflare runs on Workers + Vectorize; this service runs SQLite-vec or Hybrid.

    In the media

    Talks and coverage from the community.

    • Heavybit, Humans in the Loop
      Agents Overdrawn at the Memory Bank

      A deep dive with maintainer Heinrich Krupp on agent amnesia and why persistent memory is the missing infrastructure layer for agentic systems.

    • AI Tinkerers Zürich
      Talk by Heinrich Krupp · full video

      Persistent memory architecture, semantic search, and multi-agent memory sharing.

    • LinkedIn, Dr. Álvaro Cintas
      Solving session amnesia

      How mcp-memory-service gives Claude Code, Cursor and OpenCode a shared memory over MCP, with on-device ONNX embeddings and no external API calls.

    "Your project has inspired me in many ways. In my view, it's the best implementation of MCP memory I've found so far." — Michał Zubkowicz

    Get started in seconds

    Install from PyPI and connect your agents to persistent memory.

    Deploying for a team?I help teams run self-hosted memory in production: OAuth, hybrid sync, multi-client rollout. Free 30-minute intro call.

    Get in touch