{
  "source_file": "0930",
  "source_platform": "Dev.to",
  "author": "Edward Izgorodin",
  "title_listed": "What are the best persistent memory APIs for AI agents?",
  "keywords": "",
  "domain": "大模型算法",
  "content_type": "深度技术解析",
  "is_paid_flag": "否",
  "url": "https://dev.to/izgorodin/what-are-the-best-persistent-memory-apis-for-ai-agents-4lln",
  "publish_date": "2026-09-24",
  "corpus_stage": "",
  "notes": "",
  "id": "33cacd615398",
  "collected_at": "2026-10-02T14:02:58",
  "title": "What are the best persistent memory APIs for AI agents? - DEV Community",
  "body_markdown": "You need your agent to remember things between sessions, you search for the best persistent memory API, and every list you find is a feature grid where every row has a tick in every column. Everyone has memory. Everyone has a graph. Everyone learns. Then you pick one, and three weeks later the question that actually mattered for your project turns out to be the one the grid never asked.\nSo I stopped asking which system is best and asked the same six questions of six systems instead: Mem0, Letta, Zep with its open-source engine Graphiti, Cognee, Supermemory and Mnemoverse. The answers come from each vendor's own pages, read on 18 September 2026. I work on the last one, which is reason to weigh my reading of it harder.\nOne line to carry: every one of these six says somewhere that it learns or improves, two of them name the step that turns a rating into ranking, five of them can be run with no vendor account, and the right choice depends on which of those you actually need.\n1. How is memory stored and found?\nSix different mechanisms, and the differences are real.\nMem0 fuses several signals at read time, semantic similarity, keyword matching and an entity layer, with dates reordering results on its hosted platform. Letta's agent memory is Markdown files in a git repository, and its FAQ says plainly that \"MemFS does not include a semantic or vector index by default\". Zep and Graphiti build a temporal knowledge graph and retrieve through a hybrid of semantic search, keyword matching and graph traversal. Cognee runs a relational store, a vector store and an LLM-built graph together, and defines itself against plain retrieval: \"Classic RAG embeds text chunks and retrieves by similarity.\" Supermemory describes a learning model on top of a graph of typed connections between facts.\nOurs stores memories written with the concepts you give them and retrieves by meaning. What makes it different is in the ranking: the reference documents the relevance of a read as \"Final score (similarity * valence modulation)\", and valence is the thing outcome feedback moves. More on that in question 3.\n2. Does the same memory follow you between tools?\nAll six document a route. Mem0 says its memory \"persists across sessions, tools, and runs\". Supermemory's MCP documentation says \"Supermemory MCP gives every MCP-compatible assistant a shared memory layer\". Cognee's MCP overview describes an API mode that can \"Connect multiple clients to a shared knowledge graph\". Zep's hosted product and Graphiti's MCP server both document editor setups. Ours is one account behind one key or OAuth, with Claude Code, Cursor, VS Code, Windsurf and Claude Desktop each documented in its own configuration shape.\nLetta answers differently. Its route into editors is its own Agent Client Protocol adapter, set up for Zed, JetBrains IDEs and Obsidian, plus an OpenAI-compatible API on its App Server. If your editor is Cursor or VS Code, check that route before assuming it.\n3. Does anything change when a memory turns out to be wrong?\nThis is the question the grids never ask, and it is where the six separate most.\nMem0 has a feedback endpoint, and its page describes the effect this way: \"Over time, Mem0 continuously learns from this feedback, refining its memory generation and search capabilities for better performance.\" That page names no step from the rating to the ranking. The same product documents a separate feature, memory decay, step by step and precisely: \"Decay never zeroes a candidate out: at worst it scales its score by 0.3×\". Both are on the hosted platform.\nZep had fact ratings, a rule written up front and scored against every fact. Its February 2026 deprecation notice says: \"Fact ratings are being deprecated entirely.\" Letta records a positive or negative signal per agent step, and the pages I read document no effect of it on memory. Supermemory keeps inferred memories low until they are approved, expires temporary facts and strengthens preferences with repetition, and on the pages I read documents nothing tied to whether a recalled memory actually helped.\nTwo name the step. Cognee stores ratings and can apply them to ranking, and its release notes say the default influence \"remains\n0.0\n\", so it is off until you turn it on. Ours takes a rating through a\nmemory_feedback\ncall, and the valence it moves is part of the documented ranking formula above. The call is one of the tools in the same MCP connection the agent reads through, so the agent that saw the outcome can report it in the same session. In both, what moves the ranking is a rating actually being sent.\n4. Can several agents or people share one pool?\nSix shapes. Mem0 has group chat with every write scoped by the caller. Letta has shared memory blocks. Zep has standalone graphs, and Graphiti gives each team its own graph namespace. Cognee treats an agent as its own permission-holding principal, and warns that its default embedded store is not for agents writing at once. Supermemory shares through spaces, where \"Teammates collaborate within the spaces they are allowed to read or write.\" Ours calls them Rooms: a shared space separate from anyone's personal memory, with membership checked on every request.\n5. What does it cost to start, and can you run it yourself?\nFive of the six can run with no vendor account on your own machine, on a model you bring: Mem0's open-source library, Letta's local runtime, where \"no Letta account is required\", Cognee's core, Graphiti, and Supermemory's local binary. Zep's own local edition is gone, in its FAQ's words: \"Zep Community Edition, which allows you to host Zep locally, is deprecated and no longer supported.\" Graphiti is the open path there.\nLetta puts a number on its hosted free tier: \"Free plans are limited to 3 stateful agents.\"\nOurs has a free tier and is managed by default: the service you connect to is the product, and we run the engine for you. Enterprise adds dedicated instances that we provide and operate, a choice of data residency, and self-hosting by agreement when security or compliance requirements call for it.\n6. What does each one tell you about its own limits?\nThe useful ones say it themselves. Mem0's graph documentation says its entity layer does not assign typed relationships between entities. Letta's FAQ says there is no vector index by default. Cognee says its embedded store is not for concurrent agents. Zep says fact ratings are going away. Ours puts its terms in the same places: the pricing page says who runs the engine and when you can run it yourself, and the reference gives the ranking formula that a rating moves.\nThe six answers in one table\nmemory\nacross tools\noutcome feedback\nsharing\nrun it yourself\nMem0\nsemantic, keyword and entity signals fused\nyes\nendpoint, no step named; decay specified\ngroup chat, caller-scoped\nyes, open-source library\nLetta\nMarkdown files in git, no vector index by default\nvia its ACP adapter and an OpenAI-compatible API\nper-step signal, no memory effect documented\nshared memory blocks\nyes, local runtime\nZep / Graphiti\ntemporal knowledge graph\nyes\nfact ratings, being deprecated\nstandalone graphs; team namespaces\nGraphiti only\nCognee\nrelational, vector and LLM-built graph\nyes, API mode\nstep named, off by default\nprincipals and permissions\nyes\nSupermemory\nlearning model over a typed graph\nyes\nreview, expiry, repetition\nspaces\nyes, local binary\nMnemoverse\nconcepts plus a ranking that feedback moves\nyes, one account\nstep named, an MCP tool the agent calls\nRooms\nEnterprise, by agreement\nSo which is best?\nThe one whose answer to your hardest question is the one you need. If you must run it yourself, five document a local path with no vendor account, and ours offers it on Enterprise by agreement. If you need wrong memories to lose ground over time, two name how that happens, and in both it depends on a rating actually being sent. If your agents live in Letta or your editor speaks ACP, Letta's route is built for you and the others are not. Picking by the number of ticks in a grid is how you end up re-asking this question in three weeks.\nWhich of the six questions turned out to matter most after you had already chosen?\nDisclosure: I work on\nMnemoverse\n, one of the six systems above, so weigh the argument accordingly. The full comparison with every source page is on our library, and the MCP server is open source (MIT):\ngithub.com/mnemoverse/mcp-memory-server\n.",
  "metadata": {
    "title": "What are the best persistent memory APIs for AI agents? - DEV Community",
    "description": "You need your agent to remember things between sessions, you search for the best persistent memory... Tagged with ai, agents, llm, mcp.",
    "keywords": "ai, agents, llm, mcp, software, coding, development, engineering, inclusive, community",
    "author": null,
    "og:type": "article",
    "og:url": "https://dev.to/izgorodin/what-are-the-best-persistent-memory-apis-for-ai-agents-4lln",
    "og:title": "What are the best persistent memory APIs for AI agents?",
    "og:description": "You need your agent to remember things between sessions, you search for the best persistent memory...",
    "og:site_name": "DEV Community",
    "og:image": "https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3za9f9m6qnqgglzhz8pj.png",
    "twitter:site": "@thepracticaldev",
    "twitter:creator": "@",
    "twitter:title": "What are the best persistent memory APIs for AI agents?",
    "twitter:description": "You need your agent to remember things between sessions, you search for the best persistent memory...",
    "twitter:card": "summary_large_image",
    "twitter:widgets:new-embed-design": "on",
    "twitter:image:src": "https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3za9f9m6qnqgglzhz8pj.png"
  },
  "paywall": {
    "listed_paid": false,
    "detected": false,
    "marker": "",
    "public_only": false,
    "policy": "付费/会员内容只保留页面公开可见部分，不绕过付费墙"
  },
  "crawl": {
    "success": true,
    "status_code": 200,
    "error": ""
  },
  "code_blocks": [],
  "images": [],
  "audio": [],
  "videos": [],
  "links": [
    {
      "href": "https://mnemoverse.com/",
      "label": "Mnemoverse",
      "type": "a"
    },
    {
      "href": "https://github.com/mnemoverse/mcp-memory-server",
      "label": "github.com/mnemoverse/mcp-memory-server",
      "type": "a"
    }
  ],
  "repair_version": 2,
  "repaired_at": "2026-10-14T10:49:24Z",
  "source_url": "https://dev.to/izgorodin/what-are-the-best-persistent-memory-apis-for-ai-agents-4lln",
  "papers": [],
  "actual_video_files": [],
  "body_chars": 8403,
  "expected_body_images": 0,
  "discovery_status": "ok",
  "delivery_status": "ok",
  "missing_reason": "",
  "raw_html": "attachments/33cacd615398/pages/source.html",
  "local_html": "attachments/33cacd615398/pages/article.html",
  "body_base_path": "attachments/33cacd615398/pages/",
  "body_markdown_path": "attachments/33cacd615398/pages/article.md"
}