Snapshot and back up OpenClaw brain files (AGENTS.md, SOUL.md, MEMORY.md, memory/, etc.) to an offsite git repository — like a lobster shedding its shell, le...
Snapshots OpenClaw brain files to a remote git repo — a perfect copy of who you were before you grow. Idempotent — only commits when something changed.
molt sends files only to a git repository you control — no third-party servers, no telemetry, no hidden destinations. The target repo is set explicitly by you via MOLT_REPO_URL or --repo-url.
Sensitive fields are redacted before backup using openclaw config get, which is the authoritative redaction source built into OpenClaw itself. The redacted config is the only file containing config data — raw openclaw.json is never copied.
This is an intentional, user-initiated backup tool. You own the destination.
git — must be installed and on $PATH
Git authentication — the script uses git clone / git push over HTTPS or SSH. You need credentials configured for the remote:
git@github.com:... repo URLhttps://<token>@github.com/...)gh CLI is not required — molt uses plain git onlyrsync — used for memory/ sync; standard on macOS and most Linux distros
Write access to the remote repo — the pushing account needs push rights; a dedicated private repo is recommended
No other dependencies. No OpenClaw-specific CLI tools needed at runtime.
Create a private remote repo (GitHub, GitLab, etc.) — e.g. your-org/your-brain
Ensure git auth works for that repo from the machine running OpenClaw: bash
ssh -T git@github.com # for SSH — should greet you by name
Run molt once with the repo URL: bash
MOLT_REPO_URL=git@github.com:your-org/your-brain.git \
~/.openclaw/workspace/marv-skills/molt/scripts/molt.sh
This clones the repo to ~/.openclaw/molt, copies brain files, commits, and pushes.
Schedule it — add a cron job or ask your assistant to set one up via openclaw cron.
After the first run, the MOLT_REPO_URL env var is no longer needed (the local clone already knows its remote).
AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md, MEMORY.mdmemory/ directory (daily notes)cron-jobs/ — exported live from openclaw cron list at backup time (JSON + Markdown summary)config-redacted.json — OpenClaw config with all secrets/tokens replaced by [REDACTED]Set via environment variables or pass as flags:
Env varFlagDefaultDescriptionMOLT_WORKSPACE``--workspace``~/.openclaw/workspaceSource workspaceMOLT_DIR``--backup-dir``~/.openclaw/moltLocal backup repo cloneMOLT_REPO_URL``--repo-url_(required on first run)Remote git repo URLMOLT_EXTRA_DIRS``--extra-dirs(none)_Comma-separated workspace subdirs to include (e.g. scripts,notes)
bash
# First run (clones the repo):
MOLT_REPO_URL=https://github.com/your-org/your-brain-repo.git \
scripts/molt.sh
# Subsequent runs (repo already cloned):
scripts/molt.sh
# Dry run (see what would change without pushing):
scripts/molt.sh --dry-run
To schedule automatic backups, create a cron job pointing at this script. Example for every 6 hours:
text
0 */6 * * * MOLT_DIR=~/.openclaw/molt ~/.openclaw/workspace/marv-skills/molt/scripts/molt.sh >> /tmp/molt.log 2>&1
Or use openclaw cron to schedule via the assistant.
MOLT_REPO_URL to the repo URLMOLT_DIR is needed (defaults to ~/.openclaw/molt)