<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: gregor</title>
    <description>The latest articles on DEV Community by gregor (@plur9).</description>
    <link>https://dev.to/plur9</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3849560%2Fba4d90a4-9ae4-4131-a919-4af0f270ba30.png</url>
      <title>DEV Community: gregor</title>
      <link>https://dev.to/plur9</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/plur9"/>
    <language>en</language>
    <item>
      <title>Do You Still Need an Agent Memory Layer if ChatGPT Already Has Memory?</title>
      <dc:creator>gregor</dc:creator>
      <pubDate>Wed, 22 Jul 2026 10:11:28 +0000</pubDate>
      <link>https://dev.to/plur9/do-you-still-need-an-agent-memory-layer-if-chatgpt-already-has-memory-1jia</link>
      <guid>https://dev.to/plur9/do-you-still-need-an-agent-memory-layer-if-chatgpt-already-has-memory-1jia</guid>
      <description>&lt;h1&gt;
  
  
  Do You Still Need an Agent Memory Layer if ChatGPT Already Has Memory?
&lt;/h1&gt;

&lt;p&gt;Yes — for a reason that becomes clear once you separate two different jobs. ChatGPT memory, Claude Projects, and Gemini's built-in memory solve a conversational recall problem: they remember what you told the model inside its own interface. An agent memory layer (Mem0, Zep, Letta, PLUR) solves a programmatic recall problem: it stores facts inside your application, accessible from your code, portable across every tool your agent uses. These systems serve different jobs and work best together.&lt;/p&gt;




&lt;h2&gt;
  
  
  What model-native memory does (and where it stops)
&lt;/h2&gt;

&lt;p&gt;As of 2026, the major model providers ship built-in memory in two forms.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ChatGPT&lt;/strong&gt; has "saved memories" — an explicit, user-editable list of facts that ChatGPT chose to remember across conversations — and "reference chat history" (launched April 2025), which implicitly draws on patterns from past chats. Saved memories are auditable: you can open Settings → Personalization → Manage memory and see exactly what is stored. Reference chat history is not auditable — you cannot see what it has inferred. ChatGPT Projects adds a Project Memory scope that captures facts within a specific project workspace, isolated from other projects and from main chat.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Projects&lt;/strong&gt; maintains a project-level instruction set and uploaded file context, scoped per project, persisting across all conversations in that project. Unlike ChatGPT's saved memories, Claude Projects does not automatically extract facts from conversations — knowledge is added explicitly via the instruction set or uploaded files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemini&lt;/strong&gt; offers workspace-scoped memory through Gemini Apps Activity, manageable through your Google Account privacy dashboard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The common constraint:&lt;/strong&gt; all of these live inside the model provider's servers, scoped to the model's own interface. They do not follow your agents into code.&lt;/p&gt;

&lt;p&gt;When your Claude Code session ends, Claude's project memory does not inject into your next Cursor session. When ChatGPT remembers you prefer Python, your custom CLI agent does not know that. Model-native memory exists in one silo, per provider, per interface.&lt;/p&gt;

&lt;p&gt;Source: &lt;a href="https://gptprompts.ai/chatgpt-memory-guide" rel="noopener noreferrer"&gt;ChatGPT Memory Guide 2026&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What an agent memory layer adds
&lt;/h2&gt;

&lt;p&gt;An agent memory layer runs in your application, not the model provider's server. It gives you four things model-native memory cannot:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Portability.&lt;/strong&gt; The memory store is a resource your code owns. If you switch from Claude to GPT-4o, or from Cursor to a custom CLI, the memory follows automatically — no migration, no re-learning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Programmatic read/write.&lt;/strong&gt; Your code can store a fact at runtime (&lt;code&gt;plur_learn&lt;/code&gt;, &lt;code&gt;mem0.add&lt;/code&gt;), retrieve it on the next run (&lt;code&gt;plur_recall&lt;/code&gt;, &lt;code&gt;mem0.search&lt;/code&gt;), and update or delete it via API. Model-native memory cannot be written to by your code — only the model and the user can modify it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Auditability.&lt;/strong&gt; With file-based memory systems like PLUR, you can open the store with a text editor, &lt;code&gt;grep&lt;/code&gt; for specific facts, and see exactly what the agent knows and when it learned each item. With vector-based stores like Mem0, you can query the API. With model-native memory, you are limited to what the provider's UI exposes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deletion control.&lt;/strong&gt; You can implement right-to-be-forgotten policies, purge all facts about a specific user, or wipe session state programmatically. Model-native memory deletion goes through the provider's interface, not your code.&lt;/p&gt;

&lt;p&gt;Source: &lt;a href="https://fountaincity.tech/resources/blog/how-to-build-and-operate-ai-agent-memory-in-2026/" rel="noopener noreferrer"&gt;How to Build AI Agent Memory in 2026&lt;/a&gt;, &lt;a href="https://www.graphlit.com/blog/survey-of-ai-agent-memory-frameworks" rel="noopener noreferrer"&gt;AI Agent Memory Frameworks in 2026&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The complement frame: different jobs, use both
&lt;/h2&gt;

&lt;p&gt;Model-native memory is useful for: "Remember I prefer Python over JavaScript" — a conversational preference stored in the model's own interface, useful when you are talking directly to ChatGPT or Claude.&lt;/p&gt;

&lt;p&gt;Agent memory is useful for: "Remember the architecture decision we made last sprint, the user's confirmed preferences across three tools, and the intermediate results from yesterday's research loop" — operational knowledge your code needs to function, across tools, overnight, in pipelines.&lt;/p&gt;

