---
title: "Supermemory: AI Agent Memory, RAG and Local Setup"
canonical: https://wavect.io/blog/supermemory-ai-agent-memory/
language: en
description: "Build AI agents that remember users with Supermemory. Explore memory updates, hybrid RAG, API and Ollama setup, benchmark claims, and production checks."
image: "https://wavect.io/img/blog/headers/header_supermemory-ai-agent-memory.png"
---

[**Back**](/blog/overview/)

[![Kevin Riedl](/img/team/kevin.webp)](/team/kevin-riedl/)

[Kevin Riedl](/team/kevin-riedl/) https://linkedin.com/in/wsdt

14 min read · 17 Sep 2026 Last reviewed September 17, 2026

[**Next**](/blog/openviking-agent-memory-review/)

# Supermemory: AI Agent Memory, RAG and Local Setup

TL;DR

Supermemory adds persistent user context to AI applications through fact extraction, updated memories, profiles and combined document-and-memory retrieval. Choose a hosted integration or evaluate its local server with Ollama. Treat benchmark rankings and latency figures as vendor claims, not application guarantees. Test tenant isolation, corrections, expiry, actual erasure, multilingual recall and cost before production.

Your agent remembers the last ten messages perfectly. A new session starts, and the user has to explain the same project again. That is not inevitable for every AI product: it is what happens when an application has no persistent memory beyond its current conversation.

