# Import memory

> Preview and import reviewed Mem0 exports, agent memory files, and rule files through one bounded local command without vendor credentials or model calls.

Section: Integrate · Source: https://titen.dev/docs/import-memory
Derived from: https://github.com/RamaAditya49/titen/blob/main/src/runtime/bun/source-import.ts

---
`titen import-source` converts reviewed local memory into ordinary Titen evidence and
direct claims. It never calls Mem0 or another vendor, never asks a model to summarize the
source, and never guesses which subject or organization should receive it.

## Preview first

```sh
titen import-source ./mem0-export.json \
  --from mem0-json@1 \
  --subject user:rama
```

Preview is the default. It reads only the selected source and prints locators, hashes,
mappings, counts, and limits — never memory content. It opens no destination database,
makes no network request, and writes no import artifact.

Apply requires `TITEN_API_KEY` and exactly one destination:

```sh
# Local database; API handlers run in process.
TITEN_API_KEY='titen_sk_...' \
  titen import-source ./MEMORY.md --from markdown@1 \
  --subject user:rama --db ~/.titen/service.db --apply

# Served instance; TITEN_URL is an exact origin.
TITEN_URL='https://memory.example.com' TITEN_API_KEY='titen_sk_...' \
  titen import-source ./mem0-export.json --from mem0-json@1 \
  --subject user:rama --project ramaaditya49/product --apply
```

The key supplies organization and actor authority. Source IDs, filenames, frontmatter and
vendor user fields cannot select destination scope. Imports default to `private` and
`unverified`; `asserted` is the highest allowed trust. Team visibility requires an explicit
workspace.

## The supported profiles

<div class="table-wrap">

| Profile | What Titen reads |
| --- | --- |
| `mem0-json@1` | One JSON array or `results`, `memories`, `data`, or `data.results` envelope |
| `openclaw-memory@1` | `USER.md`, `MEMORY.md`, and dated `memory/*.md` notes |
| `hermes-memory@1` | `MEMORY.md` and `USER.md` |
| `claude-code-memory@1` | Markdown inside one selected project auto-memory directory |
| `codex-memory@1` | `MEMORY.md` and `memory_summary.md` |
| `gemini-cli-memory@1` | Approved private-memory Markdown; not inbox patches, skills, sessions, or `GEMINI.md` |
| `qwen-code-memory@1` | Atomic Markdown and `pinned/**/*.md`; not generated `MEMORY.md` or `QWEN.md` |
| `byterover-context@1` | Curated Markdown; not manifests, indexes, abstracts, overviews, or archives |
| `amazon-q-memory@1` | `product.md`, `structure.md`, `tech.md`, and procedural `guidelines.md` |
| `replit-memory@1` | One root `replit.md` |
| `honcho-conclusions@1` | One complete v3 response page or every contiguous page in a directory |
| `letta-agentfile@1` | Referenced block values from one-agent `.af`; not messages, tools, prompts, or settings |
| `memomind-json@1` | `memomind-export` major version 1, `memories[].text` only |
| `agent-rules@1` | Recognized AGENTS, Claude, Gemini, Qwen, Cursor, Windsurf, Copilot, Cline, Kiro, Continue, Junie, Augment, Qodo, Replit, and Amazon Q rules |
| `basic-memory@1` | Regular Markdown under one project; frontmatter is stripped and wikilinks stay inert |
| `markdown@1` | One explicitly named Markdown file, without a branded compatibility claim |

</div>

Titen-to-Titen versioned JSONL still uses `POST /v1/import`.
`@modelcontextprotocol/server-memory` keeps its existing graph-preserving first-run path.

## What one entry becomes

Every normalized chunk becomes one `imported_source` observation and one direct claim that
cites it. Source IDs, references and the import run ID are deterministic, so repeating the
same source and destination mapping replays without duplicate observations or claims. FTS
recall works immediately; vectors and background enrichment remain optional destination
behavior.

Markdown is split on headings and blank blocks, then at a newline or whitespace before
4,000 characters. Structured profiles copy only documented memory text and timestamps.
Rules become procedural claims for review, but are never activated as Titen governance
policy.

## Fail closed

The complete selected source is read and scanned before destination access. Titen rejects
symlinks, malformed UTF-8, unsafe Unicode, credential patterns, empty or unknown schemas,
incomplete Honcho pages, invalid AgentFile references, non-null AgentFile secrets, populated
tool environment values, more than 64 MiB, or more than 10,000 entries. Errors name only
the locator, rule and count; matched content is never printed.

The command does not open archives or vendor databases, follow links or includes, expand
globs, evaluate MDX/frontmatter, execute skills, fetch URLs, or ingest conversations,
prompts, reasoning, tools, results, and session stores.

<div class="callout callout--alarm">
<strong>A snapshot is not a cutover</strong>

Replacing a live memory system additionally needs ordered deltas, tombstones, membership
revocations, reconciliation, a production-shaped shadow comparison, and a rehearsed
authority switch plus rollback. This command deliberately claims none of those.
</div>

Take `titen backup` before a consequential apply. If reversal is needed, restore the
verified snapshot; the importer never guesses which prior evidence should be deleted.