Two importers, one pattern
Hermes ships two migration commands. hermes claw migrate imports an OpenClaw setup, including older Clawdbot and Moltbot installs. hermes import-agent imports a Claude Code (~/.claude) or OpenAI Codex CLI (~/.codex) setup. Both work the same way: they print a per-item plan before writing anything, and --dry-run stops after the preview without touching disk.
If you are installing Hermes fresh, the hermes setup wizard notices an existing ~/.openclaw folder and offers to migrate before configuration starts. If you would rather be walked through it conversationally, with per-item conflict decisions, there is also an optional skill: hermes skills install official/migration/openclaw-migration. It runs the same migration script behind the CLI command.
Do a dry run first
Start with hermes claw migrate --dry-run. The command looks in ~/.openclaw first, then the legacy ~/.clawdbot and ~/.moltbot folders. If your install lives elsewhere, add --source /path/to/openclaw. Read the preview carefully. It lists what will be imported, what conflicts with files you already have in Hermes, and what will only be archived.
When the plan looks right, run hermes claw migrate and confirm. The flags worth knowing:
--preset full(the default) or--preset user-data, which leaves out infrastructure config. Neither preset copies secrets.--migrate-secretscopies allowlisted API keys and bot tokens such asTELEGRAM_BOT_TOKENinto~/.hermes/.env. You have to pass it explicitly, even with--preset full.--overwritereplaces conflicting Hermes files. Without it, the migration refuses to apply a plan that has conflicts.--skill-conflict skip|overwrite|renamedecides what happens when a skill name already exists.renamekeeps both copies and gives the imported one an-importedsuffix.--workspace-target <path>is required if you want your workspaceAGENTS.mdcopied into a project folder.- Before applying, Hermes writes a zip snapshot of
~/.hermes/under~/.hermes/backups/pre-migration-*.zip, which you can restore withhermes import. Only skip this with--no-backupif you have your own backup.
What comes across, and where it lands
Your SOUL.md persona is copied to ~/.hermes/SOUL.md. MEMORY.md, USER.md and the daily memory files are parsed into entries and merged, with duplicates removed, into ~/.hermes/memories/. Skills from all four OpenClaw skill locations end up in ~/.hermes/skills/openclaw-imports/. The default model, custom providers, MCP servers, TTS settings, browser settings, the exec timeout and Docker sandbox settings are mapped to their config.yaml equivalents. Telegram, Discord, Slack, Signal, Matrix and Mattermost tokens and allowlists are mapped to .env variables.
Look closely at one mapping: OpenClaw approval mode auto becomes Hermes approvals.mode: off, which means no approval prompts at all. If you relied on that in OpenClaw, think about whether you still want it. We suggest starting on the Hermes default, smart, and loosening it later.
What does not migrate automatically
Anything without a direct Hermes equivalent is saved under ~/.hermes/migration/openclaw/<timestamp>/archive/ for you to handle by hand. That covers cron jobs, plugins, hooks and webhooks, the memory backend config, multi-agent lists, channel bindings, and the IDENTITY.md, TOOLS.md, HEARTBEAT.md and BOOTSTRAP.md workspace files. The official guide gives a replacement for each one:
- Recreate scheduled work with
hermes cron create. Periodic tasks fromHEARTBEAT.mdalso become cron jobs. - Merge anything worth keeping from
IDENTITY.mdintoSOUL.md. - Rebuild a multi-agent setup as Hermes profiles.
- Idle and daily session-reset timers are deliberately not imported. Hermes conversations continue until you run
/newor/reset. - WhatsApp pairs by QR code, so it has to be paired again with
hermes whatsapp. - Secrets stored as SecretRefs with
source: fileorsource: execcan't be resolved. Add those values yourself withhermes config set.
After the import
Read the report printed at the end, then start a new session. Imported skills and memory only show up in new sessions. Run hermes status to confirm your provider credentials, and /skills to check that the imported skills loaded. If tokens moved over, restart the gateway, for example with hermes gateway restart.
When everything works, run hermes claw cleanup. It renames leftover OpenClaw folders with a .pre-migration suffix, so the two agents can't end up fighting over the same state. Stop OpenClaw first. The command warns if it is still running, because an active service can immediately recreate an empty folder. You can preview the cleanup with --dry-run.
Coming from Claude Code or Codex instead
hermes import-agent claude-code or hermes import-agent codex (or just hermes import-agent to auto-detect) brings over global instructions as memory entries, Bash(...) allow and deny rules as command_allowlist and approvals.deny, MCP servers, and skill folders. Claude Code slash commands are skipped with a note suggesting you convert them into skills. Credentials are never imported, and MCP environment values with secret-looking names are stripped and listed so you can add them back on purpose.
If you keep using the other agent alongside Hermes, hermes import-agent --sync re-imports only the sources that have changed. That makes it safe to run on a schedule.
Related guides
- Hermes Agent setup: your first 24 hours
- How Hermes Agent memory works (and where it stops)
- Hermes Agent profiles: separate agents for separate jobs
- Hermes Agent SOUL.md and personalities explained
Primary sources
Spotted something wrong or out of date? Tell us on X at @HermesWatcher (opens in a new tab) and we will fix it.
New Hermes Agent updates every day on X. Follow @HermesWatcher