molt
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.
Security Model
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.
Requirements
git— must be installed and on$PATH- Git authentication — the script uses
git clone/git pushover HTTPS or SSH. You need credentials configured for the remote:- SSH (recommended): add your SSH key to GitHub/GitLab; use a
git@github.com:...repo URL - HTTPS with token: configure a credential helper or use a token in the URL (
https://<token>@github.com/...) ghCLI is not required — molt uses plain git only
- SSH (recommended): add your SSH key to GitHub/GitLab; use a
rsync— used formemory/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.
Zero-to-Working Setup
- 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:
ssh -T git@github.com # for SSH — should greet you by name - Run molt once with the repo URL:
This clones the repo toMOLT_REPO_URL=git@github.com:your-org/your-brain.git \ ~/.openclaw/workspace/marv-skills/molt/scripts/molt.sh~/.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).
What Gets Backed Up
AGENTS.md,SOUL.md,TOOLS.md,IDENTITY.md,USER.md,HEARTBEAT.md,MEMORY.mdmemory/directory (daily notes)cron-jobs/— exported live fromopenclaw cron listat backup time (JSON + Markdown summary)config-redacted.json— OpenClaw config with all secrets/tokens replaced by[REDACTED]
Config
Set via environment variables or pass as flags:
| Env var | Flag | Default | Description |
|---|---|---|---|
MOLT_WORKSPACE |
--workspace |
~/.openclaw/workspace |
Source workspace |
MOLT_DIR |
--backup-dir |
~/.openclaw/molt |
Local backup repo clone |
MOLT_REPO_URL |
--repo-url |
(required on first run) | Remote git repo URL |
MOLT_EXTRA_DIRS |
--extra-dirs |
(none) | Comma-separated workspace subdirs to include (e.g. scripts,notes) |
Running
# 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
Scheduling
To schedule automatic backups, create a cron job pointing at this script. Example for every 6 hours:
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.
First-Time Setup
- Create the remote repo (GitHub, GitLab, etc.)
- Set
MOLT_REPO_URLto the repo URL - Run the script once — it will clone and push
- On subsequent runs, only env var
MOLT_DIRis needed (defaults to~/.openclaw/molt)
