Multi-Machine Sync
Philosophy: New machine → One command → Fully set up
Quick Start (New Machine)
On any new Mac:
# 1. Install dependencies
brew install git gh
# 2. Auth with GitHub
gh auth login
# 3. Run bootstrap
curl -fsSL https://raw.githubusercontent.com/NososAnosos/Core/main/bootstrap-new-machine.sh | zshOr if you have the repo:
~/.openclaw/workspace/bootstrap-new-machine.shWhat Bootstrap Does
- ✅ Checks git and gh are installed
- ✅ Verifies GitHub auth
- ✅ Clones Core repo to
~/.openclaw/workspace/ - ✅ Creates required folders (memory, logs, cron)
- ✅ Sets up auto-sync (daily at 2 AM)
- ✅ Tells you what to customize
Instance Customization
After bootstrap, edit for THIS machine:
| File | Customize | Example |
|---|---|---|
IDENTITY.md | Instance name, emoji | ”Nosos-Pi 🤖“ |
USER.md | If different person using it | Your name/pronouns |
Don’t touch (shared across all):
AGENTS.md— Same rules everywhereSOUL.md— Same personality everywherememory/— Synced history
Sync Frequencies
| What | Frequency | Files | Purpose |
|---|---|---|---|
| Memory Sync | Every 15 min | memory/, IDENTITY.md, USER.md | Conversation continuity across instances |
| Core Sync | Daily 2 AM | AGENTS.md, SOUL.md, settings | Backup, major changes |
Memory sync = lightweight. Just session logs and identity. Runs constantly.
Core sync = heavyweight. Full settings backup. Once per day.
Daily Workflow
Starting Work
Just start. I know what machine you’re on from the context.
During Work
I auto-sync at 2 AM. Or say:
- “sync now” — Push immediately
- “check sync” — Show status
Switching Machines
Say: “Switch to [machine name]”
I pull latest, check for conflicts, update this file.
Machine Registry
| Machine | Location | Model | Last Sync | Status |
|---|---|---|---|---|
| MacBook Air | Local | kimi-k2 | 2026-02-22 | ✅ Active |
| [Pi/Instance 2] | — | — | — | ⏳ Not set up |
| [Instance 3] | — | — | — | ⏳ Not set up |
Conflict Resolution
If two machines diverge:
- I detect it when you say “switch” or “sync”
- I tell you what files conflict
- You choose:
- “Keep local” — Your current machine wins
- “Keep remote” — GitHub version wins
- “Show me” — I display both, you decide
Never auto-merge. You decide, I execute.
”I Forgot to Sync” Protocol
Scenario: You did a bunch of work on Machine A. Now you’re on Machine B. Nothing is synced.
What You Do
Say: “I forgot to sync” or “Rescue my work”
What I Do
Step 1: Check what’s on GitHub
- Show you the last sync time
- Show what files are there
Step 2: Check local machine (if accessible)
- If Machine A is online: I can remote sync it
- If Machine A is offline: We wait until it’s back
Step 3: Your choice
| Option | When to use |
|---|---|
| ”Force push from here” | This machine has the good stuff, overwrite GitHub |
| ”Pull from GitHub” | GitHub is correct, lose local changes |
| ”Merge manually” | Show me both, I’ll help decide line by line |
| ”Save local to backup” | Stash local changes, pull, then compare |
Step 4: I execute
- Handle the git commands
- Resolve conflicts
- Confirm what happened
Prevention (Optional)
Say: “Nag me if I haven’t synced”
I’ll check every hour when you’re active:
- ”> 4 hours since last commit?” → “Want me to sync?”
- ”> 8 hours?” → “⚠️ You haven’t synced today”
- ”> 24 hours?” → ”🚨 SYNC NOW or risk losing work”
Default is off (no nagging). Turn on if you want.
Emergency Recovery
Lost a machine? New machine?
Say: “Recover from Core”
I clone fresh, set up, you’re back in 2 minutes.
Files Synced (Core Repo)
AGENTS.md → Workspace rules
SOUL.md → Personality
IDENTITY.md → Instance identity (customize per machine)
USER.md → User info (customize per machine)
BOOTSTRAP.md → First run guide
HEARTBEAT.md → Periodic tasks
TOOLS.md → Local tool notes
SYNC_GUIDE.md → This file
memory/*.md → Session history
bootstrap-new-machine.sh → This script
Files NOT Synced (Local Only)
.openclaw/workspace-state.json → Instance state
logs/ → Logs
*.html → Generated pages
*.mp3, *.opus → Audio files
Public/ → Web projects
Commands
| You Say | I Do |
|---|---|
| ”set me up” | Bootstrap this machine |
| ”sync now” | Commit & push immediately |
| ”check sync” | Show sync status |
| ”switch to [name]“ | Pull latest, prepare machine |
| ”recover from Core” | Fresh clone, full setup |
| ”I forgot to sync” / “rescue my work” | Handle unsynced work |
| ”nag me about sync” | Turn on sync reminders |
| ”stop nagging” | Turn off reminders |
| ”pause sync” | Stop auto-sync |
| ”resume sync” | Start auto-sync |
Last updated: 2026-02-22