Skip to content

Moving from Claude Mem

Choose one memory recorder to avoid capturing and recalling the same sessions twice. When Eklavya detects the Claude Mem plugin or database, installation offers the choice:

Terminal window
eklavya install
ChoiceResult
EklavyaImport Claude Mem history, verify it, then retire Claude Mem.
Claude MemKeep it unchanged and disable Eklavya memory; quizzes remain available.

Pass --memory eklavya or --memory claude-mem to select without the prompt. Without an interactive terminal or explicit choice, the installer keeps Claude Mem.

Choosing Eklavya

The installer performs these steps in order:

  1. Import. Open the source database read-only, snapshot it, and import observations, summaries, prompts and tool uses with their original dates.
  2. Place projects. Match Claude Mem names to checkout paths using Claude Code transcripts. Moved checkouts may be found nearby; ambiguous matches are shown for you to choose, with “leave unplaced” as the default.
  3. Verify and uninstall. Check every source row by ID. Only after a complete import, uninstall Claude Mem through claude plugin uninstall, or disable it in Claude Code settings if claude is unavailable.
  4. Retain a rollback copy. Move ~/.claude-mem to ~/.claude-mem.retired rather than deleting it.

If import or verification fails, Claude Mem stays installed and Eklavya memory is disabled. The error names what needs attention.

Observations and summaries become memory entries. Prompts and tool uses become linked evidence. Imported concepts become candidates, not assessed knowledge: import does not grant mastery, record answers or open gates. Device identities, sync state, live worker queues, sent notifications and opaque runtime metadata are not imported.

Every later install checks again

With Eklavya memory enabled, later installs recheck retired databases, import missing rows and improve project placement without duplicating history. Content identity prevents a relocated copy of the same source from being imported twice. The recheck prints a claude-mem line only when it adds or re-files rows, or when the check fails. eklavya memory status still lists unplaced projects.

Terminal window
eklavya update
eklavya install

Projects it could not place

Unmatched entries are still imported, but they are not recalled for a checkout and require --all-projects when searching. Run the following from the correct checkout, replacing storefront with the source project name reported by the importer:

Terminal window
eklavya memory import ~/.claude-mem.retired/claude-mem.db --map-here storefront

Use --map <name>=<path> for another checkout. Re-running moves previously unplaced rows to that project and reports them as re-homed; it does not duplicate them.

Checking the move

Terminal window
eklavya memory import ~/.claude-mem.retired/claude-mem.db --verify
eklavya memory status

--verify writes nothing. It reports source counts, missing IDs and the location of each project’s entries; any missing row produces exit code 1. Every real import performs the same check before the installer retires the source.

In memory status, imported counts imported entries in this project and unplaced identifies unmatched source names. If history exists but is missing from the current project’s view, check placement first. The Memory dashboard lets you inspect the entries.

The session greeting’s memory line counts actual recall, not import completeness. A successful import shows no memory line until entries are recalled.

Choosing Claude Mem

The installer sets global memory.enabled: false and leaves Claude Mem untouched. Eklavya’s quizzes, levels and optional commit gate remain available. To switch later:

Terminal window
eklavya install --memory eklavya

Going back

Restore the retired Claude Mem directory to its original path, reinstall its plugin, and disable Eklavya memory:

Terminal window
eklavya config set memory.enabled false

Keep any newer Claude Mem directory before restoring the retired copy over that path. Work recorded by Eklavya in the meantime stays in Eklavya; it is not converted back to Claude Mem. You can preserve those entries with eklavya memory export, or take a full data backup.

Doing it by hand

The standalone importer does not uninstall Claude Mem. Preview its field mapping first:

Terminal window
eklavya memory import ~/.claude-mem/claude-mem.db --dry-run

The report includes schema version, row counts, project names, mapped fields, deliberately dropped fields and unknown columns. --resume continues using an interrupted run’s snapshot. A newer unsupported source schema is rejected with both version numbers.

See the CLI import options for every flag.