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 | zsh

Or if you have the repo:

~/.openclaw/workspace/bootstrap-new-machine.sh

What Bootstrap Does

  1. ✅ Checks git and gh are installed
  2. ✅ Verifies GitHub auth
  3. ✅ Clones Core repo to ~/.openclaw/workspace/
  4. ✅ Creates required folders (memory, logs, cron)
  5. ✅ Sets up auto-sync (daily at 2 AM)
  6. ✅ Tells you what to customize

Instance Customization

After bootstrap, edit for THIS machine:

FileCustomizeExample
IDENTITY.mdInstance name, emoji”Nosos-Pi 🤖“
USER.mdIf different person using itYour name/pronouns

Don’t touch (shared across all):

  • AGENTS.md — Same rules everywhere
  • SOUL.md — Same personality everywhere
  • memory/ — Synced history

Sync Frequencies

WhatFrequencyFilesPurpose
Memory SyncEvery 15 minmemory/, IDENTITY.md, USER.mdConversation continuity across instances
Core SyncDaily 2 AMAGENTS.md, SOUL.md, settingsBackup, 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

MachineLocationModelLast SyncStatus
MacBook AirLocalkimi-k22026-02-22✅ Active
[Pi/Instance 2]⏳ Not set up
[Instance 3]⏳ Not set up

Conflict Resolution

If two machines diverge:

  1. I detect it when you say “switch” or “sync”
  2. I tell you what files conflict
  3. 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

OptionWhen 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 SayI 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