This guide migrates a CoderClaw Gateway from one machine to another without redoing onboarding.
The migration is simple conceptually:
$CODERCLAW_STATE_DIR, default: ~/.coderclaw/) — this includes config, auth, sessions, and channel state.~/.coderclaw/workspace/ by default) — this includes your agent files (memory, prompts, etc.).But there are common footguns around profiles, permissions, and partial copies.
Most installs use the default:
~/.coderclaw/But it may be different if you use:
--profile <name> (often becomes ~/.coderclaw-<profile>/)CODERCLAW_STATE_DIR=/some/pathIf you’re not sure, run on the old machine:
coderclaw status
Look for mentions of CODERCLAW_STATE_DIR / profile in the output. If you run multiple gateways, repeat for each profile.
Common defaults:
~/.coderclaw/workspace/ (recommended workspace)Your workspace is where files like MEMORY.md, USER.md, and memory/*.md live.
If you copy both the state dir and workspace, you keep:
coderclaw.json)If you copy only the workspace (e.g., via Git), you do not preserve:
Those live under $CODERCLAW_STATE_DIR.
On the old machine, stop the gateway first so files aren’t changing mid-copy:
coderclaw gateway stop
(Optional but recommended) archive the state dir and workspace:
# Adjust paths if you use a profile or custom locations
cd ~
tar -czf coderclaw-state.tgz .coderclaw
tar -czf coderclaw-workspace.tgz .coderclaw/workspace
If you have multiple profiles/state dirs (e.g. ~/.coderclaw-main, ~/.coderclaw-work), archive each.
On the new machine, install the CLI (and Node if needed):
At this stage, it’s OK if onboarding creates a fresh ~/.coderclaw/ — you will overwrite it in the next step.
Copy both:
$CODERCLAW_STATE_DIR (default ~/.coderclaw/)~/.coderclaw/workspace/)Common approaches:
scp the tarballs and extractrsync -a over SSHAfter copying, ensure:
.coderclaw/)On the new machine:
coderclaw doctor
Doctor is the “safe boring” command. It repairs services, applies config migrations, and warns about mismatches.
Then:
coderclaw gateway restart
coderclaw status
If you ran the old gateway with a profile (or CODERCLAW_STATE_DIR), and the new gateway uses a different one, you’ll see symptoms like:
Fix: run the gateway/service using the same profile/state dir you migrated, then rerun:
coderclaw doctor
coderclaw.jsoncoderclaw.json is not enough. Many providers store state under:
$CODERCLAW_STATE_DIR/credentials/$CODERCLAW_STATE_DIR/agents/<agentId>/...Always migrate the entire $CODERCLAW_STATE_DIR folder.
If you copied as root or changed users, the gateway may fail to read credentials/sessions.
Fix: ensure the state dir + workspace are owned by the user running the gateway.
If you’re in remote mode, migrate the gateway host.
$CODERCLAW_STATE_DIR contains secrets (API keys, OAuth tokens, WhatsApp creds). Treat backups like production secrets:
On the new machine, confirm:
coderclaw status shows the gateway running