Migrating OpenClaw to Hermes is one official command: hermes claw migrate. It reads ~/.openclaw/, shows a full preview before writing anything, and by default writes a restore-point zip first — but it does not import your cron jobs, and that omission is where a migrated setup quietly starts paying twice. The safe order is back up, dry run, apply, verify in a new session, stop the old scheduler, then clean up.
Pin the entities before anything else, because this query collides with three unrelated products. This page is about Hermes Agent from Nous Research — the CLI and gateway, latest release v0.21.3 (tag v2026.9.14, published September 14, 2026) — and OpenClaw from the OpenClaw Foundation, latest release v2026.9.5, published September 19, 2026. Both repositories were live and not archived when their metadata was re-checked on September 21, 2026. It is not Hermes 4, Nous Research's separate open-weight model family; not Meta's Hermes JavaScript engine; and not the luxury house. If you are still on ~/.clawdbot/ or ~/.moltbot/, that is the same product under earlier names, and the importer detects both directories and the clawdbot.json / moltbot.json config filenames.
Why people move, and who should not
Price is not the reason. Both projects are free software: OpenClaw's README states it "has no paid tier, hosted service, or token", and its LICENSE file is plain MIT even though the GitHub API reports the repository license field as NOASSERTION — cite the file, not the field. Hermes Agent is reported as MIT by the GitHub API. What you pay for in either case is model tokens and the host you run the gateway on.
| Move to Hermes when | Stay on OpenClaw when |
|---|---|
| You want the memory-and-skills workflow as the centre of the product, and are willing to recreate scheduling | Your channel bindings, plugins and hooks are the working part of your setup — all three are archived rather than imported |
| Your setup is mostly persona, instructions, memory and skills, which is exactly the set the importer handles | You run a multi-agent list or a complex channel topology; those are archived too |
| You want a single vendor-run subscription option available alongside your own key | You specifically want a 501(c)(3) steward with no commercial tier at all |
One correction worth carrying, because the older comparison pages have it stale: the reverse direction is no longer memory-only. OpenClaw now documents a full previewed migration — openclaw migrate hermes --dry-run, then openclaw migrate apply hermes --yes — importing model config, providers and custom endpoints, MCP servers, SOUL.md and AGENTS.md, memory files (appended), memory config, skills with their config, and auth credentials on consent. What that doc still describes as a memory-only copy is its onboarding and Control UI memory imports, which place MEMORY.md and USER.md under memory/imports/hermes/ without touching existing workspace memory. So this is a two-way door, with one warning on the return trip: do not leave Hermes and OpenClaw sharing the same refresh grant.
What migrates, and what is archived instead
Read this table as the acceptance list. Anything in the right-hand column is work you do by hand, on a schedule you choose, and it is not a failure of the tool — Hermes archives it deliberately under ~/.hermes/migration/openclaw/<timestamp>/archive/.
| Asset | OpenClaw source | Hermes destination | Caveat |
|---|---|---|---|
| Persona | workspace/SOUL.md | ~/.hermes/SOUL.md | Direct copy |
| Workspace instructions | workspace/AGENTS.md | AGENTS.md in the target | Requires --workspace-target |
| Long-term memory | workspace/MEMORY.md | ~/.hermes/memories/MEMORY.md | Parsed into entries, merged, deduped — not copied verbatim |
| User profile | workspace/USER.md | ~/.hermes/memories/USER.md | Same entry-merge logic |
| Skills | Four locations, including workspace/skills/ and ~/.openclaw/skills/ | ~/.hermes/skills/openclaw-imports/ | Conflicts resolved by --skill-conflict |
| Custom providers | models.providers.* | custom_providers in config.yaml | Auto-migrated to the providers: dict later — see below |
| Cron jobs | cron config | Archived only | Recreate with hermes cron create |
| Plugins, hooks and webhooks | Plugin and hook config | Archived only | No automatic equivalent |
| Channel bindings, multi-agent list | Channel and agent config | Archived only | Rebuild by hand |
| Channel credentials | Not transferable | QR pairing via Baileys; run hermes whatsapp to re-pair |
Two mappings are lossy in a way a checklist hides. agents.defaults.timeoutSeconds does not become a Hermes timeout — it becomes agent.max_turns, computed as timeoutSeconds / 10 and capped at 200. And OpenClaw's ten-value reasoning-effort vocabulary collapses into three: always, high and xhigh all land on high; auto, medium and adaptive on medium; off, low, none and minimal on low. Both are arithmetic, not copies, so check the resulting values rather than assuming your old tuning survived. Session idle and daily-reset timers are not imported at all: Hermes conversations persist until an explicit /new or /reset. All of this is from the official migrate-from-OpenClaw guide, read September 19, 2026.
The command, flag by flag
| Flag | What it does |
|---|---|
--dry-run | Preview only; stop after showing what would be migrated |
--preset user-data|full | user-data excludes infrastructure config; neither preset imports secrets. The guide names no default — read the preview to see which you got |
--overwrite | Overwrite on conflicts; the default is to refuse to apply when the plan has any |
--migrate-secrets | Include API keys — required even under --preset full |
--no-backup | Skip the pre-migration zip snapshot of ~/.hermes/ |
--source <path> | Read from a custom OpenClaw directory |
--workspace-target <path> | Where AGENTS.md is placed |
--skill-conflict skip|overwrite|rename | Default skip; rename creates an -imported copy |
--yes | Skip the confirmation prompt after the preview |
A working order that follows the official post-migration checklist without inventing steps. First, stop OpenClaw's schedule: openclaw cron list, then openclaw cron disable <job-id> for anything that would double up (openclaw automations is a documented alias for either). Second, dry run. Third, apply, letting the default restore-point zip be written. Fourth, read the migration report and everything under the archive directory. Fifth — this one catches people — start a new session; imported skills and memory entries do not take effect in the session you were already in, and /skills confirms what loaded. Sixth, hermes status for provider auth, restart the gateway if you moved platform tokens, and re-pair WhatsApp if you used it. Only once all of that passes, run hermes claw cleanup, which renames leftover OpenClaw directories to .pre-migration/ so two agents cannot read the same state. It is a separate subcommand, not a flag on migrate; the guide documents no flags of its own for it.
The ordering caveat is honest rather than comfortable: Hermes's docs put cleanup at step 8 and do not say what happens if an OpenClaw gateway service is still installed when its directory is renamed. Stopping the OpenClaw scheduler and gateway first is defensible from both projects' docs; it is not a sequence either project spells out.
The duplicate-schedule bill, worked out
Cron jobs are archived, not imported. So the natural failure is: you recreate four jobs in Hermes, the OpenClaw gateway is still installed, and every scheduled prompt now runs twice against your provider. Here is what that costs as token arithmetic, not a measured job cost and not a bill ceiling. Assume one scheduled run sends 25,000 uncached input tokens and returns 1,500 output tokens, and that four jobs firing every two hours produce 48 duplicated runs a day. Rates are live Kunavo catalog prices per million tokens.
| Model | Input / output per 1M | One duplicated run | 48 duplicated runs, one day | Same, 30 days |
|---|---|---|---|---|
| Claude Haiku 4.5 | $0.40 / $2.00 | $0.0130 | $0.62 | $18.72 |
| Gemini 3.8 Flash | $0.525 / $2.625 | $0.0171 | $0.82 | $24.57 |
| Claude Sonnet 4.6 | $1.20 / $6.00 | $0.0390 | $1.87 | $56.16 |
| Claude Opus 5 | $2.00 / $10.00 | $0.0650 | $3.12 | $93.60 |
Substitute your own run shape and cadence; the point is the multiplier, not the row. If duplicate work is already firing, Hermes documents a single lever: hermes pause is a global emergency stop — no new cron fires, no kanban dispatch, no gateway turns start until hermes resume, and in-flight work is not killed. Use it to stop the bleeding, then disable the correct side. Note the permission boundary on the OpenClaw side: its automations reference says add/create, edit, remove and run require operator.admin. It does not say whether disable falls inside that set, so budget for needing the role.
Two quieter post-migration cost sources are worth naming. Hermes's model-configuration page warns that prompt caches are keyed to the model serving the request, so a mid-conversation /model switch makes the next message re-read the entire conversation at full input-token price; its fallback-providers page says the same of an automatic fallback, and its credential-pools page says provider-side caches are scoped to the account or key that made the request, so a pool rotation costs one full-price pass too. On Claude Sonnet 4.6 at catalog rates, re-reading a 200,000-token conversation costs about $0.240 at the $1.20 input rate, against roughly $0.024 at the $0.12 cache-read rate — again, illustrative arithmetic on stated assumptions. Hermes offers model.switch_context_confirm_tokens as a guard. Separately, the same page says auxiliary slots — vision, web summarization, compression and the rest — default to provider: auto with an empty model, which it glosses as using the main model for that task, so a freshly migrated setup can bill flagship rates for background chores until you override it.
Pointing the migrated Hermes at your own endpoint
Hermes's providers documentation states that it works with any OpenAI-compatible API endpoint. The migration-specific trap is where your imported provider lands: an OpenClaw models.providers.* entry is written into custom_providers, and only becomes an entry in the canonical providers: dict on the next hermes update config migration. A guide that tells you to look under providers: right after migrating is sending you to an empty key.
# What `hermes claw migrate` writes FIRST. An OpenClaw
# `models.providers.*` entry lands under `custom_providers`,
# not under `providers:` — so check here right after migrating.
custom_providers:
- name: kunavo
base_url: https://api.kunavo.com/v1
api_key: sk-your-kunavo-key
model: claude-sonnet-4-6
# The providers doc says the legacy list is auto-migrated to the
# canonical `providers:` dict on `hermes update` (config v12). The
# documented keys of that dict are `api`, `key_env`, `transport`
# and `default_model` (`base_url`/`url` are accepted aliases of `api`).
providers:
kunavo:
api: https://api.kunavo.com/v1
key_env: KUNAVO_API_KEY
transport: chat_completions
default_model: claude-sonnet-4-6Three notes on that block. The importer maps both short (openai, anthropic) and hyphenated (openai-completions, anthropic-messages, google-generative-ai) API values from OpenClaw. Hermes's own docs disagree with themselves on the transport name — the providers reference lists chat_completions, anthropic_messages and codex_responses, while the model-configuration page writes transport: openai_chat; use chat_completions, which is the value the dedicated providers reference gives, and treat openai_chat as unconfirmed. And custom OpenAI-compatible endpoints receive no automatic catalog-sized output cap in Hermes, so set context_length yourself or supply an explicit models: list with discover_models: false if discovery against your endpoint does not behave.
To be explicit about the limits of this page: Kunavo publishes setup references for several clients, but Hermes Agent has not been runtime-tested here, no hermes claw migrate was executed for this article, and whether Hermes's anthropic_messages transport or its model discovery succeed against Kunavo's endpoint is untested. Keep a working route available while you try it. At catalog rates, Claude Sonnet 4.6 lists $1.20 per million input tokens and $6.00 per million output tokens; Kunavo's catalog amount is a billing floor rather than a cap, since when the upstream reports its charge the bill is the greater of catalog cost and upstream cost times the applicable markup. The minimum top-up is $10 in prepaid credit — a funding minimum, not a task fee or a subscription. See billing details, and create a Kunavo account when you are ready to fund a key.
After the first day, reconcile. Hermes ships hermes insights, which its CLI reference describes only as "show token/cost/activity analytics" and documents with no flags, so read hermes insights --help for what your build actually accepts — and compare that against the usage your provider account actually recorded. If the two disagree, look for a duplicate schedule before looking for a pricing error. For background on that method, see AI cost optimization; for the plan-level picture on each side, Hermes Agent pricing and OpenClaw pricing, and Hermes vs OpenClaw if you have not committed to the move yet.
FAQ
How do I migrate OpenClaw to Hermes?
Hermes ships a dedicated importer: `hermes claw migrate`. Run it with `--dry-run` first to see the plan, then run it without that flag — it prints a full preview and waits for confirmation before writing anything, unless you pass `--yes` to skip that prompt. It reads `~/.openclaw/` by default and auto-detects the legacy `~/.clawdbot/` and `~/.moltbot/` directories and the `clawdbot.json` / `moltbot.json` config filenames. Add `--workspace-target <path>` if you want AGENTS.md placed, and `--migrate-secrets` if you want API keys copied. Afterwards, start a new session, run `hermes status`, and only then run `hermes claw cleanup`. Do not confuse this with `hermes migrate`, which is an unrelated command that rewrites config.yaml to replace retired models.
Does hermes claw migrate import my API keys?
Only if you ask, and only from a fixed allowlist. Hermes's migration guide states that `--migrate-secrets` is required even under `--preset full`, because no preset imports secrets silently. The supported key targets are OPENROUTER_API_KEY, OPENAI_API_KEY, ANTHROPIC_API_KEY, DEEPSEEK_API_KEY, GEMINI_API_KEY, ZAI_API_KEY, MINIMAX_API_KEY, ELEVENLABS_API_KEY, TELEGRAM_BOT_TOKEN and VOICE_TOOLS_OPENAI_KEY, and the guide says keys outside that list are never copied. A key for any other endpoint — a gateway you configured yourself, for instance — is re-entered by hand. SecretRef values with `source: "file"` or `source: "exec"` also cannot be resolved automatically; the migration warns about them and you add them with `hermes config set`.
Are my OpenClaw cron jobs migrated to Hermes?
No. Hermes's migration guide lists cron jobs under "Archived (no direct Hermes equivalent)": they are written to `archive/cron-config.json` inside `~/.hermes/migration/openclaw/<timestamp>/archive/` and the documented remedy is to recreate them with `hermes cron create`. This is the single most expensive detail of the whole move, because the OpenClaw gateway on the same machine is still installed and still firing its own schedule. Disable the jobs on the OpenClaw side with `openclaw cron disable <job-id>` (OpenClaw's reference says the command registers as `openclaw cron`, with `openclaw automations` as an alias that works for every subcommand) before you recreate them in Hermes, not after.
Can I roll back a Hermes migration?
Partly, and you should plan for the gap. By default the migration writes one restore-point archive to `~/.hermes/backups/pre-migration-*.zip` before it applies anything, and Hermes's CLI reference documents `hermes import` as the command that restores a backup zip — stop the gateway first, because every file in the archive overwrites the file on disk. What that does not give you is a clean reversal of `--migrate-secrets`: it writes API keys into `~/.hermes/.env`, and restoring a snapshot is not the same as proving a key never leaked to a second location. Rotate any key you migrated rather than assuming it was cleanly reverted. Restoring onto a partially migrated home was not tested for this page.
Can I migrate from Hermes back to OpenClaw?
Yes, and it is a full documented migration rather than a memory copy. OpenClaw documents `openclaw migrate hermes --dry-run` followed by `openclaw migrate apply hermes --yes`, importing the default model selection, configured providers and custom endpoints, MCP servers, SOUL.md and AGENTS.md, the memory files (appended, not replaced), memory config, skills with per-skill config, and auth credentials on consent. Two constraints: imports require a fresh OpenClaw setup, or `--overwrite` after reviewing the plan; and OpenClaw's own doc warns not to keep Hermes and OpenClaw on the same refresh grant — reauthenticate one side before running both. The memory-only behaviour the older comparison pages describe is what OpenClaw's doc now attaches to its onboarding and Control UI memory imports, which copy MEMORY.md and USER.md under `memory/imports/hermes/` and leave existing workspace memory untouched. Checked September 19, 2026.
Do I need a Nous Portal subscription after migrating to Hermes?
Not for models. Hermes Agent is MIT-licensed software and its providers documentation says it works with any OpenAI-compatible API endpoint, so your own key on your own endpoint is a first-class route. The exception is the Nous Tool Gateway — web search, image generation, speech synthesis and cloud browser automation — which Hermes's documentation describes as a paid Nous Portal subscriber feature. Its wording is that the same subscription unlocks the Tool Gateway, so that gate is on the subscription rather than on which model provider you configured, and no third-party endpoint substitutes for it. The Hermes documentation names no price for the subscription — it points at portal.nousresearch.com — so treat any tier figure you have seen elsewhere as needing a check against the Portal's own plans page before you budget from it.
Hermes Agent and OpenClaw documentation, CLI references and repository metadata checked September 19, 2026, against Hermes v0.21.3 (v2026.9.14) and OpenClaw v2026.9.5; repository metadata re-checked September 21, 2026. Every command, flag and path on this page was read from those official sources; no migration was executed and no Kunavo key was pointed at either agent, so nothing here is a compatibility test. Kunavo token rates come from the live catalog, and every dollar figure is illustrative token arithmetic rather than a measured cost.