Leaving OpenClaw: A Smooth Migration
Who this guide is for
Section titled “Who this guide is for”Users currently on OpenClaw who want to switch to Hermes and keep their existing persona, skills, memories, and bot tokens without starting from scratch.
If you’ve never used OpenClaw, skip this guide. If you want to get Hermes running first and come back later, start with the 7-Day Tutorial.
Five-minute overview
Section titled “Five-minute overview”OpenClaw and Hermes concepts map 1:1, and there’s an official migration tool that handles most of it in one pass:
hermes claw migrate --dry-run # preview — no files changedhermes claw migrate # executehermes claw cleanup # after verification, clean up OpenClaw remnants (optional)By default, the tool migrates: SOUL.md, memories, skills, provider config, platform tokens, MCP servers, and session policies. This covers the most common case — just three commands.
The rest of this guide explains what’s happening, where things can go wrong, and what requires manual handling.
Concept mapping table
Section titled “Concept mapping table”Get both sets of terminology aligned before you start:
| OpenClaw | → | Hermes Agent | Notes |
|---|---|---|---|
SOUL.md (persona) | → | ~/.hermes/SOUL.md | Direct copy, formats are compatible |
IDENTITY.md | → | Merge into SOUL.md | Archived — requires manual merge |
AGENTS.md (project-level instructions) | → | AGENTS.md in your project directory | Requires --workspace-target |
MEMORY.md + USER.md + diary files | → | ~/.hermes/memories/ | Merged into the new memory system |
| Skills (4 locations: workspace / managed / personal / project) | → | ~/.hermes/skills/openclaw-imports/ | All consolidated into one directory |
| Integrations (plugins) | → | Toolsets + MCP servers | Partly automatic, partly manual |
| Heartbeats (recurring tasks) | → | Cron jobs | Requires manual rebuild (see below) |
HEARTBEAT.md | → | Cron job description text | Archived — requires manual rewrite |
BOOTSTRAP.md | → | Context file or skill | Archived — requires manual rewrite |
TOOLS.md | → | Not migrated | Hermes has built-in tool documentation |
| Bot platform config (TG/DC/Slack/…) | → | *_BOT_TOKEN / *_ALLOWED_USERS in ~/.hermes/.env | Automatic |
| Session reset policy | → | session_reset in config.yaml | Automatic |
| MCP servers | → | mcp_servers in config.yaml | Automatic, stdio + HTTP/SSE |
| Persistent Memory | → | Memory System | See Day 6 |
Migration steps
Section titled “Migration steps”-
Run a dry-run first
Terminal window hermes claw migrate --dry-runThe output is a change plan: what will be migrated, how conflicts are handled, what will be archived. Read it before executing — a few minutes now can save an hour of rollback later.
If OpenClaw is installed in a non-default path:
Terminal window hermes claw migrate --dry-run --source /path/to/your/.openclaw -
Decide whether to migrate API keys
The default preset is
full, which migrates API keys from OpenClaw (OpenRouter / OpenAI / Anthropic / DeepSeek / Gemini, etc.) alongside everything else.For a more cautious approach (migrating on a different machine, or taking the opportunity to rotate keys), use
user-data:Terminal window hermes claw migrate --preset user-dataThis skips API keys and migrates everything else. Re-add keys manually afterward:
hermes config set ANTHROPIC_API_KEY ... -
Handle skill name conflicts
If you already have a skill in Hermes with the same name as one in OpenClaw (e.g.
code-reviewon both sides), the default strategy isskip(keep your current version). Other options:Terminal window hermes claw migrate --skill-conflict rename # rename the OpenClaw version before migratinghermes claw migrate --skill-conflict overwrite # overwrite Hermes version with OpenClaw's (use with caution) -
Execute
Terminal window hermes claw migrateFor non-interactive use (in scripts), add
--yesto skip prompts — but don’t do this on the first run.At completion, a migration report is printed:
✓ SOUL.md migrated✓ memories: 3 files merged (MEMORY.md, USER.md, 2026-04-*.md)✓ skills: 12 migrated, 2 skipped (conflict: skip), 1 archived✓ providers: anthropic, openrouter, deepseek✓ bots: telegram, discord✓ mcp_servers: 4⚠ 6 items archived to ~/.hermes/migration/openclaw/2026-04-23-221532/archive/ -
Check the archive directory
Terminal window ls ~/.hermes/migration/openclaw/*/archive/This contains items the tool wasn’t confident enough to handle automatically — you’ll need to rebuild them selectively (see next section). Leaving them untouched is fine for now — they’re just not yet in Hermes.
-
Restart the gateway (if platform tokens were migrated)
Terminal window # Linux / macOS user servicesystemctl --user restart hermes-gateway# Or the straightforward wayhermes gateway stop && hermes gateway startWhatsApp requires a fresh QR code scan:
Terminal window hermes whatsapp -
Verify
Terminal window hermes status --deep # check provider auth and platform connectionshermes skills list # confirm all skills are presenthermes gateway status # gateway and all bots connectedStart Hermes and test:
- Does
SOUL.mdtake effect? (Does the personality feel right?) - Did memories carry over? (Ask about something it should know from the OpenClaw era)
- Trigger a migrated skill (using Day 5’s trigger methods)
- Does
-
Clean up after verification
Terminal window hermes claw cleanupThis removes the OpenClaw config directory. Don’t rush — run Hermes for a day or two first to confirm nothing is missing.
Items requiring manual rebuild
Section titled “Items requiring manual rebuild”The following are archived by the tool and won’t be auto-migrated:
IDENTITY.md → merge into SOUL.md
Section titled “IDENTITY.md → merge into SOUL.md”The two files serve overlapping purposes; Hermes only recognizes SOUL.md. Open IDENTITY.md from the archive directory, manually copy over any still-relevant sections to ~/.hermes/SOUL.md, and check for contradictions.
Heartbeats / HEARTBEAT.md → rewrite as cron jobs
Section titled “Heartbeats / HEARTBEAT.md → rewrite as cron jobs”OpenClaw’s heartbeat mechanism corresponds to cron jobs in Hermes (see Day 7).
Extract the intent + frequency from each heartbeat in HEARTBEAT.md and rewrite as a cron job:
# Original OpenClaw heartbeat: check RSS summary every day at 9 AMhermes cron create "0 9 * * *" "Summarize my RSS subscriptions and send to Telegram"BOOTSTRAP.md → rewrite as a context file or skill
Section titled “BOOTSTRAP.md → rewrite as a context file or skill”OpenClaw’s bootstrap typically means “do X at the start of every session.” Hermes has two options:
- Simple startup instructions → put them in
AGENTS.md(project-level) orSOUL.md(global) - Complex multi-step workflows → write a skill (see Day 5 advanced section)
Old cron jobs / plugins / webhooks
Section titled “Old cron jobs / plugins / webhooks”OpenClaw’s scheduled tasks, custom plugins, and external webhooks don’t go through hermes claw migrate’s automatic path. Rebuild using the corresponding mechanism in Hermes:
| OpenClaw | Hermes equivalent |
|---|---|
| Scheduled tasks | hermes cron create ... (Day 7) |
| Custom tools | Toolsets or MCP servers |
| Webhook receivers | Gateway webhook mode or a custom MCP server |
Complex channel config (multiple accounts, routing rules)
Section titled “Complex channel config (multiple accounts, routing rules)”The tool only migrates the primary account’s platform tokens and allowlist. If you had multiple Telegram bots, or per-channel/per-user routing rules in OpenClaw, rebuild manually in ~/.hermes/.env and ~/.hermes/config.yaml.
Quick reference: common flags
Section titled “Quick reference: common flags”# Dry-run (strongly recommended first)hermes claw migrate --dry-run
# Presetshermes claw migrate # = --preset full (default, includes API keys)hermes claw migrate --preset user-data # excludes API keys
# Pathshermes claw migrate --source /custom/.openclawhermes claw migrate --workspace-target /path/to/project # where to put AGENTS.md
# Conflict handlinghermes claw migrate --skill-conflict skip # defaulthermes claw migrate --skill-conflict renamehermes claw migrate --skill-conflict overwritehermes claw migrate --overwrite # overwrite all conflicts (use with caution)
# Automationhermes claw migrate --yes # skip confirmations (for scripts)Troubleshooting
Section titled “Troubleshooting”What to do after migration
Section titled “What to do after migration”- Walk through the 7-Day Tutorial — not to re-learn, but to verify “these features actually work under Hermes”
- Read Day 7 to rewrite all your heartbeats as cron jobs
- Use Day 6’s
hermes backupto take an initial snapshot of the new setup — that way you have a quick rollback point if anything surfaces later