Claw Roam
by @reed1898
Sync OpenClaw workspace between multiple machines (local Mac and remote VPS) via Git. Enables seamless migration of OpenClaw personality, memory, and skills. Use when user wants to (1) push workspace changes to remote before shutdown, (2) pull latest workspace on a new machine, (3) check sync status between machines, (4) migrate OpenClaw to another machine.
clawhub install claw-roam๐ About This Skill
name: claw-roam description: Sync OpenClaw workspace between multiple machines (local Mac and remote VPS) via Git. Enables seamless migration of OpenClaw personality, memory, and skills. Use when user wants to (1) push workspace changes to remote before shutdown, (2) pull latest workspace on a new machine, (3) check sync status between machines, (4) migrate OpenClaw to another machine.
Claw Roam - OpenClaw Workspace Sync
Sync your OpenClaw workspace across machines via Git. This allows you to:
Quick Start
Recommended branch model for multi-device:
main = shared baselineremote = this serverlocal = your laptop/desktop# Check status (current branch)
claw-roam statusOne-command full sync (recommended)
claw-roam syncOr step by step:
Commit+push current branch
claw-roam push "msg"Pull latest for current branch
claw-roam pull(Optional) merge another device branch into current branch
claw-roam merge-from local
claw-roam merge-from remote
Commands
push
Commit and push workspace to remote Git repository.claw-roam push [message]
pull
Pull latest workspace from remote and sync.claw-roam pull
status
Check sync status between local and remote.claw-roam status
sync (One-Command Full Sync)
claw-roam sync
Performs the complete sync workflow in one command:
1. Commit and push current branch - Saves your local changes 2. Merge main into current branch - Gets latest from shared main 3. Push to main branch - Shares your changes with other machines
Workflow diagram:
โโโโโโโโโโโโโโโ commit+push โโโโโโโโโโโโโโโ
โ local โ โโโโโโโโโโโโโโโโโโโโถโ origin/localโ
โ ๅๆฏ โ โ โ
โโโโโโโโฌโโโโโโโ โโโโโโโโโโโโโโโ
โ
โ merge main
โผ
โโโโโโโโโโโโโโโ merge+push โโโโโโโโโโโโโโโ
โ local โ โโโโโโโโโโโโโโโโโโโโถโ main โ
โ ๅๆฏ โ โ (shared) โ
โโโโโโโโโโโโโโโ โโโโโโโโฌโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโ
โ pull
โผ
โโโโโโโโโโโโโโโ
โ remote โ
โ ๅๆฏ โ
โโโโโโโโโโโโโโโ
Recommended daily workflow:
# On each machine, just run:
claw-roam sync
This ensures:
Setup
1. Initialize Git repo in workspace (if not already done):
cd ~/.openclaw/workspace
git init
git remote add origin
2. Create initial commit:
git add -A
git commit -m "initial"
git push -u origin main
3. On VPS machine - clone the repo:
cd ~
git clone openclaw-workspace
ln -s openclaw-workspace ~/.openclaw/workspace
Branch Workflow (Recommended)
For multiple machines, use this branch strategy:
local (Mac) โโโ
โโโโบ main (shared) โโโ merge & push
remote (VPS) โโ
Setup Each Machine
Local Mac:
cd ~/.openclaw/workspace
git checkout -b local
git push -u origin local
Remote VPS:
cd ~/.openclaw/workspace
git checkout -b remote
git push -u origin remote
Daily Workflow
On each machine:
1. Get latest from main (่ทๅๅ ถไปๆบๅจ็ๆๆฐๅ ๅฎน):
claw-roam merge-from main
2. Work normally, then push your changes:
claw-roam push "update memory"
3. Share to main (่ฎฉๅ ถไปๆบๅจ่ฝ่ทๅ):
git checkout main
git merge local -m "merge: local -> main"
git push origin main
git checkout local
Quick Sync (One-liner)
# Pull from main, then push to main
claw-roam merge-from main && git checkout main && git merge local && git push && git checkout local
Conflict Resolution
If merge-from main has conflicts:
# Keep your version
git checkout --ours
git add -A && git commit -m "merge: resolved conflicts"Or keep main's version
git checkout --theirs
git add -A && git commit -m "merge: resolved conflicts"
Simple Workflow: Local Primary + VPS Backup
For simpler setups without branches:
Daily Usage (Local Mac)
Just use OpenClaw normally. Before shutdown:claw-roam push "end of day sync"
Or let it auto-push via cron:
# Add to crontab
*/10 * * * * cd ~/.openclaw/workspace && git add -A && git commit -m "auto: $(date)" && git push
Switching to VPS
1. Ensure local has pushed:claw-roam push
2. On VPS: claw-roam pull
3. Update Telegram webhook to point to VPS (if using webhook mode)
4. Continue using alternative bot token on VPSReturning to Local
1. On VPS:claw-roam push
2. On local: claw-roam pull
3. Update Telegram webhook back to local (if needed)What Gets Synced
Synced (preserved across machines):
SOUL.md - Your agent's personalityMEMORY.md - Long-term memorymemory/*.md - Daily conversation logsskills/ - All installed skillsAGENTS.md, USER.md - Context filesTOOLS.md - Device configurationsHEARTBEAT.md - Periodic tasksNot Synced (machine-specific):
Troubleshooting
"Repository not found"
Run setup steps above to initialize Git repository."Merge conflicts"
If you edited on both machines without syncing:# On the machine with changes you want to keep
git pull --strategy=ours
git push
"Permission denied"
Ensure your Git remote is configured with proper authentication (SSH key or token).Scripts
Use bundled scripts directly:
~/.openclaw/workspace/skills/claw-roam/scripts/claw-roam.sh push
~/.openclaw/workspace/skills/claw-roam/scripts/claw-roam.sh pull
~/.openclaw/workspace/skills/claw-roam/scripts/claw-roam.sh status
๐ก Examples
Recommended branch model for multi-device:
main = shared baselineremote = this serverlocal = your laptop/desktop# Check status (current branch)
claw-roam statusOne-command full sync (recommended)
claw-roam syncOr step by step:
Commit+push current branch
claw-roam push "msg"Pull latest for current branch
claw-roam pull(Optional) merge another device branch into current branch
claw-roam merge-from local
claw-roam merge-from remote
โ๏ธ Configuration
1. Initialize Git repo in workspace (if not already done):
cd ~/.openclaw/workspace
git init
git remote add origin
2. Create initial commit:
git add -A
git commit -m "initial"
git push -u origin main
3. On VPS machine - clone the repo:
cd ~
git clone openclaw-workspace
ln -s openclaw-workspace ~/.openclaw/workspace
๐ Tips & Best Practices
"Repository not found"
Run setup steps above to initialize Git repository."Merge conflicts"
If you edited on both machines without syncing:# On the machine with changes you want to keep
git pull --strategy=ours
git push