cognee.remember() (for import) and
cognee.export() (for export). This page explains what it is so the
migration tools make sense.
Why a common format
Every memory tool stores data differently: Mem0 has short memory strings, Letta has agent memory blocks and message history, Zep and Graphiti have entity graphs with time-stamped facts. Without a shared format, importing from N tools and exporting to M tools would need N × M one-off converters. COGX collapses that into N + M. Each tool only has to translate to or from COGX once:- On import, a source adapter reads one tool’s export and emits COGX records. A single loader ingests those records — identical no matter where they came from.
- On export, Cognee dumps a dataset’s graph into a COGX archive that you can store, restore, or hand to another system.
What’s in COGX
COGX represents memory as a stream of typed records. Each record describes one kind of thing a memory system can hold:| Record | What it represents | Typical source |
|---|---|---|
| Document | Raw source content — a file, an archival passage, or standalone text. | Letta archival memory, uploaded files |
| Episode | A conversation: ordered turns, each with a role and timestamp. | Letta message history, Zep episodes |
| Entity | An extracted entity, with an optional type, aliases, and description. | Zep / Graphiti nodes |
| Fact | A triplet (subject → predicate → object), optionally with a validity window. | Zep / Graphiti edges |
| Memory | A single short derived fact (“atomic memory”). | Mem0 memories |
| Memory block | A named, size-bounded core-memory block. | Letta core memory |
| Raw node | Any graph node stored verbatim when no typed mapping fits, so nothing is lost. | Cognee → Cognee exports |
user_id, agent_id, session_id,
run_id) and timestamps, so ownership and time information survive the move.
Raw nodes preserve their original graph properties verbatim.
Archive layout
An exported COGX archive is just a directory you can inspect:manifest.json records the COGX version the archive was written with. A reader
refuses to load an archive written by a newer major version than it
understands, so an out-of-date Cognee won’t silently misread a future archive.
Import modes
When records enter Cognee, amode controls how much processing they get. This
is the main knob you’ll actually set:
| Mode | What it does | Cost |
|---|---|---|
re-derive | Ingest the raw content and run Cognee’s own extraction. The source’s own graph is ignored. | LLM calls; richest result |
preserve | Map the source’s already-extracted entities and facts straight into the graph. Raw content is stored but not re-processed. | Zero LLM calls |
hybrid | Keep the source’s graph and re-cognify the raw content. | LLM calls; most complete |
re-derive,
Zep/Graphiti to hybrid, COGX archives to preserve), and you can override it.
Where to go next
Migrate Memory Systems
Import from Mem0, Letta, Zep, or Graphiti — with runnable examples
remember()
The operation that ingests COGX records into the graph