Seed from your main machine
The first init against an empty repo uploads your current config.
claudeport init git@github.com:you/claude-config.git
CLI · zero accounts · your git repo
claudeport syncs settings, skills, agents, commands, CLAUDE.md,
keybindings and plugin selections through a git repo you own.
No server. No accounts. Just plain files and plain git.
npm install -g claudeport
Requires Node ≥ 20 and git on your PATH.
Create an empty, private repo anywhere git lives. Then teach each machine about it once.
The first init against an empty repo uploads your current config.
claudeport init git@github.com:you/claude-config.git
Run the same command elsewhere — a populated repo is adopted instead of seeded.
claudeport init git@github.com:you/claude-config.git
Inspect first, then move files in whichever direction you need.
$ claudeport status # what's out of sync
$ claudeport diff # the exact changes
$ claudeport push # publish this machine
$ claudeport pull # apply the repo here
Every command is tagged with the direction it moves your files. (The verb chips under the diagram up top trace each flow live.)
Run claudeport manifest to pick paths interactively — no hand-editing JSON — or edit the file directly. Either way, the same claudeport.json travels in your repo.
The repo's claudeport.json lists paths (relative to ~/.claude). Edit it interactively, or by hand, then push to change it everywhere.
$ claudeport manifest # interactive picker
[x] settings.json
[x] skills/
[~] agents (2 file(s))
[ ] keybindings.json
↑/↓ move · space toggle · enter save · esc cancel
{
"version": 1,
"paths": [
"settings.json",
"skills/",
"agents/",
"commands/",
"CLAUDE.md",
"keybindings.json",
"plugins/installed_plugins.json",
"plugins/known_marketplaces.json"
]
}
Plugin code never travels — only your selections. After a plugin change, restart Claude Code.
A hardcoded denylist wins over the manifest — even if you add these, they stay put.
Secrets, machine-local state and noise can't leak into your repo by accident.
pull shows what will change and asks before touching anything. Pass --yes to skip in scripts.
Files it overwrites or deletes are copied first to ~/.claude/backups/claudeport-<timestamp>/.
push refuses when the repo moved ahead. Pull first, git-style — your history stays linear.
Pulled settings, skills and agents can run hooks — arbitrary commands. A repo others can write to is code you'd be running. Keep it private.
Your repo clones to ~/.claudeport. push copies manifest-tracked files out of ~/.claude, commits and pushes; pull fast-forwards and copies them back. Inspect, revert or recover anything with ordinary git commands.
Each directory resolves as env var → config file → default.
| Setting | Env var | Config key | Default |
|---|---|---|---|
| Claude config dir | CLAUDE_CONFIG_DIR | claude-dir | ~/.claude |
| Clone location | CLAUDEPORT_DIR | sync-dir | ~/.claudeport |