How Backup Works
One Script, One Place
~/.ldm/bin/ldm-backup.sh runs daily at midnight via LDM Dev Tools.app. It backs up everything to ~/.ldm/backups/, then compresses it to iCloud for offsite.
What Gets Backed Up
| Source | Method | What’s in it |
|---|---|---|
~/.ldm/memory/crystal.db | sqlite3 .backup | Your irreplaceable memories (all AIs) |
~/.ldm/agents/ | cp -a | Personality files, journals, daily logs |
~/.ldm/state/ | cp -a | Config, version, registry |
~/.ldm/config.json | cp | Workspace pointer, org |
~/.openclaw/memory/main.sqlite | sqlite3 .backup | OpenClaw conversations |
~/.openclaw/memory/context-embeddings.sqlite | sqlite3 .backup | Embeddings |
~/.openclaw/workspace/ | tar | Shared context, daily logs |
~/.openclaw/agents/main/sessions/ | tar | OpenClaw session JSONL |
~/.openclaw/openclaw.json | cp | OpenClaw config |
~/.claude/CLAUDE.md | cp | Claude Code instructions |
~/.claude/settings.json | cp | Claude Code settings |
~/.claude/projects/ | tar | Claude Code auto-memory + transcripts |
| Workspace directory | tar (excludes node_modules, .git/objects) | Entire workspace |
Backup Structure
iCloud Offsite
After local backup, the entire dated folder is compressed and copied to iCloud. One file per backup. iCloud syncs it across devices. Rotates to 7 days.How to Run
How to Restore
openclaw gateway restart then crystal status to verify.
Schedule
| What | When | How |
|---|---|---|
| Backup | Midnight | cron -> LDM Dev Tools.app -> ~/.ldm/bin/ldm-backup.sh |
Config
Backup reads from two config files:~/.ldm/config.json… workspace path, org name- Workspace
settings/config.json… backup.keep (retention days), paths.icloudBackup
Logs
~/.ldm/logs/cron.log (via LDM Dev Tools.app stdout)