claude-teleport
Health Pass
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 14 GitHub stars
Code Pass
- Code scan — Scanned 2 files during light audit, no dangerous patterns found
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Move your Claude Code history, memory, and sessions between machines (Linux/macOS/Windows), with paths fixed automatically.
claude-teleport
Move your Claude Code history to a new computer - sessions, memory, and settings - with every path fixed automatically.
Linux · macOS · Windows, in any direction.
If you live in Claude Code, losing your sessions feels like losing part of your workspace.
When I moved from my Linux laptop to a new Mac, I wanted to bring all of it with me: my
sessions, conversation history, memory, and project context. There was no clean way to do it.
Copying the files by hand is tedious, and because project paths change between machines,
nothing just works when you get there.
So I built claude-teleport. It packs your whole Claude Code setup into one file on the old
machine and restores it on the new one, rewriting every path so your conversations resume
exactly where you left off.
┌─────────────┐ export ┌───────────────┐ import (paths fixed) ┌─────────────┐
│ OLD machine │ ────────────▶ │ one .tgz file │ ───────────────────────▶ │ NEW machine │
└─────────────┘ └───────────────┘ └─────────────┘
Contents
- Why you need it
- Install
- Quick start (5 minutes)
- Share one session with a teammate
- Prefer clicking? Use the GUI
- Moving between different operating systems
- Command reference
- What gets moved (and what doesn't)
- Is it safe?
- How it works
- FAQ
- Contributing
Why you need it
Copying the ~/.claude folder by hand does not work, for two reasons:
- Sessions live in folders named after each project's full path, with the slashes turned into
dashes (/home/you/app→-home-you-app). That naming is lossy - slashes, dots,
underscores and spaces all become-- so you can't reconstruct the real path, and the
name is wrong on a machine with a different username or OS anyway. - The session files have the old machine's paths written inside them.
claude-teleport handles both: it records each project's true path, then rebuilds the folder
names and rewrites the in-file paths for the new machine.
Install
Pick whichever you like.
Option A - Download a ready-made binary (no tools needed)
- Go to the latest release.
- Download the file for your computer:
Your machine File macOS (Apple Silicon) claude-teleport-darwin-arm64macOS (Intel) claude-teleport-darwin-amd64Linux claude-teleport-linux-amd64Windows claude-teleport-windows-amd64.exe - On macOS/Linux, make it runnable and put it on your PATH:
On Windows, rename it tochmod +x claude-teleport-* # allow it to run sudo mv claude-teleport-* /usr/local/bin/claude-teleportclaude-teleport.exeand keep it in a folder you can find.
Option B - With Go installed
go install github.com/gowtham-sai-yadav/claude-teleport@latest
This drops the binary in Go's bin directory ($(go env GOPATH)/bin, usually ~/go/bin).
If claude-teleport: command not found, that directory is not on your PATH yet. Add it:
# macOS / Linux (zsh)
echo 'export PATH="$HOME/go/bin:$PATH"' >> ~/.zshrc && source ~/.zshrc
On Windows, add %USERPROFILE%\go\bin to your PATH via System Settings.
Option C - From source
git clone https://github.com/gowtham-sai-yadav/claude-teleport
cd claude-teleport
go build -o claude-teleport .
Check it works: claude-teleport version
Quick start (5 minutes)
You'll run two commands total - one on each computer.
On the OLD computer
- Open a terminal and run:
claude-teleport export - It prints the name of a file it created, e.g.
claude-teleport-backup-20260628-120000.tgz. - Copy that one file to the new computer - AirDrop, a USB stick,
scp, Google Drive,
whatever is easiest.
On the NEW computer
- Install Claude Code and sign in once (so it sets up your account), then close it.
- Preview what will happen - this writes nothing:
You'll see a table of every project and where it will move to. claude-teleport guesses theclaude-teleport import claude-teleport-backup-20260628-120000.tgz --dry-run
new location from your current home folder. If a guess is wrong, fix it with--map:claude-teleport import bundle.tgz --map /home/oldname=/Users/newname --dry-run - Happy with the preview? Run it for real:
It asks for confirmation, copies everything into place, fixes the paths, and finishes withclaude-teleport import claude-teleport-backup-20260628-120000.tgz
a check that your sessions are resume-ready. - Put your actual project folders where the table said they'd go (e.g. clone your repos into
~/Desktop/...). Then open one and resume:cd ~/Desktop/my-project claude --resume
That's it. Your old conversations are there.
One thing that does not transfer: your login. That's on purpose - credentials are locked
to each machine and should never travel in a file. Just sign in to Claude Code once on the
new computer.
Share one session with a teammate
Moving your whole setup is one thing. Sometimes you just want to hand a single
conversation to a teammate so they can pick up exactly where you left off, with
all your context intact.
First, find the session you want:
claude-teleport sessions
You get a list with a short ID, when it was last active, how many messages it
has, the project, and the first thing you asked, so it is easy to spot the right
one. Then pack it into a file:
claude-teleport share 8d84f55b
Before it writes anything, it shows you exactly what is about to leave your
machine and asks you to confirm. It scans for and masks likely secrets
(API keys, tokens, private keys, password=...) first. This is best effort, not
a guarantee, so glance at what you are sending if it matters.
Your teammate drops into their own copy of the project and imports it:
cd ~/their/copy/of/the/project
claude-teleport import claude-teleport-session-8d84f55b.tgz
The session attaches to whatever directory they are standing in, with every path
rewritten for their machine, so claude --resume picks it up right away.
Notes:
- Only the conversation is shared by default. Add
--with-contextto include the
project's memory files too. --lastshares your most recent session without needing the ID.--no-redactsends the raw transcript unscrubbed (not recommended).- Your login is never included, here or anywhere.
Prefer clicking? Use the GUI
Not a terminal person? Run:
claude-teleport gui
Your browser opens a small wizard where you pick the bundle file, confirm where each project
should go, tick the projects you want, and click Import. It shows a live result and the
same resume-ready check at the end. Everything runs locally on your own machine - nothing is
uploaded anywhere.
Moving between different operating systems
Import runs on the destination machine, so it detects the right OS automatically and
translates everything for you, including Windows drive letters and backslashes:
| From → To | Example folder rename |
|---|---|
| Linux/macOS → Windows | -home-you-app → -C-Users-you-app |
| Windows → Linux/macOS | -C-Users-you-app → -home-you-app |
Paths stored inside the transcripts are rewritten in the correct style too. Because
transcripts are JSON, Windows paths are matched and re-written in their escaped form
(C:\\Users\\you), so nothing is missed.
Command reference
claude-teleport export [--out FILE] [--config-dir DIR]
claude-teleport import <bundle> [flags]
claude-teleport inspect <bundle>
claude-teleport verify [--config-dir DIR]
claude-teleport sessions [--project P] [--config-dir DIR]
claude-teleport share <session-id-prefix | --last> [--out FILE] [--with-context] [--no-redact] [--yes]
claude-teleport gui [bundle] [--port N]
import flags
| Flag | What it does |
|---|---|
--dry-run |
Show the plan and write nothing. Always start here. |
--map OLD=NEW |
Remap a path prefix (repeatable). The most specific match wins. |
--project P |
Import only this project, by its path or folder (repeatable; default: all). |
--target-home DIR |
Override the detected home directory. |
--target-os OS |
Render paths for linux/darwin/windows (default: this machine). |
--overwrite |
Replace files that already exist (each one is backed up first). |
--deep |
Rewrite old paths everywhere in transcripts, not just the cwd field. |
--yes |
Skip the confirmation prompt. |
inspectprints what's inside a bundle without importing.verifychecks that the sessions already on this machine are resume-ready.sessionslists your conversations so you can pick one to hand off.sharepacks a single session into a file for a teammate, masking likely
secrets first. They import it from inside their own copy of the project.
What gets moved (and what doesn't)
Moved: session transcripts, per-session sidecars, project memory, your usersettings.json, prompt history, plan files, plugin manifests, and the portable parts of~/.claude.json (re-keyed to the new paths).
Never moved - your login. Credentials are machine-locked (macOS Keychain, Windows user
profile) and are deliberately left out. Sign in once after importing.
Skipped as junk: caches, telemetry, shell snapshots, lock files, and device-identity
fields - all of which rebuild themselves on first run.
Is it safe?
- It never overwrites an existing file by default - it merges and tells you what it
skipped.--overwritemakes a timestamped backup of each file it replaces. --dry-runshows exactly what will happen before anything is written.- The riskiest step - rewriting paths inside message text - is off by default. The safe
default only fixes the structuralcwdfield needed to resume.--deepopts into a full
rewrite. - It runs entirely offline. Your bundle and history never leave your computers.
How it works
A bundle is a .tgz archive with a manifest.json written first. The manifest records each
project's true absolute path - the piece the lossy folder name throws away - read from~/.claude.json and from the cwd stored inside each transcript. On import, claude-teleport:
- works out a new path for each project (auto-detected, or via
--map), - re-encodes the folder names for the target machine and OS,
- rewrites the old paths inside transcripts (JSON-escaped, so Windows paths match),
- merges everything in without overwriting, and
- verifies each migrated project's
cwdmatches its new folder.
FAQ
Will this delete anything on my old machine? No. export only reads.
Do I need Claude Code installed first on the new machine? Yes - install it and sign in
once so your account is set up, then import.
My new username/OS is different. That's the whole point - it's handled. Preview with--dry-run and adjust with --map if a guess is off.
I only want a couple of projects. Use --project <path-or-folder> (repeatable), or tick
just those in the GUI.
Where is all this stored? Under ~/.claude/ and ~/.claude.json (or %USERPROFILE% on
Windows). Set CLAUDE_CONFIG_DIR to relocate it; claude-teleport respects that variable.
Contributing
Issues and pull requests are welcome. To develop:
go test ./... # run the tests
go vet ./... # static checks
gofmt -l . # should print nothing
go run . gui # try the wizard locally
CI runs lint and tests on Linux, macOS, and Windows. Tagging vX.Y.Z builds and publishes
release binaries automatically.
Star history
License
MIT © Gowtham Sai Yadav
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found