&lt;p&gt;The right setup for most production agent deployments: use model-native memory for its intended purpose (conversational recall in the model's own interface), and add an agent memory layer for programmatic recall in your code.&lt;/p&gt;




&lt;h2&gt;
  
  
  PLUR as the cross-tool layer
&lt;/h2&gt;

&lt;p&gt;PLUR stores memories as open-format engrams in a local directory (&lt;code&gt;~/.plur/&lt;/code&gt;). Any MCP-compatible tool — Claude Code, Cursor, Hermes, OpenClaw, or a custom CLI — reads and writes the same directory without additional configuration. When you switch between tools, the memory follows automatically.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install once — works across all your MCP-compatible tools&lt;/span&gt;
npx @plur-ai/mcp init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From any session, &lt;code&gt;plur_recall&lt;/code&gt; queries the store; &lt;code&gt;plur_learn&lt;/code&gt; adds to it. The same &lt;code&gt;~/.plur/&lt;/code&gt; directory is shared. This is the portability that model-native memory cannot provide: one memory store, every tool.&lt;/p&gt;




&lt;h2&gt;
  
  
  Summary table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Model-native memory&lt;/th&gt;
&lt;th&gt;Agent memory layer (e.g. PLUR)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Where it lives&lt;/td&gt;
&lt;td&gt;Model provider's server&lt;/td&gt;
&lt;td&gt;Your application / local directory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scope&lt;/td&gt;
&lt;td&gt;That model's interface only&lt;/td&gt;
&lt;td&gt;Any tool that speaks MCP or the API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Set by&lt;/td&gt;
&lt;td&gt;User + model (conversational)&lt;/td&gt;
&lt;td&gt;Your code (programmatic)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Read by your code&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cross-tool portable&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auditable in full&lt;/td&gt;
&lt;td&gt;Partially (saved memories only)&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deletion via your code&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Works without a chat interface&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Do I still need an agent memory layer if ChatGPT already has memory?&lt;/strong&gt;&lt;br&gt;
Yes, if you are building agents in code. ChatGPT memory is scoped to the ChatGPT interface — it does not follow your agents into Cursor, Claude Code, a custom CLI, or overnight pipelines. An agent memory layer stores facts in your application, accessible from any tool that queries it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the difference between model memory and agent memory?&lt;/strong&gt;&lt;br&gt;
Model memory (ChatGPT saved memories, Claude Projects, Gemini) is conversational memory stored on the model provider's server, accessible only through that model's interface. Agent memory is operational memory stored in your application, accessible by your code, portable across tools. The same agent can use both: model memory for interface-level recall, agent memory for cross-session and cross-tool recall.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How does Claude Projects memory compare to agent memory?&lt;/strong&gt;&lt;br&gt;
Claude Projects memory captures facts within a project session and persists them for future sessions in that project. It is scoped to Anthropic's interface and cannot be read or written by external code. Agent memory (Mem0, PLUR, Zep) is stored in your application and is accessible from any code that calls the memory API — including code running outside any Claude interface.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I use agent memory alongside a model's built-in memory?&lt;/strong&gt;&lt;br&gt;
Yes, and this is the recommended approach. Use model-native memory for conversational recall within that model's interface. Use agent memory for facts your code needs to access, persist across tools, or control programmatically. The two stores do not conflict — they serve different retrieval paths.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ChatGPT vs Mem0 vs PLUR — what should I use for AI memory?&lt;/strong&gt;&lt;br&gt;
These are not direct alternatives. ChatGPT memory serves the ChatGPT web interface. Mem0 and PLUR are agent memory layers for use in code. If you are building agents: Mem0 for general personalization, PLUR if you need cross-tool portability and open-format storage. Use ChatGPT memory in addition to — not instead of — a dedicated agent memory layer.&lt;/p&gt;




&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://gptprompts.ai/chatgpt-memory-guide" rel="noopener noreferrer"&gt;ChatGPT Memory: Complete Guide for 2026&lt;/a&gt; — gptprompts.ai&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.graphlit.com/blog/survey-of-ai-agent-memory-frameworks" rel="noopener noreferrer"&gt;AI Agent Memory Frameworks in 2026: Memory vs. Context&lt;/a&gt; — Graphlit Blog&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://fountaincity.tech/resources/blog/how-to-build-and-operate-ai-agent-memory-in-2026/" rel="noopener noreferrer"&gt;How to Build AI Agent Memory in 2026&lt;/a&gt; — Fountain City&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.mayhemcode.com/2026/07/ai-memory-problem-2026-risks-in-chatgpt.html" rel="noopener noreferrer"&gt;AI Memory Problem 2026: Risks in ChatGPT, Claude, Gemini&lt;/a&gt; — MayhemCode&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/plur-ai/plur" rel="noopener noreferrer"&gt;PLUR open-format engram memory&lt;/a&gt; — GitHub&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>memory</category>
    </item>
    <item>
      <title>Best Tools for Giving AI Agents Long-Term Memory (2026)</title>
      <dc:creator>gregor</dc:creator>
      <pubDate>Tue, 21 Jul 2026 11:21:03 +0000</pubDate>
      <link>https://dev.to/plur9/best-tools-for-giving-ai-agents-long-term-memory-2026-5gh4</link>
      <guid>https://dev.to/plur9/best-tools-for-giving-ai-agents-long-term-memory-2026-5gh4</guid>
      <description>&lt;h1&gt;
  
  
  Best Tools for Giving AI Agents Long-Term Memory (2026)
&lt;/h1&gt;

&lt;p&gt;AI agents lose everything when a session ends. If your agent is rebuilding task state from scratch on every run, re-explaining user preferences to each tool, or contradicting decisions from last week, you need a dedicated memory layer — not a larger context window. The leading options in 2026 are Mem0, Zep, Letta, LangMem, and PLUR. Each targets a different retrieval pattern: Mem0 for general personalization, Zep for temporal reasoning, Letta for autonomous agents that manage their own memory, LangMem for LangGraph-native projects, and PLUR for cross-tool portability via the open engram format.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why context windows are not enough
&lt;/h2&gt;

&lt;p&gt;Every agent framework gives your agent a context window. When the session closes, that window clears. For agents that interact with the same user across days or weeks — or for multi-agent pipelines where one agent passes state to another — you need a mechanism that extracts the facts that matter, stores them durably, and retrieves them later with high precision.&lt;/p&gt;

&lt;p&gt;That is what a dedicated memory layer does. It sits between your agent and its long-term store, handling extraction, indexing, retrieval scoring, and (where supported) forgetting.&lt;/p&gt;




&lt;h2&gt;
  
  
  The leading tools
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Mem0
&lt;/h3&gt;

&lt;p&gt;Mem0 is the most widely adopted agent memory platform in 2026, with 48,000+ GitHub stars. It combines vector search, a knowledge graph, and key-value storage, with automatic memory extraction built in. The architecture handles the most common case: a user-facing application that needs to remember preferences, past interactions, and learned facts without the developer writing extraction logic by hand.&lt;/p&gt;

&lt;p&gt;On the LongMemEval benchmark — the current standard stress test for agent memory — Mem0 scores 49.0% with GPT-4o. That is a solid general-purpose result. Mem0 offers both a hosted API and a self-hosted path via the open-source repo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; teams starting out, personalization-heavy applications, the largest community and ecosystem.&lt;/p&gt;

&lt;h3&gt;
  
  
  Zep / Graphiti
&lt;/h3&gt;

&lt;p&gt;Zep's Graphiti backend timestamps every fact in a knowledge graph, making it the strongest option when temporal relationships matter — e.g., "what did the user want last Tuesday versus today?" or "which goal is still active after three sessions?" On LongMemEval with GPT-4o, Zep scores 63.8%, currently the strongest reported result among managed services. The graph approach also makes it easier to reason over relationships between entities, not just over isolated facts.&lt;/p&gt;

&lt;p&gt;Graphiti is the open-source knowledge graph engine underneath Zep. You can run Graphiti self-hosted if you do not want a managed service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; agents that need to reason over how facts change over time, temporal retrieval, knowledge graph use cases.&lt;/p&gt;

&lt;h3&gt;
  
  
  Letta (formerly MemGPT)
&lt;/h3&gt;

&lt;p&gt;Letta treats agent memory like an operating system: main context is RAM, archival memory is disk, and the agent itself decides what to page in and out. This is a different philosophy from tools that abstract memory away from the agent — Letta gives the agent more autonomy over its own memory allocation, at the cost of more complex setup. Long-running agents that need to manage large, evolving knowledge bases tend to benefit most.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; autonomous agents with large knowledge bases, OS-style memory management, full self-hosting.&lt;/p&gt;

&lt;h3&gt;
  
  
  LangMem
&lt;/h3&gt;

&lt;p&gt;LangMem is the memory module from the LangChain team, designed to integrate tightly with LangGraph. If your agent is already on LangGraph, LangMem is the lowest-friction way to add persistent memory — it wires into the LangGraph state machine without a separate service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; LangGraph-native projects, teams already in the LangChain ecosystem.&lt;/p&gt;

&lt;h3&gt;
  
  
  PLUR
&lt;/h3&gt;

&lt;p&gt;PLUR stores memories as open-format engrams: structured assertions with confidence scores, domain tags, and decay curves. Each engram is a plain-text YAML entry in a local directory (&lt;code&gt;~/.plur/&lt;/code&gt;). Any tool that speaks MCP — Claude Code, Cursor, Copilot, Hermes, or a custom CLI — can read and write the same store without configuration changes per tool.&lt;/p&gt;

&lt;p&gt;The open engram format is PLUR's primary differentiator. When your memory store is a local file directory rather than a proprietary API, you get portability (move between tools without migration), inspectability (open any file with a text editor or &lt;code&gt;grep&lt;/code&gt;), and provable deletion (a &lt;code&gt;git diff&lt;/code&gt; shows what was removed and when). PLUR includes hybrid BM25 + embedding retrieval with Reciprocal Rank Fusion, confidence decay for stale memories, and pack-based memory sharing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; cross-tool portability, MCP ecosystem, open-format auditable memory, teams that need to share memory across multiple agents or tools.&lt;/p&gt;




&lt;h2&gt;
  
  
  Comparison table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Architecture&lt;/th&gt;
&lt;th&gt;Retrieval&lt;/th&gt;
&lt;th&gt;Self-hostable&lt;/th&gt;
&lt;th&gt;Open format&lt;/th&gt;
&lt;th&gt;Cross-tool&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mem0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Vector + graph + KV&lt;/td&gt;
&lt;td&gt;Semantic + graph&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Via API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Zep / Graphiti&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Temporal knowledge graph&lt;/td&gt;
&lt;td&gt;Graph + temporal&lt;/td&gt;
&lt;td&gt;Yes (Graphiti)&lt;/td&gt;
&lt;td&gt;Graphiti is open source&lt;/td&gt;
&lt;td&gt;Via API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Letta&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agent-managed memory blocks&lt;/td&gt;
&lt;td&gt;Agent-controlled paging&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Letta agents only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;LangMem&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;LangGraph state&lt;/td&gt;
&lt;td&gt;LangGraph-native&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;LangGraph only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PLUR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Open-format YAML engrams + hybrid search&lt;/td&gt;
&lt;td&gt;BM25 + embeddings (RRF)&lt;/td&gt;
&lt;td&gt;Yes (local default)&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Any MCP-compatible tool&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  How to choose
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Start with Mem0&lt;/strong&gt; if you need a general-purpose solution with the largest community and you're not constrained by format, hosting, or cross-tool requirements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Choose Zep&lt;/strong&gt; if your agent needs to reason about when facts were true — temporal retrieval is Zep's core strength.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Choose Letta&lt;/strong&gt; if you're building long-running autonomous agents that should manage their own context allocation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Choose LangMem&lt;/strong&gt; if you're already on LangGraph and want the lowest-friction integration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Choose PLUR&lt;/strong&gt; if your agents run across multiple tools (Claude Code + Cursor + Hermes, for example), if you need memory to be inspectable and provably deletable, or if open-standard interoperability matters to your deployment.&lt;/p&gt;

&lt;p&gt;Most production systems pair a dedicated memory platform with a vector store (Pinecone, Weaviate, or pgvector) for retrieval at scale — the memory tool handles extraction and scoring, the vector store handles indexing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quick start: PLUR
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install the MCP server&lt;/span&gt;
npx @plur-ai/mcp init

&lt;span class="c"&gt;# Add to Claude Code, Cursor, or any MCP-compatible tool&lt;/span&gt;
&lt;span class="c"&gt;# Memory is stored in ~/.plur/ — readable, portable, diffable&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From any MCP session, your agent can read and write engrams with &lt;code&gt;plur_recall_hybrid&lt;/code&gt; / &lt;code&gt;plur_learn&lt;/code&gt; (&lt;code&gt;plur_recall_hybrid&lt;/code&gt; is the recommended default — BM25 + embeddings merged via RRF). The same store is shared across all connected tools automatically.&lt;/p&gt;




&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What is the best open-source memory layer for LLM agents?&lt;/strong&gt;&lt;br&gt;
In 2026, Mem0 has the largest open-source community (47,000+ GitHub stars) and is the most commonly recommended starting point. Zep's Graphiti engine is the strongest option for temporal reasoning. PLUR is the best choice if you need memory to be portable across tools and stored in an open, auditable format.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I stop an AI agent from forgetting context between sessions?&lt;/strong&gt;&lt;br&gt;
Add a dedicated memory layer. The pattern: on session end, have the agent write key facts to the memory store; on session start, query the store for relevant context and inject it into the system prompt. All five tools above support this pattern with different levels of automation — Mem0 and PLUR offer the most out-of-the-box extraction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the difference between an agent memory layer and a vector store?&lt;/strong&gt;&lt;br&gt;
A vector store (Pinecone, pgvector, Weaviate) handles indexing and similarity search. An agent memory layer handles the higher-level workflow: deciding what to remember, extracting structured facts from conversations, scoring relevance, decaying stale memories, and handling deletion. Most production setups use both.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do agent memory tools work with any LLM?&lt;/strong&gt;&lt;br&gt;
Yes. Memory layers are model-agnostic — they store and retrieve text-based facts, which any LLM can consume. The LLM you use for extraction and retrieval scoring can differ from the LLM running your agent.&lt;/p&gt;




&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/agdex_ai/ai-agent-memory-in-2026-mem0-vs-zep-vs-letta-vs-cognee-a-practical-guide-cfa"&gt;AI Agent Memory in 2026: Mem0 vs Zep vs Letta vs Cognee — A Practical Guide&lt;/a&gt; — DEV Community&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.developersdigest.tech/blog/best-ai-agent-memory-providers-2026" rel="noopener noreferrer"&gt;Best AI Agent Memory Providers in 2026: Mem0 vs Zep vs Letta vs Cloudflare&lt;/a&gt; — Developers Digest&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://vectorize.io/articles/best-ai-agent-memory-systems" rel="noopener noreferrer"&gt;Best AI Agent Memory Systems in 2026: 8 Frameworks Compared&lt;/a&gt; — Vectorize&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://atlan.com/know/best-ai-agent-memory-frameworks-2026/" rel="noopener noreferrer"&gt;Best AI Agent Memory Frameworks in 2026: Compared and Ranked&lt;/a&gt; — Atlan&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/plur-ai/plur" rel="noopener noreferrer"&gt;PLUR open-format engram memory&lt;/a&gt; — GitHub&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>agents</category>
      <category>memory</category>
    </item>
    <item>
      <title>How Do I Make My AI Agent's Memory Editable and Auditable?</title>
      <dc:creator>gregor</dc:creator>
      <pubDate>Mon, 20 Jul 2026 11:52:22 +0000</pubDate>
      <link>https://dev.to/plur9/how-do-i-make-my-ai-agents-memory-editable-and-auditable-37aa</link>
      <guid>https://dev.to/plur9/how-do-i-make-my-ai-agents-memory-editable-and-auditable-37aa</guid>
      <description>&lt;h1&gt;
  
  
  How Do I Make My AI Agent's Memory Editable and Auditable?
&lt;/h1&gt;

&lt;p&gt;You ask your AI agent what it knows about you. It cannot tell you — not in a format you can read, not in a way you can verify, not in a way you can correct. The agent has been accumulating facts from every conversation: your preferences, your coding habits, your project decisions, maybe your health concerns or financial details. But the memory is a black box — stored in a vector embedding or an opaque agent state block, accessible only through the tool's API, if at all. You cannot open it in a text editor. You cannot diff it against last week. You cannot delete a single fact and prove it is gone. For a developer, this is a debugging nightmare. For a user, it is a privacy problem. For an enterprise, it is a compliance liability.&lt;/p&gt;

&lt;p&gt;The fix is memory that is &lt;strong&gt;editable and auditable by design&lt;/strong&gt; — stored in a format you can read, inspect, correct, and erase. Not all agent memory systems offer this. The distinction is not between open-source and proprietary; it is between &lt;strong&gt;open format&lt;/strong&gt; (human-readable, inspectable) and &lt;strong&gt;closed format&lt;/strong&gt; (opaque, API-only access).&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem: black-box memory
&lt;/h2&gt;

&lt;p&gt;Most agent memory systems store what the agent learns in one of three opaque formats:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Vector embeddings&lt;/strong&gt; — Text is converted to a high-dimensional vector and stored in a vector database. You cannot read the vector. You can query it ("find memories similar to X") but you cannot open it and see what the agent knows. Mem0, LangChain memory modules, and many RAG-based systems work this way.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Agent state blocks&lt;/strong&gt; — The agent's memory is stored as structured state in a database, managed through the agent's tool API. Letta (formerly MemGPT) stores core memories and archival memories this way. You can query it through the API, but you cannot open a file and read what the agent knows.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Knowledge graphs&lt;/strong&gt; — Facts are stored as entity-relationship triples in a graph database. Zep and Graphiti use this approach. More structured than vectors, but still requires graph queries to inspect — not something you can diff in git.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In all three cases, the memory is &lt;strong&gt;write-once, read-through-API&lt;/strong&gt;. You can add memories and search memories, but you cannot:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open a memory file and read what it says&lt;/li&gt;
&lt;li&gt;Correct a single fact without an API call&lt;/li&gt;
&lt;li&gt;Diff the memory store against a previous version&lt;/li&gt;
&lt;li&gt;Prove that a specific memory was deleted (you can delete it through the API, but you cannot prove erasure — the vector or graph node may persist in a backup)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is not a limitation of the tools; it is a consequence of the storage format. If the format is opaque, the memory is opaque.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Debugging
&lt;/h3&gt;

&lt;p&gt;When an agent makes a wrong decision, you need to know what memory it was operating on. Was it a stale fact? A misremembered preference? A correction that was not captured? If the memory is a vector embedding, you cannot inspect it — you can only re-query and hope the retrieval surfaces the same memory. If the memory is a human-readable YAML file, you can open it, read it, find the error, and fix it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Privacy and compliance
&lt;/h3&gt;

&lt;p&gt;The EU AI Act (Regulation 2024/1689, entered into force August 2024) requires transparency for high-risk AI systems — including the ability to understand and trace the system's outputs. GDPR Article 17 establishes the right to erasure: a data subject can request deletion of their personal data. If your agent's memory is a vector embedding, how do you prove erasure? You can delete the vector, but the text it was derived from may exist in backups, logs, or the model's training data. If the memory is a file, you can delete the file — and prove it with a git diff.&lt;/p&gt;

&lt;p&gt;A 2024 survey of LLM-based agent memory mechanisms (Zhang et al., "A Survey on the Memory Mechanism of Large Language Model based Agents," &lt;a href="https://arxiv.org/abs/2404.13501" rel="noopener noreferrer"&gt;arXiv:2404.13501&lt;/a&gt;) noted that memory transparency and control are emerging concerns: as agents accumulate personal data from interactions, the ability to inspect, correct, and delete that data becomes a requirement, not a nice-to-have.&lt;/p&gt;

&lt;h3&gt;
  
  
  Trust
&lt;/h3&gt;

&lt;p&gt;A user who cannot see what the agent knows cannot trust it. A developer who cannot inspect the memory store cannot debug it. An enterprise that cannot prove erasure cannot deploy it in regulated environments. Transparency is not a feature; it is a prerequisite for adoption at scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  What editable and auditable memory looks like
&lt;/h2&gt;

&lt;p&gt;An editable, auditable memory system has five properties:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Human-readable format
&lt;/h3&gt;

&lt;p&gt;Each memory is stored in a format you can read without an API. Plain text, YAML, JSON — something a developer can open in a text editor. The engram format (PLUR, &lt;a href="https://github.com/plur-ai/plur" rel="noopener noreferrer"&gt;github.com/plur-ai/plur&lt;/a&gt;) stores each memory as a YAML entry with an id, statement, type, domain, scope, confidence, provenance, and timestamps. You can open the file and read what the agent knows.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Inspectable
&lt;/h3&gt;

&lt;p&gt;You can list all memories, search them, and view any individual memory. Not through a vector similarity query — through a direct read. You can ask "what does the agent know about my coding preferences?" and get a list of specific, readable entries, not a cosine similarity score.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Correctable
&lt;/h3&gt;

&lt;p&gt;You can edit a memory in place. If the agent learned that you use Jest but you actually use Vitest, you can open the YAML file, change the statement, and save it. No retraining, no re-embedding, no API call. The next time the agent recalls that memory, it reads the corrected version.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Deletable with proof
&lt;/h3&gt;

&lt;p&gt;You can delete a single memory and prove it is gone. If the memory is a file, you delete the file and commit the deletion to git — the diff is your proof. If someone asks "did you delete the memory about X?", you can show the commit. This is not possible with vector embeddings, where deletion leaves no auditable trace.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Version-controllable
&lt;/h3&gt;

&lt;p&gt;Because each memory is a file, you can put the entire memory store under version control. You can see what the agent knew last week vs today. You can roll back to a previous state. You can branch and experiment. This is impossible with a vector database or an agent state block.&lt;/p&gt;

&lt;h2&gt;
  
  
  How existing tools handle inspection and deletion
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Format&lt;/th&gt;
&lt;th&gt;Inspect?&lt;/th&gt;
&lt;th&gt;Edit?&lt;/th&gt;
&lt;th&gt;Delete?&lt;/th&gt;
&lt;th&gt;Prove erasure?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mem0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Vector store&lt;/td&gt;
&lt;td&gt;Via API search&lt;/td&gt;
&lt;td&gt;Via API update&lt;/td&gt;
&lt;td&gt;Via API delete&lt;/td&gt;
&lt;td&gt;No (vector may persist in backups)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Letta&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agent state blocks&lt;/td&gt;
&lt;td&gt;Via API / visualizer&lt;/td&gt;
&lt;td&gt;Via API&lt;/td&gt;
&lt;td&gt;Via API&lt;/td&gt;
&lt;td&gt;No (state blocks in database)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Zep / Graphiti&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Temporal knowledge graph&lt;/td&gt;
&lt;td&gt;Via graph query&lt;/td&gt;
&lt;td&gt;Via graph update&lt;/td&gt;
&lt;td&gt;Via graph delete&lt;/td&gt;
&lt;td&gt;Partial (graph node removal, but temporal history persists)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cognee&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Graph + vector + relational&lt;/td&gt;
&lt;td&gt;Via API&lt;/td&gt;
&lt;td&gt;Via API&lt;/td&gt;
&lt;td&gt;Via API&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ChatGPT memory&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Proprietary&lt;/td&gt;
&lt;td&gt;Via settings UI&lt;/td&gt;
&lt;td&gt;Via settings UI&lt;/td&gt;
&lt;td&gt;Via settings UI&lt;/td&gt;
&lt;td&gt;No (opaque, no audit log)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Claude Code (CLAUDE.md)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Markdown file&lt;/td&gt;
&lt;td&gt;Yes (read file)&lt;/td&gt;
&lt;td&gt;Yes (edit file)&lt;/td&gt;
&lt;td&gt;Yes (delete line)&lt;/td&gt;
&lt;td&gt;Yes (git diff)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PLUR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;YAML files (open format)&lt;/td&gt;
&lt;td&gt;Yes (read file)&lt;/td&gt;
&lt;td&gt;Yes (edit file)&lt;/td&gt;
&lt;td&gt;Yes (delete entry)&lt;/td&gt;
&lt;td&gt;Yes (git diff)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The pattern is clear: &lt;strong&gt;file-based memory is auditable; database-based memory is not&lt;/strong&gt;. CLAUDE.md — Claude Code's built-in persistent instruction file — is the simplest form of editable, auditable memory: a markdown file you write, read, and edit. It is limited to static instructions, not accumulated knowledge. PLUR extends this principle to dynamic, agent-learned memories: each engram is a YAML entry with full provenance, stored in plain local files, editable in any text editor, and version-controllable in git.&lt;/p&gt;

&lt;h2&gt;
  
  
  The right-to-be-forgotten problem
&lt;/h2&gt;

&lt;p&gt;When a user asks you to delete what your AI agent knows about them, you need to do three things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Find all memories related to that user.&lt;/strong&gt; If memories are files, you can grep them. If they are vector embeddings, you need to query by similarity and hope you got them all.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delete those memories.&lt;/strong&gt; If memories are files, you delete the files. If they are vectors, you delete the vectors — but the source text may exist in logs, backups, or training data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prove erasure.&lt;/strong&gt; If memories are files under version control, the git diff is your audit trail. If they are vectors, you have no proof — you can show the delete API call succeeded, but you cannot prove no copy persists.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is why format matters more than license. An Apache-2.0 memory engine that stores memories in opaque vectors is open-source but not open-format. You can read the engine's source code, but you cannot read your own memories. PLUR's engram format (Apache-2.0, &lt;a href="https://plur.ai/spec.html" rel="noopener noreferrer"&gt;plur.ai/spec.html&lt;/a&gt;) is both: the engine is open-source and the memory format is human-readable YAML. You can read the code AND read the memories.&lt;/p&gt;

&lt;h2&gt;
  
  
  The MCP dimension
&lt;/h2&gt;

&lt;p&gt;The Model Context Protocol (&lt;a href="https://modelcontextprotocol.io/specification/2025-11-25" rel="noopener noreferrer"&gt;specification 2025-11-25&lt;/a&gt;) — an open protocol from Anthropic — standardizes how LLM applications connect to external tools. An MCP memory server exposes tools like &lt;code&gt;recall&lt;/code&gt;, &lt;code&gt;learn&lt;/code&gt;, &lt;code&gt;forget&lt;/code&gt;, and &lt;code&gt;feedback&lt;/code&gt; that any MCP-compatible agent can call. This means the same memory server works across Claude Code, Hermes, OpenClaw, Cursor, and any other MCP-compatible runtime.&lt;/p&gt;

&lt;p&gt;But MCP defines the transport, not the format. Two MCP memory servers can be fully protocol-compatible and store memory in completely different ways — one as a vector embedding, one as a YAML file. If auditability is your requirement, the format is the differentiator, not the protocol.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to choose
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;If you need…&lt;/th&gt;
&lt;th&gt;Start with&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Zero-setup memory for one agent (Claude Code)&lt;/td&gt;
&lt;td&gt;CLAUDE.md + auto memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Structured memory with a simple API, no infra&lt;/td&gt;
&lt;td&gt;Mem0 (cloud)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Self-managing stateful agent with memory tiers&lt;/td&gt;
&lt;td&gt;Letta&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Time-aware facts with sub-200ms retrieval&lt;/td&gt;
&lt;td&gt;Zep&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory you can inspect, correct, version-control, and prove erasure&lt;/td&gt;
&lt;td&gt;PLUR (YAML engrams via MCP)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The underlying question is: &lt;strong&gt;what do you need to own?&lt;/strong&gt; If you need to audit what your agent knows — for debugging, for compliance, for trust — you need memory in a format you can read, edit, and diff. That means files, not vectors. The license is secondary; the format is primary.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Can I see what my AI agent remembers about me?&lt;/strong&gt; It depends on the tool. ChatGPT shows memories in settings. Claude Code has CLAUDE.md (readable) and auto memory (less transparent). Memory engines like Mem0, Letta, and Zep expose memories through APIs. PLUR stores memories as YAML files you can open in any text editor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I delete a specific memory from my AI agent?&lt;/strong&gt; Each tool handles this differently. Mem0, Letta, and Zep offer delete APIs. ChatGPT lets you delete memories through the settings UI. PLUR lets you delete the YAML entry directly — and if the memory store is under git, the commit diff is your proof of erasure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I edit what my AI agent remembers without retraining?&lt;/strong&gt; Yes, if the memory is stored externally in an editable format. Fine-tuning bakes facts into model weights you cannot read or edit. External memory — whether in a vector store, knowledge graph, or YAML file — can be updated without retraining. But only file-based memory (CLAUDE.md, PLUR engrams) lets you edit memories in a text editor without an API call.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is agent memory subject to GDPR?&lt;/strong&gt; If the memory contains personal data about an identifiable individual, yes. GDPR Article 17 gives individuals the right to request erasure of their personal data. Agent memory systems that store personal data need a mechanism to find, delete, and prove erasure of that data. File-based memory makes this straightforward; vector-based memory makes it difficult to prove.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the difference between open-source and open-format memory?&lt;/strong&gt; Open-source means the engine's code is public (e.g., Apache-2.0). Open-format means the memory data itself is in a human-readable, standardized format (e.g., YAML). A project can be open-source but store memories in opaque vector embeddings — you can read the code but not your own memories. PLUR is both: the engine is Apache-2.0 and the memory format is human-readable YAML.&lt;/p&gt;




</description>
      <category>ai</category>
      <category>opensource</category>
      <category>memory</category>
    </item>
    <item>
      <title>Are AI Agent Engrams Open Source or Proprietary?</title>
      <dc:creator>gregor</dc:creator>
      <pubDate>Sun, 19 Jul 2026 21:22:44 +0000</pubDate>
      <link>https://dev.to/plur9/are-ai-agent-engrams-open-source-or-proprietary-58kh</link>
      <guid>https://dev.to/plur9/are-ai-agent-engrams-open-source-or-proprietary-58kh</guid>
      <description>&lt;h1&gt;
  
  
  Are AI Agent Engrams Open Source or Proprietary?
&lt;/h1&gt;

&lt;p&gt;The short answer: &lt;strong&gt;both, and the split matters.&lt;/strong&gt; The major agent-memory engines — Mem0, Letta, Cognee, Graphiti, LangMem, and PLUR — are all Apache-2.0 or MIT licensed on GitHub. But "open source" and "open format" are not the same thing. A project can ship under Apache-2.0 while storing your memories in opaque vector blobs you cannot read, edit, or export. The real question is not whether the &lt;em&gt;software&lt;/em&gt; is open — it usually is — but whether your &lt;em&gt;memories&lt;/em&gt; are.&lt;/p&gt;

&lt;p&gt;This distinction separates the field into three tiers: fully open (software + format + data you own), open-core (software is open, but the hosted memory is not portable), and fully proprietary (memory baked into a model provider's infrastructure, no export at all).&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this question exists
&lt;/h2&gt;

&lt;p&gt;AI agents face a brutal constraint: they forget. Every new session starts blank. Every context window overflows. The fix is persistent memory — but persistent where, and in whose format?&lt;/p&gt;

&lt;p&gt;The term "engram" comes from neuroscience. Richard Semon coined it in 1904 for the physical trace a memory leaves in biological tissue (Semon, 1904; cited in Wikipedia, "Engram (neuropsychology)"). Applied to AI agents, an engram is one discrete thing an agent has learned — a correction, a preference, a procedure — stored so it survives across sessions.&lt;/p&gt;

&lt;p&gt;The question "open source or proprietary?" asks two things at once:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Is the &lt;em&gt;engine&lt;/em&gt; that stores and retrieves engrams open source?&lt;/li&gt;
&lt;li&gt;Is the &lt;em&gt;format&lt;/em&gt; those engrams are stored in open — readable, editable, portable?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Conflating the two is how vendors end up with open-source repos and locked-in data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tier 1: Fully open — software, format, and data
&lt;/h2&gt;

&lt;p&gt;These projects ship under permissive licenses (Apache-2.0 or MIT) AND store memory in a format you can inspect, edit, and export.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Project&lt;/th&gt;
&lt;th&gt;License&lt;/th&gt;
&lt;th&gt;Stars (Jul 2026)&lt;/th&gt;
&lt;th&gt;Memory format&lt;/th&gt;
&lt;th&gt;Data ownership&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PLUR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Apache-2.0&lt;/td&gt;
&lt;td&gt;~215&lt;/td&gt;
&lt;td&gt;Human-readable YAML engrams&lt;/td&gt;
&lt;td&gt;Yours — plain files&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;PLUR stores each engram as a plain-text YAML entry — an &lt;code&gt;id&lt;/code&gt;, a &lt;code&gt;statement&lt;/code&gt;, a &lt;code&gt;type&lt;/code&gt;, a &lt;code&gt;domain&lt;/code&gt;, a &lt;code&gt;scope&lt;/code&gt;, a &lt;code&gt;confidence&lt;/code&gt;, and &lt;code&gt;provenance&lt;/code&gt; — in a file you can open in any editor, put under version control, and carry between machines. The format is published as an open specification, the Engram Specification (plur.ai/spec.html, Apache-2.0), and the implementation is Apache-2.0 on GitHub (github.com/plur-ai/plur).&lt;/p&gt;

&lt;p&gt;The tier is small but growing. The "engram" name itself is spreading fast: GitHub now hosts a dozen-plus young projects named engram, most of them early-stage local-first memory experiments. That crowding is the signal — "engram" is becoming the default word for a unit of agent memory. It is also why a published open specification matters: without one, every project that adopts the term defines it differently, and the word stops meaning anything portable.&lt;/p&gt;

&lt;p&gt;The common thread of Tier 1: you can read the memory, you can fix it, and you can prove you deleted it. That is only possible when the format is open, not just the engine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tier 2: Open-core — software is open, hosted memory is not
&lt;/h2&gt;

&lt;p&gt;These projects have open-source engines on GitHub under permissive licenses, but their hosted/cloud products store memory in formats that are not easily portable, and the commercial tier is where revenue lives.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Project&lt;/th&gt;
&lt;th&gt;License&lt;/th&gt;
&lt;th&gt;Stars (Jul 2026)&lt;/th&gt;
&lt;th&gt;Open format?&lt;/th&gt;
&lt;th&gt;Hosted tier&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mem0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Apache-2.0&lt;/td&gt;
&lt;td&gt;~60,500&lt;/td&gt;
&lt;td&gt;No — vector + graph store&lt;/td&gt;
&lt;td&gt;$19–$249/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Letta&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Apache-2.0&lt;/td&gt;
&lt;td&gt;~23,700&lt;/td&gt;
&lt;td&gt;Partial — agent state, not portable engrams&lt;/td&gt;
&lt;td&gt;$20/mo (Pro)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cognee&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Apache-2.0&lt;/td&gt;
&lt;td&gt;~27,400&lt;/td&gt;
&lt;td&gt;No — knowledge graph internals&lt;/td&gt;
&lt;td&gt;Self-host or cloud&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Graphiti&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Apache-2.0&lt;/td&gt;
&lt;td&gt;~28,500&lt;/td&gt;
&lt;td&gt;No — temporal knowledge graph&lt;/td&gt;
&lt;td&gt;Via Zep cloud&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;LangMem&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;MIT&lt;/td&gt;
&lt;td&gt;~1,500&lt;/td&gt;
&lt;td&gt;No — LangGraph storage layer&lt;/td&gt;
&lt;td&gt;Via LangSmith&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Mem0 is the clearest example. The repo (github.com/mem0ai/mem0) is Apache-2.0 with nearly 60,000 stars — you can self-host the engine. But Mem0's commercial product (mem0.ai) charges $19–$249/month for hosted memory with graph memory, audit logs, and on-prem deployment reserved for the Enterprise tier. The memory format under the hood is a vector store with entity linking — not a human-readable file you can diff.&lt;/p&gt;

&lt;p&gt;Letta (formerly MemGPT) is similarly split. The Letta SDK is Apache-2.0 on GitHub (github.com/letta-ai/letta, ~23,700 stars). The hosted "Constellation" platform — with managed state, remote environments, and an LLM gateway — requires an account. Free accounts support up to three agents with managed state; Pro is $20/month. Memory is stored as agent state (blocks of text managed by the agent), not as individual portable engrams you can export and edit.&lt;/p&gt;

&lt;p&gt;Graphiti (github.com/getzep/graphiti, ~28,500 stars) builds real-time knowledge graphs for agents under Apache-2.0, but its commercial path is through Zep's cloud platform.&lt;/p&gt;

&lt;p&gt;Cognee (github.com/topoteretes/cognee, ~27,400 stars) is an open-source AI memory platform using knowledge graphs, also Apache-2.0, with self-host or cloud options.&lt;/p&gt;

&lt;p&gt;The pattern: the engine is open, the data format is not. You can run the software, but the memories live in vector embeddings, knowledge graphs, or agent state blocks that are not designed to be read by humans or exported to a different system.&lt;/p&gt;

&lt;p&gt;This is not a criticism — open-core is a legitimate model. But it means "open source" answers the wrong question. The right question is: &lt;strong&gt;can I take my memories with me?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tier 3: Fully proprietary — memory baked into the model provider
&lt;/h2&gt;

&lt;p&gt;The third tier is memory that is neither open-source software nor an open format. It lives inside the model provider's infrastructure, and you cannot inspect, export, or port it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OpenAI's ChatGPT memory&lt;/strong&gt; is the canonical example. When ChatGPT "remembers" facts about you across conversations, those memories are stored in OpenAI's infrastructure. There is no open-source engine, no documented format, no export API. You can toggle memory on or off, and you can view and delete individual memories in the UI — but you cannot extract them in a structured format, run them locally, or feed them to a different model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anthropic's Claude memory tool&lt;/strong&gt; takes a similar approach. The memory tool is a feature of the Claude platform — agents can store and retrieve context — but the storage format, the retrieval mechanism, and the data itself are proprietary. There is no GitHub repo, no format spec, no portability guarantee. (Note the distinction: Claude Code's CLAUDE.md and auto-memory files are a separate, file-based mechanism — plain markdown on your own disk — and do not belong in this tier.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Google Gemini's context&lt;/strong&gt; operates the same way. Long-term context is managed inside Google's infrastructure with no documented open format.&lt;/p&gt;

&lt;p&gt;The risk here is not that these features are bad — they are convenient and often work well. The risk is &lt;strong&gt;vendor lock-in for your most personal data&lt;/strong&gt;. When your agent's accumulated knowledge about your preferences, projects, and workflow lives inside a single provider's black box, switching costs become prohibitive. You cannot audit what it knows. You cannot prove what it forgot. You cannot carry it elsewhere.&lt;/p&gt;

&lt;h2&gt;
  
  
  The real split: open engine vs open format
&lt;/h2&gt;

&lt;p&gt;Three tiers, but the meaningful boundary is between Tier 1 and everything else:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Tier 1 (Fully open)&lt;/th&gt;
&lt;th&gt;Tier 2 (Open-core)&lt;/th&gt;
&lt;th&gt;Tier 3 (Proprietary)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Engine open source?&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory format documented?&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data human-readable?&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No (vectors/graphs)&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Can edit individual memories?&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Via API only&lt;/td&gt;
&lt;td&gt;Via UI only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Can prove erasure?&lt;/td&gt;
&lt;td&gt;Yes (delete the entry; git diff as proof)&lt;/td&gt;
&lt;td&gt;Best-effort&lt;/td&gt;
&lt;td&gt;Best-effort&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Can export to another system?&lt;/td&gt;
&lt;td&gt;Yes (it's a file)&lt;/td&gt;
&lt;td&gt;No standard export&lt;/td&gt;
&lt;td&gt;No export&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Portable across model providers?&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The agents that need open memory most are the ones operating across multiple tools, models, and providers. An agent that uses Claude for analysis, GPT-4 for coding, and a local model for privacy needs a memory layer that is none of those — it needs a format that belongs to the operator, not the model.&lt;/p&gt;

&lt;p&gt;This is where the Model Context Protocol (MCP) enters. MCP (specification version 2025-11-25, modelcontextprotocol.io) is an open protocol — JSON-RPC 2.0 based, inspired by the Language Server Protocol — that standardizes how LLM applications connect to external data sources and tools. It is transport-level: it says how an agent talks to a memory server, not what format the memories are in. But it makes format-level openness newly relevant, because any MCP-compatible agent can now connect to any MCP-compatible memory server. The format question — can I read, edit, and port my memories? — becomes the differentiator.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to evaluate whether your agent's memory is open
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Is the engine on GitHub under a permissive license?&lt;/strong&gt; (Apache-2.0, MIT — not BSL, not "source-available")&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is the memory format documented?&lt;/strong&gt; Can you read the spec without signing up?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Can you open a memory file in a text editor and understand it?&lt;/strong&gt; Or is it an opaque vector?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Can you delete one memory and prove it is gone?&lt;/strong&gt; GDPR-grade erasure, not best-effort.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Can you export all memories and import them into a different system?&lt;/strong&gt; True portability.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Does the memory work across model providers?&lt;/strong&gt; Or is it locked to one vendor's infrastructure?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the answer to all six is yes, you are in Tier 1. If the engine is open but the format is not (questions 3–6 fail), you are in Tier 2. If there is no open engine at all, you are in Tier 3.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Are AI agent engrams open source?&lt;/strong&gt; The major engines are — Mem0, Letta, Cognee, Graphiti, LangMem, and PLUR all ship under Apache-2.0 or MIT. But the memory &lt;em&gt;format&lt;/em&gt; is often not open. Very few projects store memory in a human-readable, documented, portable format you can inspect and export — PLUR publishes its engram format as an open Apache-2.0 specification (plur.ai/spec.html) precisely so that "engram" stays an open, implementable thing rather than a vendor label.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the difference between open source and open format for AI memory?&lt;/strong&gt; Open source means the software engine is on GitHub under a permissive license. Open format means the memory data itself is stored in a documented, human-readable structure you can read, edit, and carry between systems. A project can be open source without being open format — most are.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I export my agent's memory from a proprietary system?&lt;/strong&gt; Generally, no. OpenAI's ChatGPT memory, Anthropic's Claude memory tool, and Google Gemini's context all store memory inside the provider's infrastructure with no structured export. You can view and delete memories in the UI, but you cannot extract them in a portable format.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What license is PLUR's engram format under?&lt;/strong&gt; Apache-2.0. The engram format is documented in the Engram Specification at plur.ai/spec.html and the implementation is at github.com/plur-ai/plur. Each engram is a YAML entry you can open, edit, and version-control.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is MCP an open standard for agent memory?&lt;/strong&gt; MCP is an open transport protocol (JSON-RPC 2.0, specification 2025-11-25) that standardizes how agents connect to external tools and data sources — including memory servers. It does not define a memory format. But it makes format-level openness more valuable, because any MCP-compatible agent can connect to any MCP-compatible memory server regardless of vendor.&lt;/p&gt;




</description>
      <category>ai</category>
      <category>opensource</category>
      <category>memory</category>
    </item>
    <item>
      <title>Is There an MCP Server for AI Agent Memory?</title>
      <dc:creator>gregor</dc:creator>
      <pubDate>Tue, 14 Jul 2026 11:46:01 +0000</pubDate>
      <link>https://dev.to/plur9/is-there-an-mcp-server-for-ai-agent-memory-4kmd</link>
      <guid>https://dev.to/plur9/is-there-an-mcp-server-for-ai-agent-memory-4kmd</guid>
      <description>&lt;h1&gt;
  
  
  Is There an MCP Server for AI Agent Memory?
&lt;/h1&gt;

&lt;p&gt;Yes. The Model Context Protocol (MCP) — an open protocol published by Anthropic in November 2024, specification version 2025-11-25 — standardizes how LLM applications connect to external tools and data sources, and several MCP servers exist specifically for agent memory. The official MCP servers repository includes a knowledge graph-based memory server (&lt;code&gt;@modelcontextprotocol/server-memory&lt;/code&gt;), and third-party memory servers — including PLUR, Zep, Mem0's OpenMemory, and community projects — expose persistent agent memory through the same protocol. The practical question is not whether an MCP memory server exists, but which one fits your needs, because "MCP-compatible" tells you the transport, not the memory format.&lt;/p&gt;

&lt;h2&gt;
  
  
  What MCP is (and what it is not)
&lt;/h2&gt;

&lt;p&gt;MCP is an open protocol built on JSON-RPC 2.0, inspired by the Language Server Protocol (LSP). Just as LSP standardized how editors connect to language servers (so any editor works with any language server), MCP standardizes how AI agents connect to external tools and data sources (so any agent works with any tool server). The protocol defines three things a server can offer: &lt;strong&gt;Resources&lt;/strong&gt; (context and data), &lt;strong&gt;Prompts&lt;/strong&gt; (templated messages), and &lt;strong&gt;Tools&lt;/strong&gt; (functions the AI can execute). A memory MCP server typically exposes tools — &lt;code&gt;store&lt;/code&gt;, &lt;code&gt;recall&lt;/code&gt;, &lt;code&gt;search&lt;/code&gt;, &lt;code&gt;learn&lt;/code&gt;, &lt;code&gt;forget&lt;/code&gt; — that the agent calls to manage what it remembers (modelcontextprotocol.io/specification/2025-11-25).&lt;/p&gt;

&lt;p&gt;What MCP does &lt;strong&gt;not&lt;/strong&gt; define is the memory format. It says how an agent talks to a memory server, not what the memories look like inside. This means two MCP memory servers can be fully protocol-compatible and store memory in completely different ways — one as a vector embedding, one as a human-readable YAML file. The protocol is open; the format is the differentiator.&lt;/p&gt;

&lt;h2&gt;
  
  
  Memory MCP servers available today
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Official MCP memory server (knowledge graph)
&lt;/h3&gt;

&lt;p&gt;The MCP servers repository (github.com/modelcontextprotocol/servers) ships a reference memory server: &lt;code&gt;@modelcontextprotocol/server-memory&lt;/code&gt;. It is a knowledge graph-based persistent memory system. You run it locally with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx &lt;span class="nt"&gt;-y&lt;/span&gt; @modelcontextprotocol/server-memory
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And configure it in your MCP client (Claude Desktop, Cursor, etc.) as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"memory"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@modelcontextprotocol/server-memory"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It stores entities, observations, and relations as a local knowledge graph. &lt;strong&gt;Good for&lt;/strong&gt;: lightweight, local-only memory for a single agent. &lt;strong&gt;Limitation&lt;/strong&gt;: the knowledge graph format is not human-readable YAML — you inspect it through the tool API, not a text editor — and it is designed for single-agent, single-machine use, not cross-runtime persistence.&lt;/p&gt;

&lt;h3&gt;
  
  
  PLUR (open engram format via MCP)
&lt;/h3&gt;

&lt;p&gt;PLUR (Apache-2.0, github.com/plur-ai/plur) ships an MCP server that exposes its engram engine. Each memory — an "engram" — is a human-readable YAML entry with an id, statement, type, domain, scope, confidence, and provenance. The MCP tools include &lt;code&gt;plur_learn&lt;/code&gt; (create an engram), &lt;code&gt;plur_recall&lt;/code&gt; (search by topic), &lt;code&gt;plur_inject&lt;/code&gt; (get relevant engrams for a task), &lt;code&gt;plur_forget&lt;/code&gt; (delete by id or query), and &lt;code&gt;plur_feedback&lt;/code&gt; (rate relevance to improve injection quality).&lt;/p&gt;

&lt;p&gt;Because it is MCP-compatible, the same memory follows an agent across Claude Code, Hermes, OpenClaw, Cursor, and any other MCP-compatible runtime. And because the format is plain-text YAML, you can open any engram in a text editor, put the memory store under version control, correct a single fact mid-conversation, and prove erasure by removing the entry — with the store under git, the diff is your audit trail.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good for&lt;/strong&gt;: agents that need portable, inspectable, correctable memory across multiple tools and model providers.&lt;br&gt;
&lt;strong&gt;Limitation&lt;/strong&gt;: newer project, less production-tested than the reference server at scale.&lt;/p&gt;

&lt;h3&gt;
  
  
  OpenMemory (Mem0's local MCP memory server)
&lt;/h3&gt;

&lt;p&gt;OpenMemory (mem0.ai/openmemory) is Mem0's official MCP memory server: a private, local memory layer that runs on your own machine and exposes standardized memory tools — &lt;code&gt;add_memories&lt;/code&gt;, &lt;code&gt;search_memory&lt;/code&gt;, &lt;code&gt;list_memories&lt;/code&gt;, &lt;code&gt;delete_all_memories&lt;/code&gt; — to any MCP-compatible client. Memories stay local; the same store is shared across every MCP client you connect to it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good for&lt;/strong&gt;: sharing one local memory store across multiple MCP clients with Mem0's simple CRUD model.&lt;br&gt;
&lt;strong&gt;Limitation&lt;/strong&gt;: storage is vector-based (a local database, inspected through the built-in UI or API) — not human-readable files you can open in a text editor or diff in git.&lt;/p&gt;

&lt;h3&gt;
  
  
  Zep (enterprise memory via MCP)
&lt;/h3&gt;

&lt;p&gt;Zep (docs.getzep.com) offers an MCP server for connecting coding agents to its agent memory platform. Zep builds a temporal knowledge graph from any input — chat, business data, documents — and serves prompt-ready context with sub-200ms retrieval. The MCP server exposes Zep's memory tools to any MCP-compatible agent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good for&lt;/strong&gt;: production agents that need time-aware, high-throughput memory at enterprise scale.&lt;br&gt;
&lt;strong&gt;Limitation&lt;/strong&gt;: Zep's memory format is a knowledge graph and Context Lake — not a human-readable file you can diff or version-control.&lt;/p&gt;

&lt;h3&gt;
  
  
  Community MCP memory servers
&lt;/h3&gt;

&lt;p&gt;The awesome-mcp-servers list (github.com/punkpeye/awesome-mcp-servers) catalogs dozens of community MCP servers, several with memory capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Forage&lt;/strong&gt; (isaac-levine/forage) — Self-improving tool discovery that persists tool knowledge across sessions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unclick&lt;/strong&gt; (malamut1973/unclick) — 450+ callable endpoints with persistent cross-session memory. &lt;code&gt;npx @unclick/mcp-server&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory Vault&lt;/strong&gt; (scotia1973-bot/api-hub) — 49 MCP tools with persistent agent memory (store/recall/search). &lt;code&gt;pip install gadgethumans-api-hub-mcp&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cortex&lt;/strong&gt; (gzoonet/cortex) — Local-first knowledge graph that extracts entities and relationships via LLMs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;pg-mnemosyne&lt;/strong&gt; (Janadasroor/pg-mnemosyne-mcp) — PostgreSQL-backed persistent super memory and multi-agent coordination hub.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These range from single-purpose utilities to full memory systems. The ecosystem is young and moving fast — verify current status before adopting.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to choose an MCP memory server
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;If you need…&lt;/th&gt;
&lt;th&gt;Start with&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A free, local, single-agent reference implementation&lt;/td&gt;
&lt;td&gt;&lt;code&gt;@modelcontextprotocol/server-memory&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One local vector-based memory store shared across MCP clients&lt;/td&gt;
&lt;td&gt;OpenMemory (Mem0)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enterprise-scale temporal memory with sub-200ms retrieval&lt;/td&gt;
&lt;td&gt;Zep's MCP server&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Human-readable, portable, correctable memory across runtimes&lt;/td&gt;
&lt;td&gt;PLUR's MCP server&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multi-agent shared memory in PostgreSQL&lt;/td&gt;
&lt;td&gt;pg-mnemosyne&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quick utility memory without infra&lt;/td&gt;
&lt;td&gt;Unclick or Memory Vault&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The underlying decision is the same one that runs through all of agent memory: &lt;strong&gt;what do you need to own?&lt;/strong&gt; If you need memory that is portable across agent runtimes, inspectable in a text editor, correctable mid-conversation, and provably erasable — the format matters more than the transport. MCP makes the transport open; the format is the differentiator.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is there an MCP server for AI agent memory?&lt;/strong&gt; Yes. The official MCP servers repository includes &lt;code&gt;@modelcontextprotocol/server-memory&lt;/code&gt; (a knowledge graph memory server). Third-party memory servers — PLUR, Zep, Mem0's OpenMemory, and several community projects — also expose agent memory through MCP. Any MCP-compatible agent (Claude Code, Cursor, Hermes, OpenClaw) can connect to any of them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the MCP memory server?&lt;/strong&gt; The reference implementation is &lt;code&gt;@modelcontextprotocol/server-memory&lt;/code&gt;, a knowledge graph-based persistent memory system. Run it with &lt;code&gt;npx -y @modelcontextprotocol/server-memory&lt;/code&gt; and configure it in your MCP client. It stores entities, observations, and relations as a local knowledge graph.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does MCP define a memory format?&lt;/strong&gt; No. MCP defines the transport (JSON-RPC 2.0) — how an agent talks to a memory server — but not what the memories look like inside. Two MCP memory servers can be fully protocol-compatible and store memory in completely different formats (vector embeddings vs human-readable YAML, for example). The format is the differentiator.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I use MCP memory with Claude Code?&lt;/strong&gt; Yes. Claude Code supports MCP servers. Add a memory server to your MCP configuration and Claude Code can call its tools — &lt;code&gt;store&lt;/code&gt;, &lt;code&gt;recall&lt;/code&gt;, &lt;code&gt;search&lt;/code&gt; — to persist and retrieve memory across sessions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the difference between MCP memory and CLAUDE.md?&lt;/strong&gt; CLAUDE.md is a static file of instructions you write, loaded at the start of every Claude Code session. An MCP memory server is a dynamic system the agent can call during a conversation — it stores, searches, updates, and forgets memory items programmatically. CLAUDE.md is the simplest form of persistent context; an MCP memory server is for structured, accumulating, queryable memory.&lt;/p&gt;




</description>
      <category>ai</category>
      <category>opensource</category>
      <category>memory</category>
    </item>
    <item>
      <title>Is Fine-Tuning or Memory Better for Teaching an AI New Facts?</title>
      <dc:creator>gregor</dc:creator>
      <pubDate>Mon, 13 Jul 2026 15:18:58 +0000</pubDate>
      <link>https://dev.to/plur9/is-fine-tuning-or-memory-better-for-teaching-an-ai-new-facts-4m78</link>
      <guid>https://dev.to/plur9/is-fine-tuning-or-memory-better-for-teaching-an-ai-new-facts-4m78</guid>
      <description>&lt;h1&gt;
  
  
  Is Fine-Tuning or Memory Better for Teaching an AI New Facts?
&lt;/h1&gt;

&lt;p&gt;Fine-tuning bakes new facts into a model's weights through gradient updates; agent memory stores them in an external layer the model reads at runtime. For teaching an AI agent new facts — user preferences, project decisions, domain knowledge that changes — external memory wins on four dimensions: it is cheaper to update (seconds vs hours of GPU compute), inspectable (you can see what the model "knows"), deletable (you can remove a fact without retraining), and portable (memories transfer across models; fine-tuned weights do not). Fine-tuning excels at changing &lt;em&gt;behavior&lt;/em&gt; — tone, format, style — but for storing &lt;em&gt;facts&lt;/em&gt; an agent must recall accurately and update on demand, a memory layer is the right tool. The hidden cost of fine-tuning for factual knowledge is what we call the &lt;strong&gt;parallel learning tax&lt;/strong&gt;: every new fact requires retraining the entire model, and every update to one fact risks degrading others through catastrophic forgetting.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pain: why fine-tuning for facts is expensive
&lt;/h2&gt;

&lt;p&gt;You taught your AI agent a new fact: the database moved from PostgreSQL to MySQL. Three problems follow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem 1: Retraining cost.&lt;/strong&gt; Fine-tuning is a compute-intensive process. You must prepare training data, run gradient descent on GPU clusters, evaluate the result, and deploy a new model checkpoint. For a single fact, that is absurd. For facts that change weekly — API endpoints, user preferences, project decisions — it is unsustainable. OpenAI's own documentation recommends prompt engineering and retrieval (RAG) as the first approaches for adding knowledge, reserving fine-tuning for cases where you need to customize model &lt;em&gt;behavior&lt;/em&gt; — tone, format, response structure — not for injecting facts (&lt;a href="https://developers.openai.com/api/docs/guides/model-optimization" rel="noopener noreferrer"&gt;developers.openai.com/api/docs/guides/model-optimization&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem 2: The unlearning problem.&lt;/strong&gt; When a fact changes or must be deleted — a user requests erasure under GDPR Article 17, or an API endpoint is deprecated — removing it from fine-tuned weights is notoriously difficult. Bourtoule et al. (&lt;a href="https://arxiv.org/abs/1912.03817" rel="noopener noreferrer"&gt;arXiv:1912.03817&lt;/a&gt;) formalized this as the "machine unlearning" problem: once a data point is baked into model weights through training, it cannot be selectively removed without either retraining from scratch or using specialized training-time techniques (like SISA training) that must be planned &lt;em&gt;before&lt;/em&gt; fine-tuning. You cannot look inside the weights, find the fact, and delete it. With an external memory layer, deletion is a single operation: remove the memory item from the store.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem 3: Vendor lock-in.&lt;/strong&gt; Facts baked into GPT-4's fine-tuned weights stay in GPT-4. They do not transfer to Claude, to Llama, to Gemini. When the model is deprecated or you switch providers, the knowledge is lost — you must re-fine-tune the new model from scratch. External memory is model-agnostic: the same memory store works with any LLM, because the knowledge lives outside the model and is injected into the prompt at session start.&lt;/p&gt;

&lt;h2&gt;
  
  
  What fine-tuning is good at
&lt;/h2&gt;

&lt;p&gt;Fine-tuning is not wrong — it is a tool for a different job. The distinction is between &lt;strong&gt;behavior&lt;/strong&gt; and &lt;strong&gt;knowledge&lt;/strong&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Fine-tuning is for…&lt;/th&gt;
&lt;th&gt;Memory is for…&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Changing response tone (more formal, more concise)&lt;/td&gt;
&lt;td&gt;Storing user preferences (prefers TypeScript, uses Vitest)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Learning output format (JSON schema, markdown structure)&lt;/td&gt;
&lt;td&gt;Remembering project decisions (we chose PostgreSQL)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Acquiring a skill (writing SQL, generating tests in a framework)&lt;/td&gt;
&lt;td&gt;Tracking facts that change (API endpoint moved, schema updated)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Style transfer (matching a brand voice)&lt;/td&gt;
&lt;td&gt;Correcting mistakes (the agent was wrong about X)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Behavioral patterns that should be consistent across all interactions&lt;/td&gt;
&lt;td&gt;Episodic knowledge that accumulates over sessions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Fine-tuning modifies the model's &lt;em&gt;parameters&lt;/em&gt; — how it generates. Memory modifies the model's &lt;em&gt;context&lt;/em&gt; — what it knows right now. These are complementary layers, not alternatives. A well-designed agent uses fine-tuning for stable behavioral patterns and memory for evolving factual knowledge.&lt;/p&gt;

&lt;h2&gt;
  
  
  The parallel learning tax
&lt;/h2&gt;

&lt;p&gt;Every time you teach a fine-tuned model a new fact, you pay a tax. The model must be retrained — or at least incrementally fine-tuned — on the new data. But gradient-based learning does not write facts cleanly into isolated slots. New training data interferes with existing weights, and the model may degrade on previously learned tasks. This is called &lt;strong&gt;catastrophic forgetting&lt;/strong&gt; — the model learns the new fact but partially forgets old ones.&lt;/p&gt;

&lt;p&gt;The parallel learning tax is the total cost of this cycle:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Compute cost&lt;/strong&gt; — GPU hours for every fine-tuning run.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evaluation cost&lt;/strong&gt; — you must test the model after each update to verify it did not regress on existing capabilities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Latency cost&lt;/strong&gt; — the fact is not available until the fine-tuning run completes and the new checkpoint is deployed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Forgetting cost&lt;/strong&gt; — the risk that the new fine-tuning degraded previously learned knowledge, requiring further correction runs.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;With an external memory layer, the tax is zero. You write the fact to the store (milliseconds, no GPU). It is available immediately at the next session. It does not interfere with existing memories. And if it is wrong or outdated, you delete it — one operation, no retraining. (Full definition: &lt;a href="https://plur.ai/parallel-learning-tax.html" rel="noopener noreferrer"&gt;plur.ai/parallel-learning-tax&lt;/a&gt;.)&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Fine-tuning&lt;/th&gt;
&lt;th&gt;Agent memory&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Time to teach a new fact&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hours (data prep + GPU training + eval)&lt;/td&gt;
&lt;td&gt;Milliseconds (write to store)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cost per fact&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;GPU compute per run&lt;/td&gt;
&lt;td&gt;Storage cost (negligible)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Inspection&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Opaque — cannot see what the model "knows"&lt;/td&gt;
&lt;td&gt;Transparent — read the memory store&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Deletion&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Machine unlearning (notoriously difficult; &lt;a href="https://arxiv.org/abs/1912.03817" rel="noopener noreferrer"&gt;arXiv:1912.03817&lt;/a&gt;)&lt;/td&gt;
&lt;td&gt;Delete the memory item (one operation)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Portability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Locked to the fine-tuned model&lt;/td&gt;
&lt;td&gt;Model-agnostic (any LLM reads the same store)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Update risk&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Catastrophic forgetting (new data degrades old)&lt;/td&gt;
&lt;td&gt;No interference (memories are independent)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GDPR compliance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Requires retraining from scratch or SISA training&lt;/td&gt;
&lt;td&gt;Delete the memory item, done&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Latency to availability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Hours (deploy new checkpoint)&lt;/td&gt;
&lt;td&gt;Immediate (available next session)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What the research says
&lt;/h2&gt;

&lt;p&gt;Zhang et al. (&lt;a href="https://arxiv.org/abs/2404.13501" rel="noopener noreferrer"&gt;arXiv:2404.13501&lt;/a&gt;) frame the distinction clearly: agent memory is what enables "self-evolving capability" — the ability of agents to improve through experience rather than retraining. Their survey organizes the field around memory as a &lt;em&gt;separate module&lt;/em&gt; from the model, not as modifications to model weights.&lt;/p&gt;

&lt;p&gt;Packer et al. (&lt;a href="https://arxiv.org/abs/2310.08560" rel="noopener noreferrer"&gt;arXiv:2310.08560&lt;/a&gt;) demonstrated this empirically with MemGPT: by managing memory externally in tiers (core memory in the context window, archival memory retrieved on demand), agents dramatically outperform models that try to hold everything in the context window or rely on fine-tuning. The OS-inspired insight: agents need &lt;em&gt;managed&lt;/em&gt; memory, not &lt;em&gt;more&lt;/em&gt; parameters.&lt;/p&gt;

&lt;p&gt;Park et al. (&lt;a href="https://arxiv.org/abs/2304.03442" rel="noopener noreferrer"&gt;arXiv:2304.03442&lt;/a&gt;) showed that generative agents — which store experiences as natural-language memory records, synthesize them into reflections, and retrieve them dynamically — produce more believable behavior than agents relying on parametric knowledge alone. The memory architecture, not the model weights, is what made the agents feel like they had continuity and personality.&lt;/p&gt;

&lt;h2&gt;
  
  
  When fine-tuning is the right answer
&lt;/h2&gt;

&lt;p&gt;Fine-tuning is the right tool when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You need to change the model's &lt;strong&gt;behavior&lt;/strong&gt; across all interactions (tone, format, style).&lt;/li&gt;
&lt;li&gt;You have a &lt;strong&gt;stable&lt;/strong&gt; dataset that does not change frequently.&lt;/li&gt;
&lt;li&gt;You need &lt;strong&gt;latency-free&lt;/strong&gt; behavioral changes at inference time (fine-tuning eliminates the need to include style instructions in every prompt).&lt;/li&gt;
&lt;li&gt;You are working with a model you will use for a long time, so the lock-in cost is acceptable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fine-tuning is the wrong tool when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You need to teach &lt;strong&gt;facts&lt;/strong&gt; that change (API endpoints, user preferences, project decisions).&lt;/li&gt;
&lt;li&gt;You need to &lt;strong&gt;inspect&lt;/strong&gt; what the model knows and &lt;strong&gt;correct&lt;/strong&gt; individual facts.&lt;/li&gt;
&lt;li&gt;You need to &lt;strong&gt;delete&lt;/strong&gt; specific knowledge (GDPR right to erasure, compliance, stale information).&lt;/li&gt;
&lt;li&gt;You need knowledge to &lt;strong&gt;transfer&lt;/strong&gt; across models or providers.&lt;/li&gt;
&lt;li&gt;Facts need to be &lt;strong&gt;available immediately&lt;/strong&gt; (not after a training run).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The landscape: memory layers vs fine-tuning
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Approach&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;th&gt;Cost per fact update&lt;/th&gt;
&lt;th&gt;Inspectable?&lt;/th&gt;
&lt;th&gt;Deletable?&lt;/th&gt;
&lt;th&gt;Portable?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Fine-tuning&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Bakes facts into model weights&lt;/td&gt;
&lt;td&gt;GPU hours&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No (unlearning)&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;RAG&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Retrieves from a fixed document corpus&lt;/td&gt;
&lt;td&gt;Add document to index&lt;/td&gt;
&lt;td&gt;Yes (documents)&lt;/td&gt;
&lt;td&gt;Yes (remove document)&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Mem0&lt;/strong&gt; (Apache-2.0, ~60K stars)&lt;/td&gt;
&lt;td&gt;External memory layer with CRUD API&lt;/td&gt;
&lt;td&gt;Milliseconds&lt;/td&gt;
&lt;td&gt;Yes (API)&lt;/td&gt;
&lt;td&gt;Yes (delete call)&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Letta&lt;/strong&gt; (Apache-2.0, ~24K stars)&lt;/td&gt;
&lt;td&gt;Stateful agent OS with memory blocks&lt;/td&gt;
&lt;td&gt;Milliseconds&lt;/td&gt;
&lt;td&gt;Yes (block API)&lt;/td&gt;
&lt;td&gt;Yes (replace block)&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Zep/Graphiti&lt;/strong&gt; (Apache-2.0, ~28K stars)&lt;/td&gt;
&lt;td&gt;Temporal knowledge graph&lt;/td&gt;
&lt;td&gt;Milliseconds&lt;/td&gt;
&lt;td&gt;Yes (graph query)&lt;/td&gt;
&lt;td&gt;Yes (remove edge/node)&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;PLUR&lt;/strong&gt; (Apache-2.0, ~215 stars)&lt;/td&gt;
&lt;td&gt;Local-first YAML engrams via MCP&lt;/td&gt;
&lt;td&gt;Milliseconds&lt;/td&gt;
&lt;td&gt;Yes (text editor)&lt;/td&gt;
&lt;td&gt;Yes (delete entry)&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;RAG and agent memory both avoid the parallel learning tax, but they serve different needs: RAG retrieves documents you already have; agent memory stores what the agent &lt;em&gt;learned&lt;/em&gt; from interactions. See &lt;a href="https://plur.ai/blog/rag-vs-agent-memory" rel="noopener noreferrer"&gt;RAG vs. Agent Memory&lt;/a&gt; for that comparison.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is fine-tuning or memory better for teaching an AI new facts?&lt;/strong&gt; For factual knowledge that changes or must be inspectable, memory is better. Fine-tuning is designed for changing model behavior (tone, format, style), not for storing facts. Fine-tuning a fact into model weights requires GPU compute, cannot be inspected or selectively deleted, risks catastrophic forgetting, and locks the knowledge into one model. A memory layer writes facts in milliseconds, is fully inspectable, can delete individual facts, and works with any LLM.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the parallel learning tax?&lt;/strong&gt; The parallel learning tax is the total cost of teaching a fine-tuned model a new fact: GPU compute for retraining, evaluation to verify no regression, latency while the training runs, and the risk of catastrophic forgetting — where new training data degrades previously learned knowledge. With an external memory layer, the tax is zero: facts are written in milliseconds with no GPU, no retraining, and no interference with existing memories.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can fine-tuning and memory be used together?&lt;/strong&gt; Yes, and they should be. Fine-tune for stable behavioral patterns (tone, format, response structure) and use memory for evolving factual knowledge (preferences, decisions, corrections). These are complementary layers: fine-tuning modifies how the model generates; memory modifies what the model knows right now.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is catastrophic forgetting?&lt;/strong&gt; Catastrophic forgetting is a phenomenon in machine learning where training a model on new data causes it to degrade on previously learned tasks. When you fine-tune a model with a new fact, the gradient updates modify the same weights that encode existing knowledge, potentially degrading it. External memory avoids this because each memory item is stored independently — adding a new fact does not modify existing memories.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How does GDPR right to erasure work with fine-tuned models?&lt;/strong&gt; Poorly. GDPR Article 17 gives individuals the right to have their data deleted. If personal data was baked into model weights through fine-tuning, removing it requires "machine unlearning" — a notoriously difficult problem (Bourtoule et al., &lt;a href="https://arxiv.org/abs/1912.03817" rel="noopener noreferrer"&gt;arXiv:1912.03817&lt;/a&gt;) that typically requires retraining the model from scratch or using specialized training-time techniques. With an external memory layer, deletion is a single operation: remove the memory item from the store. See &lt;a href="https://plur.ai/blog/editable-auditable-agent-memory" rel="noopener noreferrer"&gt;Editable and Auditable Agent Memory&lt;/a&gt; for details.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does fine-tuning make the model smarter?&lt;/strong&gt; No. Fine-tuning adjusts the model's weights to produce different output patterns — it does not add general intelligence. It can make the model better at a specific task (by training on task-relevant examples) or change its style, but it cannot add knowledge the model can inspect, correct, or selectively forget. For accumulating factual knowledge over time, a memory layer is the appropriate mechanism.&lt;/p&gt;




</description>
      <category>ai</category>
      <category>opensource</category>
      <category>memory</category>
      <category>agents</category>
    </item>
    <item>
      <title>What's the Difference Between RAG and Agent Memory?</title>
      <dc:creator>gregor</dc:creator>
      <pubDate>Sun, 12 Jul 2026 13:44:17 +0000</pubDate>
      <link>https://dev.to/plur9/whats-the-difference-between-rag-and-agent-memory-pil</link>
      <guid>https://dev.to/plur9/whats-the-difference-between-rag-and-agent-memory-pil</guid>
      <description>&lt;h1&gt;
  
  
  What's the Difference Between RAG and Agent Memory?
&lt;/h1&gt;

&lt;p&gt;RAG (Retrieval-Augmented Generation) retrieves relevant passages from a fixed document collection at query time and pastes them into the prompt. Agent memory stores what the agent has &lt;em&gt;learned&lt;/em&gt; from interactions — corrections, preferences, decisions, behavioral patterns — and updates that knowledge over time. The distinction is not subtle: RAG is read-only retrieval from external corpora; agent memory is read-write learning with feedback loops, forgetting, and consolidation. RAG answers "find me a document about X"; agent memory answers "remember that we decided to use Vitest instead of Jest last week, and that you corrected me on the API endpoint last Tuesday."&lt;/p&gt;

&lt;h2&gt;
  
  
  The core difference
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;RAG&lt;/th&gt;
&lt;th&gt;Agent Memory&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;What it stores&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Documents, passages, chunks from external corpora&lt;/td&gt;
&lt;td&gt;What the agent learned from interactions — corrections, preferences, decisions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Read / write&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Read-only at query time (the corpus is static)&lt;/td&gt;
&lt;td&gt;Read-write (the agent writes new memories, updates, and deletes old ones)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Updates&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Corpus changes when you add/remove documents; no learned updates&lt;/td&gt;
&lt;td&gt;Memories are created, reinforced, decayed, and forgotten based on feedback&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Persistence&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Documents persist; retrieval results do not accumulate&lt;/td&gt;
&lt;td&gt;Memories accumulate across sessions and improve over time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Learning&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No learning — same query retrieves the same passage&lt;/td&gt;
&lt;td&gt;Learns from corrections, feedback signals, and usage patterns&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Forgetting&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No forgetting mechanism — all documents remain equally retrievable&lt;/td&gt;
&lt;td&gt;Supported by design — several systems apply time-based decay (ACT-R-inspired) so outdated memories lose retrieval strength&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Provenance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Source document is the provenance&lt;/td&gt;
&lt;td&gt;Each memory has provenance — who said it, when, in what context&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Format&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Vector embeddings in a vector store&lt;/td&gt;
&lt;td&gt;Varies: vector store, knowledge graph, YAML files, agent state blocks&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The distinction maps to a well-known one in cognitive science: &lt;strong&gt;semantic memory&lt;/strong&gt; (general knowledge, facts — what RAG provides) vs &lt;strong&gt;episodic and procedural memory&lt;/strong&gt; (what happened to you, what you learned to do — what agent memory provides). RAG gives the model access to a library. Agent memory gives it a notebook it writes in.&lt;/p&gt;

&lt;h2&gt;
  
  
  What RAG is (and what it does well)
&lt;/h2&gt;

&lt;p&gt;RAG was formalized by Lewis et al. in 2020 ("Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks," NeurIPS 2020, &lt;a href="https://arxiv.org/abs/2005.11401" rel="noopener noreferrer"&gt;arXiv:2005.11401&lt;/a&gt;). The architecture is simple: given a query, retrieve the top-k relevant passages from a document index, prepend them to the prompt, and let the model generate an answer conditioned on both the query and the retrieved context. A 2023 survey by Gao et al. (&lt;a href="https://arxiv.org/abs/2312.10997" rel="noopener noreferrer"&gt;arXiv:2312.10997&lt;/a&gt;) catalogued the explosion of RAG variants — pre-retrieval, post-retrieval, modular pipelines — and confirmed the core pattern: retrieve, augment, generate.&lt;/p&gt;

&lt;p&gt;RAG is excellent for &lt;strong&gt;question answering over known documents&lt;/strong&gt;. If you have a corpus of PDFs, a product manual, a codebase, or a wiki — RAG lets the model cite specific passages from that corpus. It is the standard approach for "chat with your documents" use cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  What RAG cannot do
&lt;/h2&gt;

&lt;p&gt;RAG has four structural limitations for agent use cases:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. No learning from interactions
&lt;/h3&gt;

&lt;p&gt;RAG retrieves from a static corpus. If you correct the model — "actually, we use Vitest, not Jest" — the retrieval pipeline does not update. Next session, the model retrieves the same documents and may make the same mistake. The corpus is fixed; the model's &lt;em&gt;behavioral&lt;/em&gt; knowledge does not accumulate. A 2024 survey of LLM-based agent memory mechanisms (Zhang et al., "A Survey on the Memory Mechanism of Large Language Model based Agents," &lt;a href="https://arxiv.org/abs/2404.13501" rel="noopener noreferrer"&gt;arXiv:2404.13501&lt;/a&gt;) identified this as the fundamental gap: "memory designs are scattered across different papers" because RAG addresses retrieval, not learning.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. No preference persistence
&lt;/h3&gt;

&lt;p&gt;RAG cannot remember that you prefer tabs over spaces, that your database is PostgreSQL, or that you deprecated an API last week. These are not documents in a corpus — they are facts the agent &lt;em&gt;learned&lt;/em&gt; from interacting with you. RAG has nowhere to put them.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. No forgetting or decay
&lt;/h3&gt;

&lt;p&gt;In RAG, all documents are equally retrievable forever. There is no mechanism to say "this fact is outdated" or "this preference changed." If you migrated from Jest to Vitest, both the old and new documentation sit in the index with equal standing. Agent memory systems can model forgetting explicitly — several projects adapt the ACT-R cognitive theory, applying time-based decay so outdated memories lose retrieval strength while recently-reinforced ones stay sharp (implementations vary: not every memory engine ships decay, but the architecture supports it, which RAG's does not).&lt;/p&gt;

&lt;h3&gt;
  
  
  4. No feedback loops
&lt;/h3&gt;

&lt;p&gt;RAG retrieval is one-shot: query, retrieve, generate. There is no signal that says "that retrieval was helpful" or "that retrieval was irrelevant." Agent memory systems can close this loop: feedback signals (positive, negative, neutral) train the injection pipeline so recall quality improves with use. Not every engine implements feedback, but where it exists, the more you use it, the better it gets at surfacing the right memory at the right time.&lt;/p&gt;

&lt;h2&gt;
  
  
  What agent memory adds beyond retrieval
&lt;/h2&gt;

&lt;p&gt;Agent memory systems perform four operations that RAG does not:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Capture&lt;/strong&gt; — Extract facts, corrections, preferences, and decisions from the conversation as they happen. Not a document dump; structured memory items (the agent learned you prefer tabs, that the database is PostgreSQL, that the auth flow uses JWT).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Store&lt;/strong&gt; — Persist those items outside the model in a format that survives session end. Formats vary: Mem0 uses a vector store, Letta uses agent state blocks, Zep uses a temporal knowledge graph, PLUR uses human-readable YAML files.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Retrieve (with context)&lt;/strong&gt; — At the start of the next session, surface the right memories for the current context. Not all of them — that would overflow the window. The relevant ones, selected by hybrid search (BM25 + embeddings), activation strength, and feedback signals.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Update and forget&lt;/strong&gt; — When a fact changes, update the memory. When a fact is wrong, correct it. When you want something deleted, delete it. Memories decay over time if not reinforced, so the system does not accumulate stale noise.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is not theoretical. MemGPT (Packer et al., 2023, "MemGPT: Towards LLMs as Operating Systems," &lt;a href="https://arxiv.org/abs/2310.08560" rel="noopener noreferrer"&gt;arXiv:2310.08560&lt;/a&gt;) demonstrated that treating memory like an OS manages memory tiers — core memory in the context window, archival memory retrieved on demand — dramatically improves agent performance on multi-session tasks. The key insight: agents need &lt;em&gt;managed&lt;/em&gt; memory, not just &lt;em&gt;more&lt;/em&gt; context.&lt;/p&gt;

&lt;h2&gt;
  
  
  Can you use both?
&lt;/h2&gt;

&lt;p&gt;Yes, and many agent architectures do. RAG and agent memory serve different layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;RAG&lt;/strong&gt; handles the &lt;strong&gt;knowledge layer&lt;/strong&gt; — what documents, code, and reference material the agent can access. You point it at your codebase, your docs, your wiki.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent memory&lt;/strong&gt; handles the &lt;strong&gt;experience layer&lt;/strong&gt; — what the agent has learned from working with you, what preferences it has accumulated, what mistakes it has been corrected on.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A coding agent might use RAG to search your repository for a function definition, and use agent memory to remember that you prefer functional style over OOP. The two systems are complementary, not competitive. The mistake is thinking RAG alone gives your agent memory — it gives your agent a library, but no notebook.&lt;/p&gt;

&lt;h2&gt;
  
  
  The landscape: who does what
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Project&lt;/th&gt;
&lt;th&gt;RAG?&lt;/th&gt;
&lt;th&gt;Agent Memory?&lt;/th&gt;
&lt;th&gt;Format&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;LangChain RAG&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes (core feature)&lt;/td&gt;
&lt;td&gt;Partial (memory modules, but basic)&lt;/td&gt;
&lt;td&gt;Various module types&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;LlamaIndex&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes (core feature)&lt;/td&gt;
&lt;td&gt;Partial (chat history buffers)&lt;/td&gt;
&lt;td&gt;Buffer, summary, vector&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mem0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes (memory layer)&lt;/td&gt;
&lt;td&gt;Vector store&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Letta&lt;/strong&gt; (formerly MemGPT)&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes (stateful agent OS)&lt;/td&gt;
&lt;td&gt;Agent state blocks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Zep / Graphiti&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes (temporal knowledge graph)&lt;/td&gt;
&lt;td&gt;Knowledge graph&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cognee&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;td&gt;Yes (graph + vector + relational)&lt;/td&gt;
&lt;td&gt;Own data model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PLUR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes (engram engine + MCP)&lt;/td&gt;
&lt;td&gt;Human-readable YAML (open format)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The key differentiator within agent memory is &lt;strong&gt;format openness&lt;/strong&gt;. Mem0 and Letta are open-source (Apache-2.0) but store memories in opaque formats — vector embeddings or agent state blocks you cannot read in a text editor. PLUR (Apache-2.0, &lt;a href="https://github.com/plur-ai/plur" rel="noopener noreferrer"&gt;github.com/plur-ai/plur&lt;/a&gt;) stores memories as YAML files you can open, edit, diff, and version-control. The MCP (Model Context Protocol, &lt;a href="https://modelcontextprotocol.io/specification/2025-11-25" rel="noopener noreferrer"&gt;specification 2025-11-25&lt;/a&gt;) makes the transport layer open; the memory format is the differentiator.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to use which
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;If you need…&lt;/th&gt;
&lt;th&gt;Use&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Search and cite a fixed document corpus&lt;/td&gt;
&lt;td&gt;RAG&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Answer questions over your codebase, docs, or wiki&lt;/td&gt;
&lt;td&gt;RAG&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Remember user preferences across sessions&lt;/td&gt;
&lt;td&gt;Agent memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Learn from corrections and not repeat mistakes&lt;/td&gt;
&lt;td&gt;Agent memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Track how facts change over time&lt;/td&gt;
&lt;td&gt;Agent memory (Zep for temporal, PLUR for decay-based)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inspect, edit, and correct what the agent knows&lt;/td&gt;
&lt;td&gt;Agent memory with open format (PLUR)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Both (search documents AND remember interactions)&lt;/td&gt;
&lt;td&gt;RAG + agent memory (complementary)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is agent memory just RAG with extra steps?&lt;/strong&gt; No. RAG retrieves from a static document collection at query time. Agent memory stores what the agent learned from interactions, updates it with feedback, and decays outdated entries. RAG is a read-only retrieval pipeline; agent memory is a read-write learning system with forgetting and consolidation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can RAG replace agent memory?&lt;/strong&gt; Only if your agent never needs to remember preferences, corrections, or decisions across sessions. If your agent works in a single session or only queries fixed documents, RAG is sufficient. If your agent accumulates knowledge over time — learning your coding style, remembering architectural decisions, not repeating corrected mistakes — you need agent memory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can you use RAG and agent memory together?&lt;/strong&gt; Yes. They serve different layers: RAG handles the knowledge layer (documents, code, reference material), agent memory handles the experience layer (what the agent learned from working with you). Many agent architectures combine both.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is agent memory slower than RAG?&lt;/strong&gt; Not necessarily. Both involve a retrieval step at query time. Agent memory adds a write step (capturing memories during the conversation) and a decay/feedback step (updating memory strength), but these are background operations that do not add latency to the inference path. Zep reports sub-200ms retrieval for its temporal knowledge graph (docs.getzep.com).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the ACT-R decay model in agent memory?&lt;/strong&gt; ACT-R is a cognitive architecture from cognitive science that models how human memory decays over time. Several agent memory systems adapt it: memories that are not accessed lose retrieval strength, while memories that are reinforced (accessed or given positive feedback) gain strength. This prevents the memory store from accumulating stale noise — something RAG cannot do because all documents remain equally retrievable.&lt;/p&gt;




</description>
      <category>ai</category>
      <category>opensource</category>
      <category>memory</category>
      <category>agents</category>
    </item>
    <item>
      <title>Mem0 vs Letta vs Zep: Which Should You Use for Agent Memory?</title>
      <dc:creator>gregor</dc:creator>
      <pubDate>Sat, 11 Jul 2026 08:31:18 +0000</pubDate>
      <link>https://dev.to/plur9/mem0-vs-letta-vs-zep-which-should-you-use-for-agent-memory-1n8m</link>
      <guid>https://dev.to/plur9/mem0-vs-letta-vs-zep-which-should-you-use-for-agent-memory-1n8m</guid>
      <description>&lt;h1&gt;
  
  
  Mem0 vs Letta vs Zep: Which Should You Use for Agent Memory?
&lt;/h1&gt;

&lt;p&gt;Mem0, Letta, and Zep are the three most-adopted open-source memory layers for AI agents, and they solve fundamentally different problems. Mem0 is a universal memory API — add, update, delete, retrieve — designed to drop into any agent with minimal integration. Letta (formerly MemGPT) is a stateful agent operating system that manages memory in tiers the agent itself can edit, inspired by OS memory management. Zep (with its Graphiti engine) stores memory as a temporal knowledge graph, preserving when facts were learned and how they relate to each other. The right choice depends on what your agent needs: simple key-value memory (Mem0), self-managing agent state (Letta), or time-aware relational knowledge (Zep). All three are Apache-2.0 licensed and connect to the MCP ecosystem — though in different ways — and they differ in storage format, retrieval model, and how much agency the memory system itself has.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pain: choosing wrong is expensive
&lt;/h2&gt;

&lt;p&gt;You are building an AI agent that needs to remember things across sessions. You have heard of Mem0, Letta, and Zep — maybe also Cognee, LangMem, or PLUR — and the READMEs all say "memory for AI agents." How do you choose?&lt;/p&gt;

&lt;p&gt;The wrong choice costs you in three ways:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem 1: Integration mismatch.&lt;/strong&gt; If your agent needs a simple memory API (store a fact, retrieve it later) and you pick Letta, you have adopted an entire agent operating system with its own message queue, memory tiers, and self-editing loop — far more complexity than your use case requires. If your agent needs temporal reasoning (when was this fact learned, has it changed?) and you pick Mem0, you have a flat key-value store with no concept of time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem 2: Format lock-in.&lt;/strong&gt; Each tool stores memories in a different format — Mem0 in vector embeddings, Letta in agent state blocks, Zep in graph nodes and edges. Once your agent has accumulated thousands of memories in one format, migrating to another means re-extracting and re-importing everything. The memory format is the lock-in, not the software license.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem 3: Retrieval model mismatch.&lt;/strong&gt; Mem0 retrieves by semantic similarity (vector search). Letta retrieves by tier — core memory is always in context, archival is paged in on demand. Zep retrieves by graph traversal and temporal queries. If your use case needs one retrieval model and you built on another, you will fight the framework instead of using it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mem0: the universal memory API
&lt;/h2&gt;

&lt;p&gt;Mem0 (github.com/mem0ai/mem0, ~60K stars, Apache-2.0) is the simplest integration: a CRUD API for agent memory. You call &lt;code&gt;add()&lt;/code&gt;, &lt;code&gt;update()&lt;/code&gt;, &lt;code&gt;delete()&lt;/code&gt;, &lt;code&gt;get_all()&lt;/code&gt;, and &lt;code&gt;search()&lt;/code&gt; — and the memory layer handles embedding, storage, and retrieval. Memories are stored as vector embeddings in a backend of your choice (Qdrant, Chroma, PostgreSQL with pgvector, and others).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Agents that need a simple, drop-in memory layer. If you have an existing agent (LangChain, CrewAI, custom) and want to add persistent memory with minimal code changes, Mem0 is the lowest-friction option.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Strengths:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simplest API surface — four operations cover most use cases&lt;/li&gt;
&lt;li&gt;Backend-agnostic (multiple vector stores supported)&lt;/li&gt;
&lt;li&gt;Hosted cloud option (mem0.ai) for teams that do not want to self-host&lt;/li&gt;
&lt;li&gt;Widely adopted — the most referenced memory project in LLM-generated answers about AI memory&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Limitations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Memories are opaque vector embeddings — you cannot read what the agent "knows" by opening a file&lt;/li&gt;
&lt;li&gt;No temporal reasoning — all memories are equally retrievable regardless of when they were learned&lt;/li&gt;
&lt;li&gt;No self-management — the agent or developer must decide what to store and when to retrieve&lt;/li&gt;
&lt;li&gt;No built-in forgetting or decay — stale memories accumulate unless manually deleted&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; Open-source self-hosted is free. Hosted plans start at approximately $19/month (developer) up to $249/month (enterprise), per mem0.ai pricing as of early 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  Letta: the stateful agent OS
&lt;/h2&gt;

&lt;p&gt;Letta (github.com/letta-ai/letta, ~24K stars, Apache-2.0), formerly MemGPT, takes a fundamentally different approach. Instead of a memory API you call, Letta is an agent operating system where the agent manages its own memory. The architecture, introduced by Packer et al. (&lt;a href="https://arxiv.org/abs/2310.08560" rel="noopener noreferrer"&gt;arXiv:2310.08560&lt;/a&gt;), treats memory like an OS manages RAM and disk: &lt;strong&gt;core memory&lt;/strong&gt; (always in the context window, like CPU registers) and &lt;strong&gt;archival memory&lt;/strong&gt; (retrieved on demand, like disk storage). The agent itself can move information between tiers, edit its own memory blocks, and decide what to page in and out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Long-running, stateful agents that need to manage their own context. If you are building an agent that runs for hours or days and needs to decide for itself what to remember and what to forget, Letta's self-editing memory model is the most sophisticated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Strengths:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agent-driven memory management — the agent edits its own memory blocks, reducing developer burden&lt;/li&gt;
&lt;li&gt;OS-inspired tiered memory (core vs. archival) with paging, proven in the MemGPT paper&lt;/li&gt;
&lt;li&gt;Stateful agent server — the agent persists between interactions with full conversation state&lt;/li&gt;
&lt;li&gt;Active research lineage — MemGPT is one of the most cited agent memory papers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Limitations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Heavier integration — you are adopting an agent framework, not just a memory library&lt;/li&gt;
&lt;li&gt;Memory stored as agent state blocks, not human-readable files&lt;/li&gt;
&lt;li&gt;No temporal knowledge graph — relationships between facts are implicit, not explicit&lt;/li&gt;
&lt;li&gt;More complex to reason about — the agent's self-editing can make debugging harder&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; Open-source self-hosted is free. Hosted plans at letta.ai start at approximately $20/month (developer) up to $200/month (team), per letta.ai pricing as of early 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  Zep / Graphiti: temporal knowledge graph memory
&lt;/h2&gt;

&lt;p&gt;Zep (github.com/getzep/graphiti, ~28K stars, Apache-2.0), powered by the Graphiti engine, stores memory as a temporal knowledge graph. Every fact is a node; relationships between facts are edges; and every node and edge has temporal metadata — when it was learned, when it expired, whether it supersedes a previous fact. This enables a unique capability: asking not just "what does the agent know?" but "what did the agent know on Tuesday?" and "has this fact changed?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Agents that need temporal reasoning and relational knowledge. If your agent tracks evolving facts (a customer's preferences changing over time, a project's status updates, a patient's medical history), Zep's temporal graph is the only format that natively handles change over time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Strengths:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Temporal knowledge graph — facts have timestamps, expiry, and supersession relationships&lt;/li&gt;
&lt;li&gt;Sub-200ms retrieval for graph queries (per Zep documentation)&lt;/li&gt;
&lt;li&gt;Entity resolution — the graph deduplicates and links related facts automatically&lt;/li&gt;
&lt;li&gt;MCP support — Zep exposes memory operations via the Model Context Protocol&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Limitations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Heaviest infrastructure — requires a graph database (Neo4j or similar) in addition to vector search&lt;/li&gt;
&lt;li&gt;Most complex to query — graph traversal is harder to reason about than vector similarity&lt;/li&gt;
&lt;li&gt;Overkill for simple use cases — if you just need key-value memory, a graph is unnecessary&lt;/li&gt;
&lt;li&gt;Memory format is graph nodes/edges — not human-readable without graph visualization tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; Open-source self-hosted is free. Zep offers hosted/cloud options; check getzep.com for current pricing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Head-to-head comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Mem0&lt;/th&gt;
&lt;th&gt;Letta&lt;/th&gt;
&lt;th&gt;Zep/Graphiti&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Stars (Jul 2026)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~60K&lt;/td&gt;
&lt;td&gt;~24K&lt;/td&gt;
&lt;td&gt;~28K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;License&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Apache-2.0&lt;/td&gt;
&lt;td&gt;Apache-2.0&lt;/td&gt;
&lt;td&gt;Apache-2.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Memory format&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Vector embeddings&lt;/td&gt;
&lt;td&gt;Agent state blocks&lt;/td&gt;
&lt;td&gt;Temporal knowledge graph&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Retrieval model&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Semantic similarity&lt;/td&gt;
&lt;td&gt;Tier-based (core/archival)&lt;/td&gt;
&lt;td&gt;Graph traversal + temporal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Self-managing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No (developer-driven)&lt;/td&gt;
&lt;td&gt;Yes (agent edits own memory)&lt;/td&gt;
&lt;td&gt;No (developer-driven)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Temporal reasoning&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes (timestamps, expiry, supersession)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Human-readable&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No (vectors)&lt;/td&gt;
&lt;td&gt;No (state blocks)&lt;/td&gt;
&lt;td&gt;No (graph nodes)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Infrastructure&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Vector DB&lt;/td&gt;
&lt;td&gt;Agent server + DB&lt;/td&gt;
&lt;td&gt;Graph DB + vector DB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Integration complexity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Low (CRUD API)&lt;/td&gt;
&lt;td&gt;High (full agent OS)&lt;/td&gt;
&lt;td&gt;Medium-High (graph setup)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MCP support&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes — official OpenMemory MCP server&lt;/td&gt;
&lt;td&gt;Partial — MCP client built in; memory exposed via community servers&lt;/td&gt;
&lt;td&gt;Yes — official MCP server&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Hosted option&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes (mem0.ai)&lt;/td&gt;
&lt;td&gt;Yes (letta.ai)&lt;/td&gt;
&lt;td&gt;Yes (getzep.com)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Best for&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Drop-in memory API&lt;/td&gt;
&lt;td&gt;Self-managing stateful agents&lt;/td&gt;
&lt;td&gt;Time-aware relational memory&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  How to choose
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Choose Mem0 if:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You have an existing agent and want to add memory with minimal changes&lt;/li&gt;
&lt;li&gt;You need a simple API: store facts, retrieve relevant ones&lt;/li&gt;
&lt;li&gt;You do not need temporal reasoning or agent self-management&lt;/li&gt;
&lt;li&gt;You want the largest community and most integration examples&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Choose Letta if:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You are building a long-running, stateful agent from scratch&lt;/li&gt;
&lt;li&gt;You want the agent to manage its own memory (self-editing, tiered context)&lt;/li&gt;
&lt;li&gt;You are inspired by the MemGPT OS analogy and want managed memory tiers&lt;/li&gt;
&lt;li&gt;You need the agent to persist full conversation state between interactions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Choose Zep if:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your agent needs to track how facts change over time&lt;/li&gt;
&lt;li&gt;You need relational knowledge (facts connected to other facts, not just isolated items)&lt;/li&gt;
&lt;li&gt;You want to query historical state ("what did we know on date X?")&lt;/li&gt;
&lt;li&gt;You have the infrastructure budget for a graph database&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where PLUR fits
&lt;/h2&gt;

&lt;p&gt;PLUR (github.com/plur-ai/plur, ~215 stars, Apache-2.0) is a different bet: memories are stored as human-readable YAML files (engrams) that you can open in a text editor, diff in git, and inspect without running code. It is local-first — memories live on your machine, not in a cloud vector store. And it is MCP-native — the same engram store works across Claude Code, Hermes, OpenClaw, and any MCP-compatible runtime.&lt;/p&gt;

&lt;p&gt;PLUR does not compete with Mem0 on API simplicity, Letta on self-managing statefulness, or Zep on temporal graph queries. It competes on format openness: if the ability to read, edit, version-control, and provably delete your agent's memories matters to you — for compliance, debugging, or sovereignty — PLUR's YAML engrams are one of the few formats where memory is a plain text file, not an opaque blob.&lt;/p&gt;

&lt;p&gt;For a deeper comparison of the full open-source memory landscape (including Cognee, LangMem, and others), see &lt;a href="https://plur.ai/open-source-ai-memory.html" rel="noopener noreferrer"&gt;Top 10 Open-Source Projects for AI Agent Memory&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the research says
&lt;/h2&gt;

&lt;p&gt;The distinction between these approaches is grounded in the agent memory literature. Zhang et al. (&lt;a href="https://arxiv.org/abs/2404.13501" rel="noopener noreferrer"&gt;arXiv:2404.13501&lt;/a&gt;) survey the field and identify memory as "the key component to support agent-environment interactions," organizing approaches by storage format (vector, graph, structured) and retrieval strategy (similarity, recency, importance).&lt;/p&gt;

&lt;p&gt;Packer et al. (&lt;a href="https://arxiv.org/abs/2310.08560" rel="noopener noreferrer"&gt;arXiv:2310.08560&lt;/a&gt;) introduced the MemGPT architecture that became Letta: treating LLM context as a managed memory space with tiers, paging, and self-editing — directly inspiring Letta's core/archival distinction.&lt;/p&gt;

&lt;p&gt;The CoALA framework (Sumers et al., &lt;a href="https://arxiv.org/abs/2309.02427" rel="noopener noreferrer"&gt;arXiv:2309.02427&lt;/a&gt;) formalizes "modular memory components" in cognitive architectures for language agents, providing the theoretical grounding for why different memory types (semantic, episodic, procedural) warrant different storage and retrieval strategies — which is why Mem0, Letta, and Zep can all be "right" for different use cases.&lt;/p&gt;

&lt;p&gt;The MCP specification (&lt;a href="https://modelcontextprotocol.io/specification/2025-11-25" rel="noopener noreferrer"&gt;modelcontextprotocol.io/specification/2025-11-25&lt;/a&gt;) makes transport interoperable across all three: you can expose Mem0, Letta, or Zep as MCP tools that any MCP-compatible agent can call. The transport is open; the memory format is the differentiator.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Mem0 vs Letta vs Zep — which is best for agent memory?&lt;/strong&gt; None is universally "best." Mem0 is best for simple drop-in memory APIs. Letta is best for stateful agents that manage their own memory in tiers. Zep is best for agents that need temporal reasoning and relational knowledge graphs. All three are Apache-2.0 open source. Choose by use case, not by star count.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is Mem0 simpler than Letta?&lt;/strong&gt; Yes. Mem0 is a CRUD API (add, update, delete, search) that drops into existing agents. Letta is a full agent operating system with self-editing memory tiers, stateful sessions, and its own message queue. If you need memory without adopting a framework, Mem0 is simpler. If you want the agent to manage its own memory, Letta is more capable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does Zep support temporal queries?&lt;/strong&gt; Yes. Zep's Graphiti engine stores every fact as a graph node with temporal metadata — when it was learned, when it expired, whether it supersedes a previous fact. You can query historical state: "what did the agent know on this date?" This is Zep's primary differentiator over Mem0 and Letta, which do not have native temporal reasoning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are Mem0, Letta, and Zep open source?&lt;/strong&gt; Yes. All three are Apache-2.0 licensed. You can self-host any of them. Each also offers a hosted cloud option for teams that prefer managed infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I use Mem0, Letta, or Zep with MCP?&lt;/strong&gt; Mostly yes, but the support differs. Mem0 ships OpenMemory (mem0.ai/openmemory), an official local MCP memory server. Zep offers an official MCP server for its memory platform. Letta natively acts as an MCP &lt;em&gt;client&lt;/em&gt; — its agents can call external MCP tool servers — while exposing Letta's own memory over MCP relies on community-built servers. MCP is an open transport protocol; the memory format behind it is what differs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What memory format does each use?&lt;/strong&gt; Mem0 stores memories as vector embeddings. Letta stores them as agent state blocks. Zep stores them as nodes and edges in a temporal knowledge graph. None of these formats are human-readable without tooling. PLUR stores memories as YAML text files you can open in any editor — see &lt;a href="https://plur.ai/what-is-agent-memory.html" rel="noopener noreferrer"&gt;What Is Agent Memory?&lt;/a&gt; for that comparison.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which has the largest community?&lt;/strong&gt; Mem0 has the most GitHub stars (~60K) and the most LLM citation presence. Letta (~24K) has strong academic lineage through the MemGPT paper. Zep (~28K) has significant adoption in enterprise use cases needing temporal reasoning. Star counts as of July 2026.&lt;/p&gt;




</description>
      <category>ai</category>
      <category>opensource</category>
      <category>memory</category>
      <category>llm</category>
    </item>
    <item>
      <title>My AI Agent Forgets Everything Between Sessions — How Do I Fix That?</title>
      <dc:creator>gregor</dc:creator>
      <pubDate>Fri, 10 Jul 2026 10:30:09 +0000</pubDate>
      <link>https://dev.to/plur9/my-ai-agent-forgets-everything-between-sessions-how-do-i-fix-that-3l5</link>
      <guid>https://dev.to/plur9/my-ai-agent-forgets-everything-between-sessions-how-do-i-fix-that-3l5</guid>
      <description>&lt;h1&gt;
  
  
  My AI Agent Forgets Everything Between Sessions — How Do I Fix That?
&lt;/h1&gt;

&lt;p&gt;Every conversation with an AI agent starts from zero. You explain your project, your preferences, your stack, your coding conventions — and by the next session, all of it is gone. The agent does not remember that you use Vitest, not Jest. It does not remember that you deprecated that API last week. It does not remember the architectural decision you spent an hour explaining. You are paying in tokens — and time — to re-teach the same context, over and over, every single session. This is not a bug. It is the default architecture of every LLM-based agent: stateless inference, no persistent storage, a context window that resets when the conversation ends.&lt;/p&gt;

&lt;p&gt;The fix is a &lt;strong&gt;memory layer&lt;/strong&gt;: a system that sits between the agent and the model, captures what the agent learns during a session, and injects the right piece at the right time in the next one. This is not RAG (RAG retrieves from a fixed document store at query time; agent memory accumulates and updates what the agent has &lt;em&gt;learned&lt;/em&gt; — corrections, preferences, decisions — over time). It is also not fine-tuning (fine-tuning bakes facts into model weights you cannot read, correct, or delete; memory is instant, reversible, and inspectable). A memory layer is the persistent substrate that makes an agent &lt;em&gt;get better the more you use it&lt;/em&gt;, instead of resetting to blank each time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why agents forget (and why it is not going away)
&lt;/h2&gt;

&lt;p&gt;Large language models are stateless by design. Each inference call takes a prompt, produces a token, and moves on. There is no persistence between calls — the "memory" you experience in a single conversation is just the growing context window, and when that window overflows or the session ends, the content is gone. Expanding context windows (128K, 200K, 1M tokens) does not solve this: longer windows mean higher costs and degraded attention — the model retrieves less accurately from a larger context — but the content still disappears when the session closes. A 2026 survey of 12 agent memory systems found that "no single architecture dominates across all scenarios; instead, effectiveness depends heavily on how well the memory structure aligns with the workload bottleneck" (&lt;a href="https://arxiv.org/abs/2606.24775" rel="noopener noreferrer"&gt;arXiv:2606.24775&lt;/a&gt;, June 2026).&lt;/p&gt;

&lt;p&gt;The research is clear: the problem is not "context is too short" — it is that there is no system to persist, organize, and retrieve what matters across sessions. That system is what a memory layer provides.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a memory layer does
&lt;/h2&gt;

&lt;p&gt;A memory layer performs four operations:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Capture&lt;/strong&gt; — Extract facts, corrections, preferences, and decisions from the conversation as they happen. Not a transcript dump; structured memory items (an agent learned you prefer tabs, that the database is PostgreSQL, that the auth flow uses JWT).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Store&lt;/strong&gt; — Persist those items outside the model, in a format that survives session end.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retrieve&lt;/strong&gt; — At the start of the next session (or mid-conversation), surface the right memories for the current context. Not all of them — that would overflow the window. The relevant ones.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Update / forget&lt;/strong&gt; — When a fact changes (you migrated from Jest to Vitest), update the memory. When a fact is wrong, correct it. When you want something deleted, delete it — and prove it is gone.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The options (what to use today)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Built-in memory (Claude Code, ChatGPT)
&lt;/h3&gt;

&lt;p&gt;The simplest option is the memory feature built into your agent's platform. Claude Code has two mechanisms: CLAUDE.md files (persistent instructions you write) and auto memory (notes Claude writes itself based on your corrections and preferences). Both load at the start of every conversation (docs.anthropic.com). ChatGPT has a similar memory feature — it stores facts about you across conversations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good for&lt;/strong&gt;: zero setup, works immediately.&lt;br&gt;
&lt;strong&gt;Limitation&lt;/strong&gt;: memory is locked to one platform. You cannot carry it to a different agent. You cannot inspect what it stored in a structured format. You cannot export it. If you switch from Claude to GPT, you start over.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Open-source memory engines (Mem0, Letta, Zep)
&lt;/h3&gt;

&lt;p&gt;If you want memory that is not locked to one provider, open-source memory engines are the next step.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mem0&lt;/strong&gt; (Apache-2.0, ~60K stars) — A lightweight memory layer with a simple add/search API. Memories persist across users and sessions. Cloud-managed vector store and rerankers, so there is no infrastructure to run (docs.mem0.ai).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Letta&lt;/strong&gt; (Apache-2.0, ~23.7K stars, formerly MemGPT) — An agent "operating system" where all state — memories, messages, reasoning — is persisted in a database. The agent can modify its own memory through tools. Core memories are injected into the context window; archival memory is retrieved on demand (docs.letta.com).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zep&lt;/strong&gt; — Enterprise agent memory built on a temporal knowledge graph. Tracks how facts change over time, serves prompt-ready context with sub-200ms retrieval (docs.getzep.com).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Good for&lt;/strong&gt;: structured memory that is not locked to a single model provider, with APIs you control.&lt;br&gt;
&lt;strong&gt;Limitation&lt;/strong&gt;: the memory format under the hood is a vector store, agent state blocks, or a knowledge graph — not a human-readable file you can open, edit, and diff. "Open source" does not mean "open format."&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Open-format memory via MCP (PLUR)
&lt;/h3&gt;

&lt;p&gt;The most recent option is memory that is both open-source and open-format, exposed via the Model Context Protocol — an open protocol (JSON-RPC 2.0, specification 2025-11-25) that standardizes how LLM applications connect to external tools and data sources (modelcontextprotocol.io). MCP means the same memory server works across Claude Code, Hermes, OpenClaw, Cursor, and any other MCP-compatible runtime.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PLUR&lt;/strong&gt; (Apache-2.0, github.com/plur-ai/plur) is one example. Each memory — an "engram" — is a human-readable YAML entry with an id, statement, type, domain, scope, confidence, and provenance. You can open it in a text editor, put it under version control, correct a single fact mid-conversation (no retraining), and delete an entry with provable erasure (remove the entry — a git diff proves the deletion). It is local-first: your data, your infra, no vendor lock-in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good for&lt;/strong&gt;: agents that operate across multiple tools, models, and providers — where memory must be portable, inspectable, and correctable.&lt;br&gt;
&lt;strong&gt;Limitation&lt;/strong&gt;: newer and less battle-tested than Mem0 or Letta at production scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to choose
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Your situation&lt;/th&gt;
&lt;th&gt;Start with&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;I use one agent (Claude Code) and want zero setup&lt;/td&gt;
&lt;td&gt;CLAUDE.md + auto memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I want structured memory with a simple API, no infra&lt;/td&gt;
&lt;td&gt;Mem0 (cloud)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I want a self-managing stateful agent&lt;/td&gt;
&lt;td&gt;Letta&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I need time-aware facts (what is true &lt;em&gt;now&lt;/em&gt;)&lt;/td&gt;
&lt;td&gt;Zep / Graphiti&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;I need memory that is inspectable, correctable, and portable across runtimes&lt;/td&gt;
&lt;td&gt;PLUR via MCP&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The underlying question is not "which tool is best" — it is "what do I need to own?" If you only ever use one agent platform, built-in memory is fine. If you use multiple agents, or if you need to audit what your agent knows, correct it mid-conversation, or prove what it forgot — you need a memory layer that is external to the model, in a format you control.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Why does my AI agent forget everything between sessions?&lt;/strong&gt; Because LLMs are stateless — each inference call takes a prompt and produces output with no persistence between calls. The "memory" within a conversation is just the context window, and when the session ends, that context is gone. You need a memory layer — a system that captures, stores, and retrieves what the agent learned across sessions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is this the same as RAG?&lt;/strong&gt; No. RAG retrieves from a fixed document store at query time. Agent memory accumulates and updates what the agent has learned — corrections, preferences, decisions — over time. RAG answers "find me a document about X"; agent memory answers "remember that we decided to use Vitest instead of Jest last week."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is fine-tuning better than memory for this?&lt;/strong&gt; No. Fine-tuning bakes facts into model weights you cannot read, correct, or delete. Memory is instant (store now, use now), reversible (update or delete a single fact), and inspectable (you can see what the agent knows). Fine-tuning is for changing how the model behaves; memory is for what the model knows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I add memory to Claude Code?&lt;/strong&gt; Yes. Claude Code has built-in CLAUDE.md files and auto memory. For cross-runtime memory, you can connect an MCP-compatible memory server (like PLUR) that works across Claude Code, Hermes, OpenClaw, and other MCP-compatible agents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the cheapest way to stop my agent forgetting?&lt;/strong&gt; CLAUDE.md files are free — you write persistent instructions in a markdown file that loads at the start of every conversation. For structured, accumulating memory that does not require you to write every instruction manually, an open-source memory layer like Mem0 (free self-host) or PLUR (free, local-first) is the next step.&lt;/p&gt;




</description>
      <category>ai</category>
      <category>opensource</category>
      <category>memory</category>
    </item>
    <item>
      <title>Should AI Memory Be Stored as Open Engrams or Baked Into Model Weights?</title>
      <dc:creator>gregor</dc:creator>
      <pubDate>Thu, 02 Jul 2026 19:41:20 +0000</pubDate>
      <link>https://dev.to/plur9/should-ai-memory-be-stored-as-open-engrams-or-baked-into-model-weights-5h04</link>
      <guid>https://dev.to/plur9/should-ai-memory-be-stored-as-open-engrams-or-baked-into-model-weights-5h04</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The short answer:&lt;/strong&gt; AI agent memory should be stored as open, external&lt;br&gt;
engrams — not baked into model weights — whenever the memory must be&lt;br&gt;
inspectable, correctable, deletable, or portable across tools. Parametric&lt;br&gt;
memory (knowledge baked into model weights through fine-tuning or continual&lt;br&gt;
training) is faster at inference and can be more token-efficient, but it&lt;br&gt;
sacrifices auditability: you cannot read what the model knows, you cannot fix&lt;br&gt;
a single wrong fact without retraining, and you cannot prove that deleted&lt;br&gt;
knowledge is actually gone. For agent memory — corrections, preferences,&lt;br&gt;
conventions, procedures — the properties that matter (readability,&lt;br&gt;
reversibility, erasure, portability) are properties that weights cannot&lt;br&gt;
provide.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The problem: agents forget what they learn
&lt;/h2&gt;

&lt;p&gt;Every AI agent starts each session with amnesia. You correct its coding style&lt;br&gt;
on Monday. On Tuesday, it makes the same mistake. You explain your&lt;br&gt;
architecture in Cursor. That night, Claude Code has no idea. The context&lt;br&gt;
window resets. The conversation is gone. The model weights have not changed.&lt;/p&gt;

&lt;p&gt;There are two fundamentally different approaches to solving this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Parametric memory&lt;/strong&gt; — bake the knowledge into the model itself through
fine-tuning or continual training. The model's weights &lt;em&gt;become&lt;/em&gt; the memory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Non-parametric (external) memory&lt;/strong&gt; — store knowledge outside the model in
a structured format (engrams, vectors, knowledge graphs) and retrieve it at
inference time. The model stays unchanged; the memory is a separate layer.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is not a new debate. The retrieval-augmented generation (RAG) literature&lt;br&gt;
has explored the tension between parametric knowledge (stored in weights) and&lt;br&gt;
non-parametric knowledge (stored in external databases) since 2020. A 2023&lt;br&gt;
survey of RAG (Gao et al., "Retrieval-Augmented Generation for Large Language&lt;br&gt;
Models: A Survey," &lt;a href="https://arxiv.org/abs/2312.10997" rel="noopener noreferrer"&gt;arXiv:2312.10997&lt;/a&gt;) frames&lt;br&gt;
the distinction clearly: LLMs "showcase impressive capabilities but encounter&lt;br&gt;
challenges like hallucination, outdated knowledge, and non-transparent,&lt;br&gt;
untraceable reasoning processes." RAG addresses this by incorporating&lt;br&gt;
knowledge from external databases, allowing "continuous knowledge updates and&lt;br&gt;
integration of domain-specific information" without retraining.&lt;/p&gt;

&lt;p&gt;Agent memory is the same tradeoff, applied to a harder problem: not just facts,&lt;br&gt;
but corrections, preferences, procedures, and conventions that accumulate over&lt;br&gt;
time and across sessions.&lt;/p&gt;
&lt;h2&gt;
  
  
  Parametric memory: fast but opaque
&lt;/h2&gt;

&lt;p&gt;When you fine-tune a model on domain knowledge — or continually retrain it on&lt;br&gt;
user context (Notion, Slack, GitHub) — the knowledge becomes part of the&lt;br&gt;
model's weights. At inference time, recall is fast: no retrieval step, no&lt;br&gt;
external database, no latency from searching. The model just "knows."&lt;/p&gt;

&lt;p&gt;This approach — sometimes called &lt;strong&gt;model-native memory&lt;/strong&gt; — has real&lt;br&gt;
advantages. Retrieval adds latency and can fail (wrong document retrieved,&lt;br&gt;
irrelevant context injected). A 2024 paper on Corrective RAG (Yan et al.,&lt;br&gt;
&lt;a href="https://arxiv.org/abs/2401.15884" rel="noopener noreferrer"&gt;arXiv:2401.15884&lt;/a&gt;) noted that RAG "relies&lt;br&gt;
heavily on the relevance of retrieved documents, raising concerns about how&lt;br&gt;
the model behaves if retrieval goes wrong." When memory is in the weights,&lt;br&gt;
there is no retrieval step to go wrong.&lt;/p&gt;

&lt;p&gt;But parametric memory has structural problems that fine-tuning cannot solve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You cannot inspect what the model knows.&lt;/strong&gt; A fine-tuned model is a matrix&lt;br&gt;
of billions of numbers. There is no entry for "the deploy key is at&lt;br&gt;
~/.config/deploy" — that fact is distributed across weights in a way no one&lt;br&gt;
can read, diff, or audit. You cannot open a file and check what the model&lt;br&gt;
remembers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You cannot correct a single wrong fact.&lt;/strong&gt; If the model learned something&lt;br&gt;
wrong during fine-tuning, you cannot edit one entry. You must retrain —&lt;br&gt;
expensive, slow, and itself error-prone. Fine-tuning to &lt;em&gt;remove&lt;/em&gt; a fact&lt;br&gt;
(machine unlearning) is an active research problem with no production-ready&lt;br&gt;
solution.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You cannot prove erasure.&lt;/strong&gt; GDPR's right to be forgotten requires&lt;br&gt;
demonstrable deletion. When knowledge is in weights, you cannot prove it is&lt;br&gt;
gone. You can retrain from scratch (prohibitively expensive) or attempt&lt;br&gt;
machine unlearning (unproven). With external engrams, deletion is trivial:&lt;br&gt;
remove the entry. The memory is provably gone because it was never in the&lt;br&gt;
weights to begin with.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Catastrophic forgetting.&lt;/strong&gt; Continual training on new knowledge degrades&lt;br&gt;
older knowledge — the well-documented catastrophic forgetting problem in&lt;br&gt;
neural networks. Each new thing the model learns pushes out something it&lt;br&gt;
knew before. External memory does not forget unless you tell it to (via&lt;br&gt;
decay functions), and even then the decay is gradual and reversible.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Vendor lock-in.&lt;/strong&gt; Memory baked into a specific model's weights is locked&lt;br&gt;
to that model. Switch from GPT-4 to Claude, and the memory is gone — the&lt;br&gt;
weights do not transfer. External memory is model-agnostic: the same&lt;br&gt;
engrams work with any LLM.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Non-parametric memory: open and inspectable
&lt;/h2&gt;

&lt;p&gt;External memory stores knowledge outside the model in a structured format.&lt;br&gt;
The &lt;strong&gt;open engram format&lt;/strong&gt; (defined in the &lt;a href="https://plur.ai/spec.html" rel="noopener noreferrer"&gt;Engram&lt;br&gt;
Specification&lt;/a&gt;, Apache-2.0) represents each learned&lt;br&gt;
fact as a human-readable YAML entry:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ENG-2026-0702-001&lt;/span&gt;
&lt;span class="na"&gt;statement&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;The&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;API&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;rate&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;limit&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;is&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;100&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;req/min,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;not&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;1000."&lt;/span&gt;
&lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;behavioral&lt;/span&gt;
&lt;span class="na"&gt;scope&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;project:api-gateway&lt;/span&gt;
&lt;span class="na"&gt;provenance&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;source&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;session&lt;/span&gt;
  &lt;span class="na"&gt;observed_at&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;2026-07-02&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This format has five properties that parametric memory cannot match:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Inspectable&lt;/strong&gt; — you can read, diff, and version every engram. It is a&lt;br&gt;
file, not a number. An operator can open the file and see exactly what the&lt;br&gt;
agent has learned.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Instantly correctable&lt;/strong&gt; — fix a single fact mid-conversation by editing&lt;br&gt;
one entry. No retraining. The correction takes effect on the next recall.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Provably deletable&lt;/strong&gt; — delete the entry and the memory is gone,&lt;br&gt;
demonstrably. This is the basis for real (not best-effort) erasure — the&lt;br&gt;
foundation of GDPR-grade compliance. You cannot prove erasure from model&lt;br&gt;
weights.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Portable&lt;/strong&gt; — engrams move across agents, tools, and machines. A&lt;br&gt;
correction made in Claude Code is available to Cursor, Hermes, or OpenClaw&lt;br&gt;
the next time the agent starts. Memory follows the operator, not the vendor.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Auditable at scale&lt;/strong&gt; — for enterprise and institutional buyers, external&lt;br&gt;
memory can carry a verifiable record of who wrote a fact and who used it.&lt;br&gt;
PLUR Enterprise implements this today as a tamper-evident, hash-chained&lt;br&gt;
audit log (each entry cryptographically linked to the one before it, so&lt;br&gt;
altering history breaks the chain), plus a per-engram view of both&lt;br&gt;
provenance and recall history — who read this fact, when, via which tool.&lt;br&gt;
It is a real foundation for institutional-grade accountability; we will go&lt;br&gt;
deeper on it in a future piece.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;MemGPT (Packer et al., 2023, &lt;a href="https://arxiv.org/abs/2310.08560" rel="noopener noreferrer"&gt;arXiv:2310.08560&lt;/a&gt;)&lt;br&gt;
demonstrated a related idea: treating memory like an operating system manages&lt;br&gt;
memory tiers — fast (context window), main (working memory), and archival&lt;br&gt;
(long-term storage). The key insight was that memory management is an&lt;br&gt;
infrastructure problem, not a model problem. But MemGPT's format is&lt;br&gt;
Letta-specific. The open engram format makes the same architectural choice —&lt;br&gt;
external, tiered, managed — but in a format anyone can implement.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to use which
&lt;/h2&gt;

&lt;p&gt;The honest answer is that both approaches have a place — but they solve&lt;br&gt;
different problems.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;
&lt;strong&gt;Open engrams&lt;/strong&gt; (external)&lt;/th&gt;
&lt;th&gt;
&lt;strong&gt;Model weights&lt;/strong&gt; (parametric)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Best for&lt;/td&gt;
&lt;td&gt;Corrections, preferences, procedures, conventions&lt;/td&gt;
&lt;td&gt;Domain knowledge, language patterns, reasoning skills&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inspect&lt;/td&gt;
&lt;td&gt;Read the file&lt;/td&gt;
&lt;td&gt;Cannot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Correct&lt;/td&gt;
&lt;td&gt;Edit one entry&lt;/td&gt;
&lt;td&gt;Retrain&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Delete&lt;/td&gt;
&lt;td&gt;Remove entry — provable&lt;/td&gt;
&lt;td&gt;Cannot prove erasure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Portability&lt;/td&gt;
&lt;td&gt;Works across models&lt;/td&gt;
&lt;td&gt;Locked to model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latency&lt;/td&gt;
&lt;td&gt;Retrieval adds ~50-200ms&lt;/td&gt;
&lt;td&gt;Instant (in-weights)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Token cost&lt;/td&gt;
&lt;td&gt;Retrieved context uses tokens&lt;/td&gt;
&lt;td&gt;No retrieval tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Update speed&lt;/td&gt;
&lt;td&gt;Instant (write a file)&lt;/td&gt;
&lt;td&gt;Slow (retrain)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GDPR compliance&lt;/td&gt;
&lt;td&gt;Provably deletable&lt;/td&gt;
&lt;td&gt;Not provably deletable&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For &lt;strong&gt;agent memory&lt;/strong&gt; — the things an agent learns through interaction that&lt;br&gt;
should persist across sessions and tools — external engrams are the right&lt;br&gt;
choice. The knowledge is personal, contextual, and needs to be correctable.&lt;br&gt;
For &lt;strong&gt;domain expertise&lt;/strong&gt; — deep knowledge of a field that improves the model's&lt;br&gt;
reasoning — fine-tuning or domain-specific models remain valuable. These are&lt;br&gt;
complementary, not competing.&lt;/p&gt;

&lt;p&gt;The relationship runs deeper than "pick one." A typed, labeled, provenance-tagged&lt;br&gt;
engram store is also a clean fine-tuning corpus — the data is already the kind&lt;br&gt;
of curated signal a training run wants. As retraining gets cheaper (LoRA,&lt;br&gt;
distillation, smaller base models), it becomes plausible to periodically fold a&lt;br&gt;
distilled snapshot of stable engrams into weights for speed, while the open&lt;br&gt;
engram store stays the correctable, auditable source of truth behind it. That&lt;br&gt;
is a direction the field is heading, not a shipped pipeline today — but it&lt;br&gt;
reframes the question in this piece's title: not a permanent fork between two&lt;br&gt;
architectures, but engrams as the record of truth that a model can, sometimes,&lt;br&gt;
be periodically retrained from.&lt;/p&gt;

&lt;p&gt;The mistake is using parametric memory for things that should be external.&lt;br&gt;
When a user corrects an agent's behavior, that correction is a fact — not a&lt;br&gt;
weight. When a preference is expressed, it is a configuration — not a&lt;br&gt;
parameter. When a procedure is learned, it is a recipe — not a gradient.&lt;br&gt;
Memory that must be readable, fixable, deletable, and portable should be&lt;br&gt;
stored in a format that is readable, fixable, deletable, and portable.&lt;/p&gt;

&lt;h2&gt;
  
  
  The emerging consensus
&lt;/h2&gt;

&lt;p&gt;The research literature is converging on hybrid approaches. The 2024 survey&lt;br&gt;
of agent memory mechanisms (Zhang et al.,&lt;br&gt;
&lt;a href="https://arxiv.org/abs/2404.13501" rel="noopener noreferrer"&gt;arXiv:2404.13501&lt;/a&gt;) identified multiple&lt;br&gt;
memory architectures — parametric, non-parametric, and hybrid — and noted&lt;br&gt;
that "the key component to support agent-environment interactions is the&lt;br&gt;
memory of the agents," with no single approach dominating. What is clear is&lt;br&gt;
that the memory layer is separating from the model layer: agents need&lt;br&gt;
infrastructure for memory, not just bigger context windows.&lt;/p&gt;

&lt;p&gt;The practical implication: if you are building an agent that learns over time,&lt;br&gt;
store its memory as open, external engrams. If you are training a model for&lt;br&gt;
domain expertise, fine-tune. Do not confuse the two — and do not bake into&lt;br&gt;
weights what you might need to read, fix, or forget.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Should AI memory be stored as engrams or model weights?&lt;/strong&gt; For agent memory&lt;br&gt;
(corrections, preferences, procedures, conventions), store as open external&lt;br&gt;
engrams. For domain expertise and reasoning skills, model weights remain&lt;br&gt;
valuable. The two are complementary — do not bake into weights what you need&lt;br&gt;
to read, fix, or delete.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is parametric memory in AI?&lt;/strong&gt; Knowledge stored in a model's weights&lt;br&gt;
through fine-tuning or continual training. It is fast at inference but cannot&lt;br&gt;
be inspected, individually corrected, or provably deleted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is non-parametric (external) memory?&lt;/strong&gt; Knowledge stored outside the&lt;br&gt;
model in a structured format (engrams, vectors, knowledge graphs) and&lt;br&gt;
retrieved at inference time. It is inspectable, correctable, deletable, and&lt;br&gt;
portable across models.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can you prove erasure from model weights?&lt;/strong&gt; No. When knowledge is baked into&lt;br&gt;
weights, there is no reliable way to prove it has been removed. Machine&lt;br&gt;
unlearning is an active research problem. External engrams can be deleted by&lt;br&gt;
removing the entry — the erasure is provable because the knowledge was never&lt;br&gt;
in the weights.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is catastrophic forgetting?&lt;/strong&gt; When a neural network trained on new&lt;br&gt;
knowledge degrades in performance on older knowledge. This is a fundamental&lt;br&gt;
risk of continual training / parametric memory. External memory does not&lt;br&gt;
suffer from catastrophic forgetting — old entries persist unless explicitly&lt;br&gt;
decayed or deleted.&lt;/p&gt;




&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Gao, Y. et al. "Retrieval-Augmented Generation for Large Language Models: A
Survey." arXiv:2312.10997, December 2023.
&lt;a href="https://arxiv.org/abs/2312.10997" rel="noopener noreferrer"&gt;https://arxiv.org/abs/2312.10997&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Yan, S. et al. "Corrective Retrieval Augmented Generation." arXiv:2401.15884,
January 2024. &lt;a href="https://arxiv.org/abs/2401.15884" rel="noopener noreferrer"&gt;https://arxiv.org/abs/2401.15884&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Packer, C. et al. "MemGPT: Towards LLMs as Operating Systems."
arXiv:2310.08560, October 2023.
&lt;a href="https://arxiv.org/abs/2310.08560" rel="noopener noreferrer"&gt;https://arxiv.org/abs/2310.08560&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Zhang, Z. et al. "A Survey on the Memory Mechanism of Large Language Model
based Agents." arXiv:2404.13501, April 2024.
&lt;a href="https://arxiv.org/abs/2404.13501" rel="noopener noreferrer"&gt;https://arxiv.org/abs/2404.13501&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The Engram Specification, v2.1, March 2026.
&lt;a href="https://plur.ai/spec.html" rel="noopener noreferrer"&gt;https://plur.ai/spec.html&lt;/a&gt; (Apache-2.0)&lt;/li&gt;
&lt;li&gt;PLUR — Open source memory for AI agents. Apache-2.0.
&lt;a href="https://github.com/plur-ai/plur" rel="noopener noreferrer"&gt;https://github.com/plur-ai/plur&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>memory</category>
      <category>agents</category>
    </item>
    <item>
      <title>Is There an Open Standard for AI Agent Memory Engrams?</title>
      <dc:creator>gregor</dc:creator>
      <pubDate>Thu, 02 Jul 2026 19:41:19 +0000</pubDate>
      <link>https://dev.to/plur9/is-there-an-open-standard-for-ai-agent-memory-engrams-gm2</link>
      <guid>https://dev.to/plur9/is-there-an-open-standard-for-ai-agent-memory-engrams-gm2</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The short answer:&lt;/strong&gt; No single RFC-level standard exists for AI agent memory&lt;br&gt;
engrams as of mid-2026. The closest things are the &lt;strong&gt;Model Context Protocol&lt;br&gt;
(MCP)&lt;/strong&gt; — an open protocol from Anthropic that standardizes how applications&lt;br&gt;
expose context to LLMs — and the &lt;strong&gt;Engram Specification&lt;/strong&gt; (Apache-2.0), an&lt;br&gt;
open format published by PLUR that defines the data structure for portable&lt;br&gt;
agent memory. Together they address the transport layer and the data layer,&lt;br&gt;
but neither has achieved IETF-level standardization. The space is still&lt;br&gt;
fragmenting: Mem0, Letta, Zep, Cognee, and a dozen other projects each&lt;br&gt;
define their own memory schemas, and no interoperability standard has merged&lt;br&gt;
them yet.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why the question matters
&lt;/h2&gt;

&lt;p&gt;AI agents are stateless by default. Every session starts from zero — no memory&lt;br&gt;
of corrections, no recall of preferences, no knowledge of what tools exist.&lt;br&gt;
Users repeat themselves. Agents make the same mistakes. The fix is a &lt;strong&gt;memory&lt;br&gt;
layer&lt;/strong&gt;: a system that captures what an agent learns, stores it outside the&lt;br&gt;
model, and recalls the right piece at the right time. But every memory system&lt;br&gt;
today stores knowledge in its own format, behind its own API, locked to its own&lt;br&gt;
runtime. An agent that learns in Claude Code cannot share that memory with&lt;br&gt;
Cursor. A correction made in one tool does not propagate to another. This is&lt;br&gt;
not a technical limitation — it is a standards gap.&lt;/p&gt;

&lt;p&gt;A 2024 survey of LLM-based agent memory mechanisms (Zhang et al., "A Survey on&lt;br&gt;
the Memory Mechanism of Large Language Model based Agents,"&lt;br&gt;
&lt;a href="https://arxiv.org/abs/2404.13501" rel="noopener noreferrer"&gt;arXiv:2404.13501&lt;/a&gt;) catalogued the landscape&lt;br&gt;
and found that memory designs are "scattered across different papers" with no&lt;br&gt;
systematic review or common format. The survey identified multiple&lt;br&gt;
approaches — parametric memory (fine-tuning), non-parametric memory (retrieval),&lt;br&gt;
and hybrid architectures — but noted that each project implements its own&lt;br&gt;
schema, making interoperability impossible without a shared standard.&lt;/p&gt;

&lt;h2&gt;
  
  
  What exists today: two layers, neither complete
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The transport layer: Model Context Protocol (MCP)
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;Model Context Protocol&lt;/strong&gt; (&lt;a href="https://modelcontextprotocol.io/specification/2025-11-25" rel="noopener noreferrer"&gt;specification&lt;/a&gt;)&lt;br&gt;
is an open protocol, open-sourced by Anthropic in 2024, that standardizes how&lt;br&gt;
LLM applications connect to external data sources and tools. It defines a&lt;br&gt;
JSON-RPC 2.0 message format for communication between hosts (LLM applications),&lt;br&gt;
clients (connectors), and servers (context providers). MCP takes inspiration&lt;br&gt;
from the Language Server Protocol (LSP), which standardized how editors&lt;br&gt;
communicate with language tools — and in the same way, MCP aims to standardize&lt;br&gt;
how AI applications integrate external context.&lt;/p&gt;

&lt;p&gt;As of the 2025-11-25 specification version, MCP defines three server features:&lt;br&gt;
&lt;strong&gt;Resources&lt;/strong&gt; (context and data), &lt;strong&gt;Prompts&lt;/strong&gt; (templated workflows), and&lt;br&gt;
&lt;strong&gt;Tools&lt;/strong&gt; (functions the AI model can execute). A memory server can expose&lt;br&gt;
stored knowledge as resources or tools — and this is how PLUR's MCP server&lt;br&gt;
makes engrams accessible to Claude Code, Hermes, OpenClaw, and Cursor.&lt;/p&gt;

&lt;p&gt;But MCP is a transport protocol, not a memory format. It defines &lt;em&gt;how&lt;/em&gt;&lt;br&gt;
applications talk to a memory server — not &lt;em&gt;what&lt;/em&gt; the memory looks like. You&lt;br&gt;
can serve any data structure over MCP. Without a shared data format, every&lt;br&gt;
memory server speaks the protocol but stores knowledge differently. An agent&lt;br&gt;
switching from one MCP-compatible memory tool to another still cannot bring&lt;br&gt;
its memory along.&lt;/p&gt;

&lt;h3&gt;
  
  
  The data layer: the Engram Specification
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;Engram Specification&lt;/strong&gt; (&lt;a href="https://plur.ai/spec.html" rel="noopener noreferrer"&gt;plur.ai/spec.html&lt;/a&gt;),&lt;br&gt;
published in March 2026 under Apache-2.0 by the PLUR project, defines an open&lt;br&gt;
format for agent memory. An &lt;strong&gt;engram&lt;/strong&gt; — a term borrowed from cognitive&lt;br&gt;
science, where it means the physical trace a memory leaves — is one atomic&lt;br&gt;
unit of learned knowledge: a single fact, stored as a human-readable YAML&lt;br&gt;
entry outside the model, with provenance, a type classification (procedural,&lt;br&gt;
behavioral, terminological, architectural), a scope (where it applies), and a&lt;br&gt;
retrieval strength that decays over time and is reinforced by feedback.&lt;/p&gt;

&lt;p&gt;The specification defines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Core schema fields&lt;/strong&gt;: id, statement, type, scope, status&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Activation model&lt;/strong&gt;: retrieval strength, last accessed, frequency — with
time-based decay (modeled on ACT-R cognitive theory) and reinforcement on
access&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Feedback loop&lt;/strong&gt;: relevance signals (positive/negative/neutral) that train
injection quality over time&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search pipeline&lt;/strong&gt;: hybrid BM25 + embeddings, merged via Reciprocal Rank
Fusion, with optional reranking&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Minimum viable implementation&lt;/strong&gt;: the core schema, activation fields, time
decay, and the four operations (learn, recall, inject, feedback) — everything
else is optional&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The spec is designed for portability: an engram is a plain-text file you can&lt;br&gt;
open in any editor, put under version control, and carry between machines. Any&lt;br&gt;
agent runtime that can read YAML files or speak to an MCP server can consume&lt;br&gt;
engrams.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why neither alone is sufficient
&lt;/h3&gt;

&lt;p&gt;MCP solves the wire protocol but not the data model. The Engram Specification&lt;br&gt;
solves the data model but not the wire protocol. An agent that uses MCP for&lt;br&gt;
transport and engrams for storage can share memory across tools — but only with&lt;br&gt;
other agents that also adopt both. As of mid-2026, no memory project has&lt;br&gt;
committed to the engram format as its native storage, and MCP adoption is still&lt;br&gt;
concentrated in Anthropic-adjacent tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fragmentation problem
&lt;/h2&gt;

&lt;p&gt;The AI agent memory space is fragmented across at least a dozen open-source&lt;br&gt;
projects, each with its own storage format:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Project&lt;/th&gt;
&lt;th&gt;Memory format&lt;/th&gt;
&lt;th&gt;Interoperability&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mem0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Proprietary API + vector store&lt;/td&gt;
&lt;td&gt;REST API, no shared format&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Letta&lt;/strong&gt; (formerly MemGPT)&lt;/td&gt;
&lt;td&gt;OS-inspired memory tiers (core, archival, recall)&lt;/td&gt;
&lt;td&gt;API-based, Letta-specific&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Zep / Graphiti&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Temporal knowledge graph&lt;/td&gt;
&lt;td&gt;Graph queries, no shared format&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cognee&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Graph + vector + relational&lt;/td&gt;
&lt;td&gt;Own data model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PLUR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Open engram format (YAML, Apache-2.0 spec)&lt;/td&gt;
&lt;td&gt;MCP server, YAML files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;LangChain Memory&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Various module types&lt;/td&gt;
&lt;td&gt;LangChain ecosystem only&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;MemGPT (Packer et al., 2023, &lt;a href="https://arxiv.org/abs/2310.08560" rel="noopener noreferrer"&gt;arXiv:2310.08560&lt;/a&gt;)&lt;br&gt;
pioneered the idea of virtual context management — treating memory like an&lt;br&gt;
operating system manages memory tiers. But its format is Letta-specific. A&lt;br&gt;
correction stored in Letta's archival memory cannot be read by Mem0, Zep, or&lt;br&gt;
any other system.&lt;/p&gt;

&lt;p&gt;This fragmentation means that &lt;strong&gt;agent memory is not portable&lt;/strong&gt;. When a&lt;br&gt;
developer switches from one agent framework to another, their agent's learned&lt;br&gt;
knowledge does not transfer. This is the gap an open standard would fill.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a real standard would need
&lt;/h2&gt;

&lt;p&gt;For an open standard for AI agent memory to be meaningful, it would need to&lt;br&gt;
address:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;A shared data format&lt;/strong&gt; — what a memory entry looks like (the engram
specification attempts this: statement, type, scope, provenance,
activation fields)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A transport protocol&lt;/strong&gt; — how agents read and write memory (MCP addresses
this)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A query model&lt;/strong&gt; — how agents find the right memory at the right time
(hybrid search, activation-based recall)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A lifecycle model&lt;/strong&gt; — how memory is created, reinforced, decayed, and
deleted (ACT-R decay, feedback signals, provenance tracking)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An erasure guarantee&lt;/strong&gt; — proof that deleted memory is actually gone
(impossible with model-native memory baked into weights)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No project or specification covers all five layers today. The MCP + engram&lt;br&gt;
combination covers layers 1, 2, and parts of 3 and 4 — but it has not achieved&lt;br&gt;
the adoption needed to be called a standard.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is there an open standard for AI agent memory?&lt;/strong&gt; Not yet. The closest are&lt;br&gt;
MCP (an open protocol for connecting tools to LLMs) and the Engram&lt;br&gt;
Specification (an open format for memory data). Neither has achieved&lt;br&gt;
industry-wide adoption as a standard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the Model Context Protocol (MCP)?&lt;/strong&gt; An open protocol (JSON-RPC 2.0)&lt;br&gt;
that standardizes how LLM applications connect to external data sources and&lt;br&gt;
tools. It is the transport layer — it defines how applications talk to a&lt;br&gt;
memory server, but not what the memory looks like.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the Engram Specification?&lt;/strong&gt; An Apache-2.0 open format published by&lt;br&gt;
PLUR that defines agent memory as human-readable YAML entries (engrams) with&lt;br&gt;
provenance, type classification, scope, and activation-weighted recall. It is&lt;br&gt;
the data layer — it defines what memory looks like, but not how it is&lt;br&gt;
transported.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can agent memory be shared between tools?&lt;/strong&gt; In theory, yes — an agent using&lt;br&gt;
MCP for transport and the engram format for storage could share memory with any&lt;br&gt;
other agent that adopts both. In practice, no major memory project has&lt;br&gt;
committed to the engram format yet, so memory remains locked to each tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Will an open standard emerge?&lt;/strong&gt; The pressure is building. As agents move from&lt;br&gt;
single-tool experiments to multi-tool workflows, the cost of non-portable&lt;br&gt;
memory grows. MCP adoption is accelerating. The engram format is published and&lt;br&gt;
implementable. Whether the industry converges on this combination — or waits&lt;br&gt;
for an IETF-style process — is the open question.&lt;/p&gt;




&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Model Context Protocol Specification, version 2025-11-25.
&lt;a href="https://modelcontextprotocol.io/specification/2025-11-25" rel="noopener noreferrer"&gt;https://modelcontextprotocol.io/specification/2025-11-25&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The Engram Specification, v2.1, March 2026.
&lt;a href="https://plur.ai/spec.html" rel="noopener noreferrer"&gt;https://plur.ai/spec.html&lt;/a&gt; (Apache-2.0)&lt;/li&gt;
&lt;li&gt;Zhang, Z. et al. "A Survey on the Memory Mechanism of Large Language Model
based Agents." arXiv:2404.13501, April 2024.
&lt;a href="https://arxiv.org/abs/2404.13501" rel="noopener noreferrer"&gt;https://arxiv.org/abs/2404.13501&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Packer, C. et al. "MemGPT: Towards LLMs as Operating Systems."
arXiv:2310.08560, October 2023.
&lt;a href="https://arxiv.org/abs/2310.08560" rel="noopener noreferrer"&gt;https://arxiv.org/abs/2310.08560&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Gao, Y. et al. "Retrieval-Augmented Generation for Large Language Models: A
Survey." arXiv:2312.10997, December 2023.
&lt;a href="https://arxiv.org/abs/2312.10997" rel="noopener noreferrer"&gt;https://arxiv.org/abs/2312.10997&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;PLUR — Open source memory for AI agents. Apache-2.0.
&lt;a href="https://github.com/plur-ai/plur" rel="noopener noreferrer"&gt;https://github.com/plur-ai/plur&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>memory</category>
    </item>
  </channel>
</rss>
