Go further
Migrate to self-hosted
Export your memories and move from Recall Cloud to your own Recall instance.
In this guide
#Migrating from Cloud to Self-Hosted
Move all your Recall memories from the cloud to your own infrastructure — with full data sovereignty.
If you started with the Recall cloud and later purchased a self-hosted license, you can migrate all your existing memories in one click. The migration exports every memory across all your workspaces into a single JSON file, deletes them from the cloud, and gives you a file you can import directly into your self-hosted instance.
Migration is irreversible — once you confirm, cloud memories are permanently deleted. Make sure your self-hosted instance is running and reachable before you start.
Prerequisites
A valid self-hosted license — purchase one from the Billing page if you haven't already.
Your self-hosted Docker stack running and healthy at its local address (default http://localhost:8080).
Claude Code pointed at your self-hosted instance (via /recall setup).
Step-by-Step Migration
Update your self-hosted instance
From your install directory (default ~/.recall), pull the latest image:
Point Claude Code at your self-hosted instance
Run the setup command in Claude Code and enter your self-hosted server URL and API key when prompted:
Your API key is in ~/.recall/.env as SELF_HOSTED_API_KEY.
Export and delete your cloud memories
Go to the Self-Hosted page and scroll to the Migrate memories from cloud section. Click the button, confirm the warning, and a JSON file will download automatically. Your cloud memories are deleted as part of this step, so the downloaded file is your only copy: keep it until you have verified the import.
Import into your self-hosted instance
In Claude Code (now connected to self-hosted), tell Claude to import your file:
Claude will read the file and call the import_memories tool to restore all your memories into the self-hosted instance.
Verify
Ask Claude to search your memories to confirm everything transferred:
About the Export Format
The migration file is a standard JSON export compatible with the import_memories MCP tool. It contains all memory fields — content, tags, importance, context type, timestamps, and workspace metadata. Importing keeps each memory's ID, original timestamp, tags, importance, category and session, so your timeline comes across intact.
- Every memory in the file is imported into the workspace Claude Code is connected to when you run the import. The workspace fields in the file are kept for reference but do not route memories to other projects.
- Embeddings are regenerated by your self-hosted embedding provider by default. If both sides use the same embedding model, ask Claude to pass
regenerate_embeddings: falseto keep the exported vectors instead. - Running the import again skips memories that are already there, so an interrupted import is safe to repeat.