Migrate to RememberOS
Already using another memory layer for your agents? Moving to RememberOS is mostly a rename: the core operations map one-to-one, and you bring your existing data over with a short import loop. This guide is provider-agnostic — export from your current tool (see their docs for the export format), then map and load.
How the concepts map#
Most memory APIs share the same primitives. Here's how they line up with RememberOS:
| What you're doing today | RememberOS |
|---|---|
| Store / upsert a memory | add(text, collection=…) — embeds and stores verbatim, no LLM cost |
| Semantic query / search | search(query) — hybrid (vector + full-text, RRF-fused) by default |
| Fact / profile extraction, "memory that updates" | remember(text) — extracts atomic typed facts and supersedes contradicted ones, so search returns the current truth |
| Namespace / index / project | collection — one per project or per app |
| Per-end-user scoping (one memory space per your user) | container_tag — sub-scope inside a collection, filterable at search time |
| Delete / forget; data-subject requests | DELETE a memory, plus self-service GDPR export & one-call erasure |
The one thing most stores don't have is remember's graph
supersession — that's the difference between recalling everything you were ever told and
answering what is true now. See the eval.
Bring your data over#
Export your existing memories from your current provider (consult their docs for the
export endpoint and format), then load them into RememberOS. Use add() for a
verbatim copy, or remember() if you want RememberOS to extract and supersede
facts as it ingests:
from longmem import Longmem
mem = Longmem() # reads LONGMEM_API_KEY
# `exported` is whatever you pulled from your previous tool — a list of dicts.
# Bulk-import verbatim in batched calls (chunks of 100), keeping per-user scope:
items = [{"text": e["text"], "container_tag": e.get("user_id")} for e in exported]
mem.add_many(items, collection="memories")
# …or let RememberOS extract + supersede facts instead (one call per item):
# for e in exported:
# mem.remember(e["text"], collection="memories", container_tag=e.get("user_id"))
For large or ongoing migrations, point a pipeline at RememberOS instead of looping by hand: the dlt destination ingests any dlt source, and the connector recipes (Notion, Slack, Drive, Postgres, Gmail, Linear, Confluence) cover common sources directly.
Why switch#
- Current truth, not just recall. Graph supersession keeps contradicted facts from resurfacing — in our reproducible eval that roughly halved the contradiction rate versus a plain RAG store on the same data.
- EU + self-host + BYO. Hosted in Germany, fully self-hostable, bring your own storage, database, and extraction LLM.
- Privacy by default. On-box embeddings, per-tenant row-level isolation, cookieless analytics, self-service GDPR export and erasure.
See the honest comparison for where RememberOS fits — and where it might not.