**Supermemory is a memory layer that turns conversations and documents into reusable context.** It extracts facts, relates new information to existing knowledge and retrieves relevant context for a later request. The application supplies the material and decides how to use the results. This changes the agent's available context, not the underlying model's weights. [Supermemory product overview](https://supermemory.ai/docs/overview/what-is-supermemory)

**Source review:** 17 September 2026. This is a documentation-based engineering guide, not a hands-on benchmark reproduction or a claim that Wavect deployed Supermemory for a client.

## How does Supermemory learn, update and forget?

The useful distinction is between **source documents**, such as a conversation transcript, and **derived memories**, such as a user's preferred language. A transcript is evidence; an extracted or inferred fact is an interpretation that can be wrong.

- **Fact extraction:** turn conversational material into focused facts instead of replaying the entire chat.
- **Knowledge updates:** relate a correction to earlier knowledge. In the example “I moved to San Francisco,” the previous current-location claim “I live in New York” should no longer be treated as current. That does not mean deleting the historical move.
- **Time-aware forgetting:** temporary context such as an exam scheduled for tomorrow should stop influencing unrelated future answers after its relevant period.

The documented graph supports updating, extending and deriving memories, with an `isLatest` distinction for current knowledge. That is a lifecycle beyond merely storing embeddings. Still, test ambiguous dates, time zones, fictional examples and conflicting statements before trusting extracted facts. [Graph memory and knowledge relationships](https://supermemory.ai/docs/concepts/graph-memory)

**Forgetting is not the same as erasure.** The documented forget-memory endpoint performs a soft delete. A fact that disappears from ordinary retrieval is not proof that its source transcript, derived copies or backups have been permanently removed. Treat user-visible forgetting and a verified deletion request as separate product requirements. [Forget-memory API and soft-delete behavior](https://supermemory.ai/docs/api-reference/content-management/forget-a-memory)

## What do static and dynamic user profiles contain?

A profile offers compact context at the start of a request. Its **static** part describes relatively stable information; its **dynamic** part covers recent activity and changing circumstances. “Prefers short technical answers” belongs in a different lifecycle from “is preparing this week's launch.” Static should not be interpreted as immutable.

Profiles are retrieved for a `containerTag`. Supplying a query can also retrieve relevant memories alongside the profile. Prefer compact, relevant context over placing every saved fact into every prompt, especially when personal details are unrelated to the task. [User profiles and query-aware retrieval](https://supermemory.ai/docs/concepts/user-profiles)

## Supermemory versus RAG: what actually changes?

**RAG can already be personalized.** A retrieval system can filter documents by user, tenant and permissions. The claim that plain RAG necessarily gives every user the same documents is too broad. The harder problem is maintaining which user facts are current, outdated, temporary or inferred. That is the additional layer to evaluate here. [Supermemory's memory-versus-RAG model](https://supermemory.ai/docs/concepts/memory-vs-rag)

| Approach | Main question | Responsibility to retain |
| --- | --- | --- |
| Document RAG | What does the approved source say? | Source freshness, access control and grounding. |
| User memory | What relevant context is currently true for this person? | Correction, provenance, consent and retention. |
| Hybrid retrieval | Which source material and personal context help this request? | Scoped retrieval and a bounded, trustworthy context budget. |

Supermemory's explicit `searchMode: "hybrid"` combines document chunks and extracted memories in one search. Here, “hybrid” refers to those two content types; do not assume a specific keyword-and-vector implementation from the name alone. You do not have to assemble the vector database, embedding pipeline and chunking layer yourself for the hosted integration, but those responsibilities have moved into a service, not disappeared. [Search modes, filters and returned context](https://supermemory.ai/docs/recall/search)

## Is Supermemory number one on AI memory benchmarks?

The project's [Supermemory GitHub repository and benchmark claims](https://github.com/supermemoryai/supermemory) reports first place on **LongMemEval, LoCoMo and ConvoMem**. It also reports **95% Recall@15** on LongMemEval, approximately **720 tokens** of retrieved context, a **99.4% context reduction**, and profiles in approximately **50 ms**. These are the vendor's published claims as reviewed on the date above, not independently reproduced Wavect measurements.

**Recall@15 is a retrieval metric, not 95% answer accuracy.** Finding relevant information among fifteen results does not prove that the final answer uses it correctly, notices a later correction, or abstains when evidence is missing. A reported context reduction is also not an equivalent reduction in your complete API bill.

The approximately 50 ms profile figure is not a universal latency promise. The provider also publishes different server-side and end-to-end profile timings in its production overview. Different workloads and measurement boundaries are not directly interchangeable; measure your own median and p95 latency, including the network and model call. [Supermemory's published production timing overview](https://supermemory.ai/)

| Benchmark | Relevant evaluation focus | What not to infer |
| --- | --- | --- |
| [LongMemEval benchmark repository](https://github.com/xiaowu0162/LongMemEval) | Extraction, cross-session reasoning, temporal reasoning, updates and abstention. | A retrieval result is not automatically a successful end-to-end answer. |
| [LoCoMo benchmark repository](https://github.com/snap-research/locomo) | Long conversational histories and questions requiring recall or reasoning. | Performance on its conversations need not transfer to your customer data. |
| [ConvoMem benchmark repository](https://github.com/SalesforceAIResearch/ConvoMem) | User and assistant facts, changing facts, preferences, abstention and implicit connections. | A ranking does not establish your application's privacy or reliability. |

For a useful comparison, freeze the dataset version, answer model, extraction model, retrieval budget and scoring rules. Report both retrieval and final task success. The project's MemoryBench separates ingestion, search, answer generation, evaluation and reporting, which provides a starting structure for a repeatable comparison. [MemoryBench evaluation workflow](https://supermemory.ai/docs/memorybench/overview)

## Three ways to use Supermemory

### 1. Add memory to an existing AI tool

The repository lists integrations for tools including Claude Code, Cursor and Codex. The hosted MCP route connects compatible clients to a persistent memory service. Check each plugin's actual read/write behavior and permissions; installing a plugin is not permission to upload every repository secret or personal conversation. [Hosted MCP setup and authentication](https://supermemory.ai/docs/supermemory-mcp/setup)

### 2. Add memory to your product

Use the API to ingest selected conversations, files and reference material, then retrieve a profile or scoped search results before generation. Hosted connectors can bring in data from services such as Google Drive, Gmail and Notion. Decide which accounts, folders and documents are allowed before enabling synchronization. [Supported connectors and synchronization model](https://supermemory.ai/docs/connectors/overview)

### 3. Run the memory service locally

The local option packages the memory service as a binary with a compatible API, using models you configure. It is not a copy of every hosted feature: the documented local offering excludes hosted connectors and hosted MCP. Nor does API compatibility prove that a chosen Ollama model reproduces the cloud service's extraction quality or benchmark results. [Local versus hosted Supermemory capabilities](https://supermemory.ai/docs/self-hosting/overview)

## A scoped Supermemory API example with bounded polling

The following server-side example uses Node.js 22 or later and native `fetch`; no SDK dependency is required. Save it as `supermemory-demo.mjs`, set `SUPERMEMORY_API_KEY` in your server environment and run `node supermemory-demo.mjs`. It sends synthetic conversation and handbook content to the hosted API and can incur usage charges. No key belongs in browser code.

Ingestion is asynchronous. The example waits for both documents, fails on processing errors and limits polling rather than searching immediately after an accepted write. `dreaming: "instant"` makes the conversation suitable for this immediate-read demo and bills an extra operation. Default dynamic processing can batch memory extraction beyond document indexing; choose it deliberately for production throughput. [Official ingestion, polling and retrieval quickstart](https://supermemory.ai/docs/quickstart)

```
const apiKey = process.env.SUPERMEMORY_API_KEY;
if (!apiKey) throw new Error("Set SUPERMEMORY_API_KEY first.");

const baseURL = "https://api.supermemory.ai";
// Synthetic demo scope. In a product, derive this from authenticated identity.
const containerTag = "tenant_demo_user_42";
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));

async function request(path, body) {
  const response = await fetch(`${baseURL}${path}`, {
    method: body === undefined ? "GET" : "POST",
    headers: {
      Authorization: `Bearer ${apiKey}`,
      "Content-Type": "application/json",
    },
    body: body === undefined ? undefined : JSON.stringify(body),
    signal: AbortSignal.timeout(10_000),
  });
  // Do not log response bodies containing personal data or credentials.
  if (!response.ok) throw new Error(`Supermemory HTTP ${response.status}`);
  return response.json();
}

async function waitUntilDone(id) {
  if (typeof id !== "string" || !id) throw new Error("Missing document ID.");
  for (let attempt = 0; attempt < 20; attempt += 1) {
    const document = await request(`/v3/documents/${encodeURIComponent(id)}`);
    if (!document || typeof document.status !== "string") {
      throw new Error("Invalid document status response.");
    }
    if (document.status === "failed") throw new Error("Ingestion failed.");
    if (document.status === "done") return;
    if (attempt < 19) await sleep(1500);
  }
  throw new Error("Ingestion did not finish within the polling budget.");
}

const conversation = await request("/v3/documents", {
  content: [
    "user: I prefer short onboarding checklists.",
    "assistant: Which project are you working on?",
    "user: The Acme analytics dashboard. We use TypeScript.",
  ].join("\n"),
  containerTag,
  customId: "tenant_demo_user_42_chat_onboarding_001",
  metadata: { type: "conversation" },
  dreaming: "instant",
});

const handbook = await request("/v3/documents", {
  content: "Acme onboarding: create a sandbox, complete the security " +
    "checklist, then request a review before production access.",
  containerTag,
  customId: "tenant_demo_user_42_handbook_001",
  metadata: { type: "document", source: "synthetic-handbook" },
  taskType: "superrag",
});

await waitUntilDone(conversation.id);
await waitUntilDone(handbook.id);

const profileResponse = await request("/v4/profile", { containerTag });
const searchResponse = await request("/v4/search", {
  q: "What should I do next for Acme onboarding?",
  containerTag,
  searchMode: "hybrid",
  limit: 5,
});

const profile = profileResponse?.profile;
if (!Array.isArray(profile?.static) || !Array.isArray(profile?.dynamic) ||
    !Array.isArray(searchResponse?.results)) {
  throw new Error("Unexpected profile or search response shape.");
}
console.log({
  staticFacts: profile.static.length,
  dynamicFacts: profile.dynamic.length,
  retrievedItems: searchResponse.results.length,
});
```

The code prints counts, not raw personal information. It retrieves context but intentionally does not send it to a generation model or claim that a correct answer was produced. In a chat application, supply relevant retrieved context as untrusted data, generate the answer, then persist only the conversation material covered by your retention policy. Use a stable, scoped session identifier and verify the provider's update semantics before retrying writes.

**A tag is not an authorization system.** The demo's fixed tag is for fictional data. In production, derive tenant and user scope on the server from authenticated identity. Do not accept an arbitrary browser-provided tag under an organization-wide key. The service documents scoped keys; use appropriate scopes, keep privileged credentials server-side and test cross-tenant access attempts. [API authentication and scoped keys](https://supermemory.ai/docs/authentication)

## Can Supermemory run offline with Ollama?

Yes, with the local binary, a running local model provider and local embeddings. Download the binary and model files first; initial installation is not offline. The provider documentation shows Ollama through an OpenAI-compatible endpoint. Compatibility here describes an HTTP interface, not a requirement to send data to a cloud model. [Local model providers and Ollama configuration](https://supermemory.ai/docs/self-hosting/providers)

After installing the local server, starting Ollama and downloading `gpt-oss:20b` with `ollama pull gpt-oss:20b`, the following configuration illustrates a local extraction provider and multilingual embeddings. The model is an example, not a hardware sizing recommendation. Use a fresh data directory for the first run with this embedding configuration.

```
OPENAI_BASE_URL=http://localhost:11434/v1 \
OPENAI_API_KEY=ollama \
OPENAI_MODEL=gpt-oss:20b \
SUPERMEMORY_EMBEDDING_PROVIDER=local \
SUPERMEMORY_EMBEDDING_MODEL=Xenova/bge-m3 \
SUPERMEMORY_EMBEDDING_DIMENSIONS=1024 \
supermemory-server
```

**Important for multilingual products:** the documented default local embedding model, `Xenova/bge-base-en-v1.5`, is English-only. The documentation offers `Xenova/bge-m3` with 1,024 dimensions as a multilingual alternative, shown above. Select the model before ingesting a large corpus. Changing embedding models or dimensions requires a fresh compatible index and re-ingestion; do not mix vector spaces. Test German, Spanish and Chinese queries rather than assuming successful ingestion proves good recall. [Local embedding models and multilingual configuration](https://supermemory.ai/docs/self-hosting/embeddings)

Use the local server's generated API key and replace the demo's base URL with `http://localhost:6767`. Do not reuse a hosted key. Before calling the setup fully offline, check every provider, file dependency and outbound connection. Restrict network exposure and plan local storage, backups, upgrades and recovery.

## What should a production memory pilot prove?

Start with one repeated workflow and a frozen baseline, such as your existing conversation summary plus tenant-filtered RAG. The following is **Wavect's proposed acceptance checklist**, not a claim that Supermemory has passed these tests.

| Scenario | Evidence to require |
| --- | --- |
| New session and corrected fact | Relevant context survives a restart; a later correction takes precedence without inventing history. |
| Expiry and missing evidence | Temporary facts stop affecting unrelated answers; the agent abstains instead of guessing. |
| Tenant boundary and poisoned memory | Another user's context cannot be retrieved; stored instructions cannot grant permissions or override system rules. |
| Deletion request | Verify the agreed erasure scope across originals, derived memories, profiles, caches and backup handling. |
| Languages and operating failures | Score representative languages, malformed responses, failed ingestion, timeouts and repeat submissions. |
| Latency and total cost | Measure p50/p95 and cost per accepted task, including ingestion, extraction, retrieval, generation and operations. |

Do not treat stored memories as authoritative access-control rules. A remembered statement such as “I am an administrator” is not a signed role assignment. Let users inspect and correct relevant memory, minimize sensitive retention, and keep provenance so an operator can explain why an answer used a fact.

For cost, count the full workflow rather than only the final prompt. The hosted service meters usage and distinguishes operations, including the extra instant-processing operation. The local route replaces some service dependence with model and infrastructure responsibility. Compare cost per successfully completed task, not a context-reduction percentage in isolation. [Supermemory billing and usage model](https://supermemory.ai/docs/overview/billing)

## When is Supermemory worth adopting?

It is worth a bounded pilot when users return repeatedly, their preferences or projects change, and reconstructing personal context creates friction. A support copilot, onboarding assistant or recurring project assistant is a clearer fit than a one-off document lookup. For a small, stable knowledge base with no evolving user state, ordinary permission-aware RAG may be the simpler starting point.

Compare architecture and operating responsibility with our [OpenViking agent-memory review](/blog/openviking-agent-memory-review/). For an implementation plan, Wavect's [AI development service](/services/artificial-intelligence/) can connect retrieval design to product goals. Our [Twinsoft AI case study](/case-studies/twinsoft-ai/) provides a separate example of AI product work, not evidence of a Supermemory deployment.

Use the [software QA checklist before launch](/software-development-guide/software-qa-checklist-before-launch/) to turn the memory pilot into release criteria, or [discuss a scoped agent-memory assessment](/contact/). The decision should be based on fewer repeated explanations and better verified outcomes, not on memory volume or a leaderboard alone.

## Supermemory FAQ

### What is Supermemory?

Supermemory is a memory layer for AI applications. It ingests conversations and documents, extracts and updates facts, builds user profiles, and retrieves useful context across sessions. Your application still chooses what to store and how to use that context.

### Does Supermemory replace RAG or a vector database?

It can replace the vector-database, embedding and chunking setup you would otherwise assemble for this memory use case. It does not make retrieval unnecessary. Its hybrid search combines document chunks and extracted memories, while your application remains responsible for authorization and answer quality.

### Does automatic forgetting permanently delete personal data?

Not necessarily. Expiry, exclusion from normal recall, and permanent erasure are different operations. The documented forget-memory endpoint performs a soft delete. Verify deletion of source documents, derived memories, profiles, caches and backups under your own retention policy.

### Is Supermemory independently proven to be number one on every memory benchmark?

No such universal conclusion follows from the published claims. The repository reports leading results on LongMemEval, LoCoMo and ConvoMem. This article does not independently reproduce them. Recall@15 measures retrieval coverage, not end-to-end answer accuracy.

### Can Supermemory run offline with Ollama?

The local server can use Ollama for extraction and local embedding models. Fully offline operation requires the binary and models to be downloaded first and every configured provider to be local. The local feature set is not identical to hosted Supermemory; hosted connectors and MCP are not included.

### What should a production Supermemory pilot test?

Test cross-session recall, corrected facts, expiry, abstention, tenant isolation, malicious stored instructions, verifiable erasure, multilingual retrieval, failure recovery and latency and cost per successful task. Use your own conversations and compare against a fixed baseline.

Agent engineering

## Continue through this cluster

Coding agents, MCP, context systems, evaluation and the controls required for dependable automation.

[Start with the cornerstone**Graph Engineering for AI Agents: When Does a Knowledge Graph Pay Off?**](/blog/graph-engineering-ai-agents/)

- [AI Agent Design Patterns: Start Simple, Verify Actions](/blog/ai-agent-design-patterns/)
- [Claude Mods: Setup, Function Hooks and Security](/blog/claude-mods-function-hooks/)
- [Voicebox: Local Voice Cloning, Dictation and MCP Setup](/blog/voicebox-local-voice-cloning-mcp/)
- [Valyu’s 0.6B Multi-Agent Router: Results, Limits and When to Train One](/blog/valyu-slm-multi-agent-router/)
- [OpenAI Agents API Review: Migration, Costs and Data Controls](/blog/openai-agents-api-managed-harness-review/)

[**Back**](/blog/overview/)

[![Kevin Riedl](/img/team/kevin.webp)](/team/kevin-riedl/)

[Kevin Riedl](/team/kevin-riedl/) https://linkedin.com/in/wsdt

14 min read · 17 Sep 2026 Last reviewed September 17, 2026

[**Next**](/blog/openviking-agent-memory-review/)

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/blog/supermemory-ai-agent-memory/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-09-17",
      "inLanguage": "en",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-09-17",
      "url": "https://wavect.io/blog/supermemory-ai-agent-memory/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "abstract": "Supermemory adds persistent user context to AI applications through fact extraction, updated memories, profiles and combined document-and-memory retrieval. Choose a hosted integration or evaluate its local server with Ollama. Treat benchmark rankings and latency figures as vendor claims, not application guarantees. Test tenant isolation, corrections, expiry, actual erasure, multilingual recall and cost before production.",
  "articleBody": " Blog overview/AI and agents/Agent engineering Supermemory: AI Agent Memory, RAG and Local Setup TL;DR Supermemory adds persistent user context to AI applications through fact extraction, updated memories, profiles and combined document-and-memory retrieval. Choose a hosted integration or evaluate its local server with Ollama. Treat benchmark rankings and latency figures as vendor claims, not application guarantees. Test tenant isolation, corrections, expiry, actual erasure, multilingual recall and cost before production. Your agent remembers the last ten messages perfectly. A new session starts, and the user has to explain the same project again. That is not inevitable for every AI product: it is what happens when an application has no persistent memory beyond its current conversation. Supermemory is a memory layer that turns conversations and documents into reusable context. It extracts facts, relates new information to existing knowledge and retrieves relevant context for a later request. The application supplies the material and decides how to use the results. This changes the agent's available context, not the underlying model's weights. Supermemory product overview Source review: 17 September 2026. This is a documentation-based engineering guide, not a hands-on benchmark reproduction or a claim that Wavect deployed Supermemory for a client. How does Supermemory learn, update and forget? The useful distinction is between source documents, such as a conversation transcript, and derived memories, such as a user's preferred language. A transcript is evidence; an extracted or inferred fact is an interpretation that can be wrong. Fact extraction: turn conversational material into focused facts instead of replaying the entire chat. Knowledge updates: relate a correction to earlier knowledge. In the example “I moved to San Francisco,” the previous current-location claim “I live in New York” should no longer be treated as current. That does not mean deleting the historical move. Time-aware forgetting: temporary context such as an exam scheduled for tomorrow should stop influencing unrelated future answers after its relevant period. The documented graph supports updating, extending and deriving memories, with an isLatest distinction for current knowledge. That is a lifecycle beyond merely storing embeddings. Still, test ambiguous dates, time zones, fictional examples and conflicting statements before trusting extracted facts. Graph memory and knowledge relationships Forgetting is not the same as erasure. The documented forget-memory endpoint performs a soft delete. A fact that disappears from ordinary retrieval is not proof that its source transcript, derived copies or backups have been permanently removed. Treat user-visible forgetting and a verified deletion request as separate product requirements. Forget-memory API and soft-delete behavior What do static and dynamic user profiles contain? A profile offers compact context at the start of a request. Its static part describes relatively stable information; its dynamic part covers recent activity and changing circumstances. “Prefers short technical answers” belongs in a different lifecycle from “is preparing this week's launch.” Static should not be interpreted as immutable. Profiles are retrieved for a containerTag. Supplying a query can also retrieve relevant memories alongside the profile. Prefer compact, relevant context over placing every saved fact into every prompt, especially when personal details are unrelated to the task. User profiles and query-aware retrieval Supermemory versus RAG: what actually changes? RAG can already be personalized. A retrieval system can filter documents by user, tenant and permissions. The claim that plain RAG necessarily gives every user the same documents is too broad. The harder problem is maintaining which user facts are current, outdated, temporary or inferred. That is the additional layer to evaluate here. Supermemory's memory-versus-RAG model Document retrieval, persistent memory and the combined approach ApproachMain questionResponsibility to retain Document RAGWhat does the approved source say?Source freshness, access control and grounding. User memoryWhat relevant context is currently true for this person?Correction, provenance, consent and retention. Hybrid retrievalWhich source material and personal context help this request?Scoped retrieval and a bounded, trustworthy context budget. Supermemory's explicit searchMode: \"hybrid\" combines document chunks and extracted memories in one search. Here, “hybrid” refers to those two content types; do not assume a specific keyword-and-vector implementation from the name alone. You do not have to assemble the vector database, embedding pipeline and chunking layer yourself for the hosted integration, but those responsibilities have moved into a service, not disappeared. Search modes, filters and returned context Is Supermemory number one on AI memory benchmarks? The project's",
  "articleSection": "Engineering",
  "author": {
    "@id": "https://wavect.io/team/kevin-riedl/#person",
    "@type": "Person",
    "name": "Kevin Riedl",
    "sameAs": [
      "https://www.wikidata.org/wiki/Q139796365",
      "https://www.linkedin.com/in/wsdt",
      "https://github.com/wsdt"
    ],
    "url": "https://wavect.io/team/kevin-riedl/"
  },
  "citation": [
    {
      "@type": "WebPage",
      "name": "Supermemory product overview",
      "url": "https://supermemory.ai/docs/overview/what-is-supermemory"
    },
    {
      "@type": "WebPage",
      "name": "Graph memory and knowledge relationships",
      "url": "https://supermemory.ai/docs/concepts/graph-memory"
    },
    {
      "@type": "WebPage",
      "name": "Forget-memory API and soft-delete behavior",
      "url": "https://supermemory.ai/docs/api-reference/content-management/forget-a-memory"
    },
    {
      "@type": "WebPage",
      "name": "User profiles and query-aware retrieval",
      "url": "https://supermemory.ai/docs/concepts/user-profiles"
    },
    {
      "@type": "WebPage",
      "name": "Supermemory's memory-versus-RAG model",
      "url": "https://supermemory.ai/docs/concepts/memory-vs-rag"
    },
    {
      "@type": "WebPage",
      "name": "Search modes, filters and returned context",
      "url": "https://supermemory.ai/docs/recall/search"
    },
    {
      "@type": "WebPage",
      "name": "Supermemory GitHub repository and benchmark claims",
      "url": "https://github.com/supermemoryai/supermemory"
    },
    {
      "@type": "WebPage",
      "name": "Supermemory's published production timing overview",
      "url": "https://supermemory.ai/"
    },
    {
      "@type": "WebPage",
      "name": "LongMemEval benchmark repository",
      "url": "https://github.com/xiaowu0162/LongMemEval"
    },
    {
      "@type": "WebPage",
      "name": "LoCoMo benchmark repository",
      "url": "https://github.com/snap-research/locomo"
    },
    {
      "@type": "WebPage",
      "name": "ConvoMem benchmark repository",
      "url": "https://github.com/SalesforceAIResearch/ConvoMem"
    },
    {
      "@type": "WebPage",
      "name": "MemoryBench evaluation workflow",
      "url": "https://supermemory.ai/docs/memorybench/overview"
    },
    {
      "@type": "WebPage",
      "name": "Hosted MCP setup and authentication",
      "url": "https://supermemory.ai/docs/supermemory-mcp/setup"
    },
    {
      "@type": "WebPage",
      "name": "Supported connectors and synchronization model",
      "url": "https://supermemory.ai/docs/connectors/overview"
    },
    {
      "@type": "WebPage",
      "name": "Local versus hosted Supermemory capabilities",
      "url": "https://supermemory.ai/docs/self-hosting/overview"
    },
    {
      "@type": "WebPage",
      "name": "Official ingestion, polling and retrieval quickstart",
      "url": "https://supermemory.ai/docs/quickstart"
    },
    {
      "@type": "WebPage",
      "name": "API authentication and scoped keys",
      "url": "https://supermemory.ai/docs/authentication"
    },
    {
      "@type": "WebPage",
      "name": "Local model providers and Ollama configuration",
      "url": "https://supermemory.ai/docs/self-hosting/providers"
    },
    {
      "@type": "WebPage",
      "name": "Local embedding models and multilingual configuration",
      "url": "https://supermemory.ai/docs/self-hosting/embeddings"
    },
    {
      "@type": "WebPage",
      "name": "Supermemory billing and usage model",
      "url": "https://supermemory.ai/docs/overview/billing"
    }
  ],
  "dateModified": "2026-09-17",
  "datePublished": "2026-09-17",
  "description": "Supermemory adds persistent user context to AI applications through fact extraction, updated memories, profiles and combined document-and-memory retrieval. Choose a hosted integration or evaluate its local server with Ollama. Treat benchmark rankings and latency figures as vendor claims, not application guarantees. Test tenant isolation, corrections, expiry, actual erasure, multilingual recall and cost before production.",
  "headline": "Supermemory: AI Agent Memory, RAG and Local Setup",
  "image": "https://wavect.io/img/blog/headers/header_supermemory-ai-agent-memory.svg",
  "inLanguage": "en",
  "keywords": "AI agents, Supermemory, Persistent memory, RAG",
  "mainEntityOfPage": {
    "@id": "https://wavect.io/blog/supermemory-ai-agent-memory/",
    "@type": "WebPage"
  },
  "publisher": {
    "@id": "https://wavect.io/#organization",
    "@type": [
      "Organization",
      "ProfessionalService",
      "LocalBusiness"
    ]
  },
  "url": "https://wavect.io/blog/supermemory-ai-agent-memory/",
  "wordCount": 2890
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "item": "https://wavect.io/",
      "name": "Home",
      "position": 1
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/blog/overview/",
      "name": "Blog overview",
      "position": 2
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/blog/topics/ai-agents/",
      "name": "AI and agents",
      "position": 3
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/blog/clusters/agent-engineering/",
      "name": "Agent engineering",
      "position": 4
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/blog/supermemory-ai-agent-memory/",
      "name": "Supermemory: AI Agent Memory, RAG and Local Setup",
      "position": 5
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Supermemory is a memory layer for AI applications. It ingests conversations and documents, extracts and updates facts, builds user profiles, and retrieves useful context across sessions. Your application still chooses what to store and how to use that context."
      },
      "name": "What is Supermemory?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "It can replace the vector-database, embedding and chunking setup you would otherwise assemble for this memory use case. It does not make retrieval unnecessary. Its hybrid search combines document chunks and extracted memories, while your application remains responsible for authorization and answer quality."
      },
      "name": "Does Supermemory replace RAG or a vector database?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Not necessarily. Expiry, exclusion from normal recall, and permanent erasure are different operations. The documented forget-memory endpoint performs a soft delete. Verify deletion of source documents, derived memories, profiles, caches and backups under your own retention policy."
      },
      "name": "Does automatic forgetting permanently delete personal data?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "No such universal conclusion follows from the published claims. The repository reports leading results on LongMemEval, LoCoMo and ConvoMem. This article does not independently reproduce them. Recall@15 measures retrieval coverage, not end-to-end answer accuracy."
      },
      "name": "Is Supermemory independently proven to be number one on every memory benchmark?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "The local server can use Ollama for extraction and local embedding models. Fully offline operation requires the binary and models to be downloaded first and every configured provider to be local. The local feature set is not identical to hosted Supermemory; hosted connectors and MCP are not included."
      },
      "name": "Can Supermemory run offline with Ollama?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Test cross-session recall, corrected facts, expiry, abstention, tenant isolation, malicious stored instructions, verifiable erasure, multilingual retrieval, failure recovery and latency and cost per successful task. Use your own conversations and compare against a fixed baseline."
      },
      "name": "What should a production Supermemory pilot test?"
    }
  ]
}
```
