howdy. I use Claude Code on a few machines (PC desktops, Mac laptops) and got tired of my setup only living on whatever machine I configured it on:
CLAUDE.MD
, commands, skills, and all the project context I build up as I work.
I originally built claude-nomad just to migrate my CC setup from one machine to another. Once that worked I wanted the opposite of a one-time move: keep the machines in sync, so I can work on my desktop, pick it up on my laptop, and have the same context either way. I used this recently when i was on vacation away from home for a couple weeks.
It syncs
~/.claude/
across machines through a private Git repo you own. Conceptually it’s “just commit your config dir,” but with a few bits that make it actually work across different boxes:
Config that doesn’t clobber itself.
settings.json
is regenerated from a shared base + a per-host overrides file (deep-merged), so machine-specific things like hook paths stay per-machine while the shared settings stay in sync.
Same
CLAUDE.md
, commands, rules, skills, and custom status line everywhere, no copy-paste.
Project files you deliberately don’t commit.
You can opt specific projects into syncing local-only files and dirs, the stuff that’s gitignored out of the project’s own repo but that you still want on every machine. For me that’s Open GSD files: I choose to gitignore its
.planning/
dir instead of committing it, so nomad is how those plans and project state follow me across machines. The same mechanism fits any local-only files you’d want to travel with a project.
Claude Code’s per-project memory.
The memory files travel too, so the model has the same accumulated context about a project no matter which machine I’m on.
Sessions, if you use them.
Claude Code names each session folder after the project’s absolute path, which differs per OS (
/Users/me/foo
vs
/home/me/foo
vs a
C:
path). nomad uses the same path-encoding logic CC does and remaps it per host, so
claude --resume
finds your history on any machine. I don’t lean on resume much myself, but it’s the same remapping that makes memory portable.
The per-project stuff (local files, memory, sessions) is opt-in: you list which projects sync, nothing rides along unless you add it.
Since it’s using a private Git repo to sync, nomad scans for secrets with gitleaks before every push and prompts you to redact/skip if it finds one instead of committing it. It also never syncs OAuth/credentials (
~/.claude.json
is hard-blocked, you log in once per host), backs up before anything destructive, and has a read-only
nomad doctor
to check state without changing it.
Caveats: it’s for one person syncing their own machines, not team sharing. No file watcher, you run
nomad sync
yourself or wire it into shell startup. Doesn’t try to sync installed plugins. I recently adapted it to work on windows as well, but I mainly work on MacOS and WSL (so some sort of *nix filesystem)
There’s an optional companion Claude Code plugin (slash commands plus a read-only drift-warning hook) if you want in-session affordances, but you don’t need it, nomad is primarily a command-line tool and the plugin just wraps the CLI.
npm i -g claude-nomad
.
http://github.com/funkadelic/claude-nomad
. Written in TypeScript. Would love feedback from anyone that might find this tool useful.
-norm
submitted by
/u/funkadelic1
Originally posted by u/funkadelic1 on r/ClaudeCode
