Lattice
A workspace for your research.
Your Claude conversations did not disappear. They are just filed under your old account.
Translation pending
ProductivityPythonGitHub @pokharnajayOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Restore Claude desktop conversation history hidden by an account switch, and move it between Macs. macOS app.
Translation pending
Loading the full README. The saved excerpt is shown below.
Switching Claude accounts hides your history. Take it with you.
A small macOS app with two buttons: back up one account, import into another.
That is the whole installation.
The first run takes about a minute: it creates a .venv inside the folder,
installs PySide6 into it, and starts the window. Every run after that opens
immediately. Nothing is installed into your system Python.Read the full README ↗Switching Claude accounts hides your history. Take it with you.
A small macOS app with two buttons: back up one account, import into another.
git clone https://github.com/pokharnajay/claude-migrator.git
cd claude-migrator
python3 app.py
That is the whole installation.
The first run takes about a minute: it creates a .venv inside the folder,
installs PySide6 into it, and starts the window. Every run after that opens
immediately. Nothing is installed into your system Python.
Back Up and Import stay off while the Claude desktop app is running, because Claude holds these files open and rewrites them as it goes. The window has a Quit Claude button, and it notices on its own when Claude has gone.
python3 --version to check. macOS ships one; if it is too
old, brew install python or grab it from python.org..venv.venv/bin/pip install pyinstaller
.venv/bin/python packaging/build.py --install
Builds a self-contained Claude Migrator.app (Python and Qt inside, about
75 MB) and puts it in /Applications. Run it again after changing the code to
replace the installed copy.
Delete the .venv folder and try again:
rm -rf .venv
python3 app.py
~/Downloads/claude-app-backup-<timestamp>/.Open Claude and the chats are in the sidebar.
The old account was signed in on this Mac before, but you never backed it up? Its history is still on disk. Back up another account on this Mac… backs it up without signing in to it.
To move to another Mac, copy the backup folder across and import it there.
| Chats | Claude Code and Cowork conversations, which ones are archived, and the transcripts they need to open |
| Cowork | Memory, plugins, settings and artifacts |
| Scheduled tasks | The tasks themselves and their prompts |
| Setup | Desktop MCP servers and extensions; ~/.claude settings, CLAUDE.md, plugins, skills, agents and commands; MCP servers from ~/.claude.json |
Left out on purpose: sign-in state and tokens, caches, and the multi-gigabyte VM images Claude downloads again by itself. A backup is checked file by file against the original before it is called done.
Copies are APFS clones, so even gigabytes of transcripts take seconds and almost no extra disk until something changes.
The window counts runs of scheduled tasks separately from chats. A task that runs every twenty minutes leaves a session behind each time, so a raw count can be ten times the number of conversations you actually had.
One rule covers every file:
A chat is matched by its session file, so importing the same backup twice changes nothing the second time, and no chat is ever doubled. A chat you carried on after importing it keeps your newer turns.
The archive list, Cowork's artifacts and scheduled tasks are merged, not
replaced. MCP servers are added to ~/.claude.json unless one of the same
name is already there.
A backup of another account goes into the signed-in account's active workspace, which is the one Claude shows. A backup of the signed-in account itself goes back where it came from.
~/Downloads/claude-import-undo-<timestamp>/ at its original path.Everything happens on your Mac. The app makes no network requests — there is no networking code in it. Account e-mails are read from your own local files purely to label accounts in the window.
The one time anything is downloaded is the first run, when pip fetches
PySide6 from PyPI.
| Module | Responsibility |
|---|---|
app.py | Entry point — bootstraps the environment, opens the window |
storage.py | Finds accounts, workspaces and the signed-in account; counts chats |
identity.py | Resolves an account UUID to an e-mail and name |
backup.py | Makes and checks a backup folder |
restore.py | Validates a backup, plans an import, carries it out |
safety.py | Every write — containment, space, atomic placement, locking |
ui.py | The window |
.venv/bin/pip install pytest
QT_QPA_PLATFORM=offscreen .venv/bin/python -m pytest -q # 124 tests
Tests never touch real Claude data. They build a synthetic storage tree in a temp directory, including a planted token that must never reach a backup and damaged backups the importer has to refuse.
python3: command not found — install Python from
python.org or with brew install python.
The buttons are greyed out — Claude is still running. Press Quit Claude, or quit it yourself (⌘Q, and check it is not in the Dock).
"That is not a Claude Migrator backup" — choose the
claude-app-backup-… folder itself, not Downloads and not a folder inside it.
"The backup is incomplete" — a file was removed or changed since the backup was made, often by a partial copy between Macs. Copy the folder again, or make a new backup.
"Made by an older version" — folders named claude-backup-… come from the
previous version of this app. Make a new backup with Back Up.
Imported chats open empty — the chat came back but its transcript in
~/.claude/projects was already gone when the backup was made.
MIT — see LICENSE.
Not affiliated with Anthropic.