Moving to Hermes Agent from OpenClaw and other agents

Use the built-in, preview-first importers to bring your persona, memory, skills, model settings and bot tokens across, then finish the handful of things that never migrate automatically.

Docs-backed3 min read · Reviewed Oct 20, 2026

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-secrets copies allowlisted API keys and bot tokens such as TELEGRAM_BOT_TOKEN into ~/.hermes/.env. You have to pass it explicitly, even with --preset full.
  • --overwrite replaces conflicting Hermes files. Without it, the migration refuses to apply a plan that has conflicts.
  • --skill-conflict skip|overwrite|rename decides what happens when a skill name already exists. rename keeps both copies and gives the imported one an -imported suffix.
  • --workspace-target <path> is required if you want your workspace AGENTS.md copied into a project folder.
  • Before applying, Hermes writes a zip snapshot of ~/.hermes/ under ~/.hermes/backups/pre-migration-*.zip, which you can restore with hermes import. Only skip this with --no-backup if 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 from HEARTBEAT.md also become cron jobs.
  • Merge anything worth keeping from IDENTITY.md into SOUL.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 /new or /reset.
  • WhatsApp pairs by QR code, so it has to be paired again with hermes whatsapp.
  • Secrets stored as SecretRefs with source: file or source: exec can't be resolved. Add those values yourself with hermes 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.

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

Liked this guide?

Every Hermes Agent change that matters, explained in five minutes.

We'll only use your email to send the newsletter. Unsubscribe anytime. Privacy