Migrate from OpenClaw | Hermes Agent
Skip to main content
On this page
hermes claw migrate imports your OpenClaw (or legacy Clawdbot/Moldbot) setup into Hermes. This guide covers exactly what gets migrated, the config key mappings, and what to verify after migration.
tip<br>If your OpenClaw setup was multi-provider, hermes setup --portal collapses it to one OAuth — 300+ models plus the Tool Gateway in a single login. See Nous Portal.
Quick start
# Preview then migrate (always shows a preview first, then asks to confirm)<br>hermes claw migrate
# Preview only, no changes<br>hermes claw migrate --dry-run
# Full migration including API keys, skip confirmation<br>hermes claw migrate --preset full --migrate-secrets --yes
The migration always shows a full preview of what will be imported before making any changes. Review the list, then confirm to proceed.
Reads from ~/.openclaw/ by default. Legacy ~/.clawdbot/ or ~/.moltbot/ directories are detected automatically. Same for legacy config filenames (clawdbot.json, moltbot.json).
Options
OptionDescription--dry-runPreview only — stop after showing what would be migrated.--preset full (all compatible settings) or user-data (excludes infrastructure config). Neither preset imports secrets by default — pass --migrate-secrets explicitly.--overwriteOverwrite existing Hermes files on conflicts (default: refuse to apply when the plan has conflicts).--migrate-secretsInclude API keys. Required even under --preset full — no preset imports secrets silently.--no-backupSkip the pre-migration zip snapshot of ~/.hermes/ (by default a single restore-point archive is written before apply, under ~/.hermes/backups/pre-migration-*.zip; restorable with hermes import).--source Custom OpenClaw directory.--workspace-target Where to place AGENTS.md.--skill-conflict skip (default), overwrite, or rename.--yesSkip the confirmation prompt after preview.<br>What gets migrated
Persona, memory, and instructions
WhatOpenClaw sourceHermes destinationNotesPersonaworkspace/SOUL.md~/.hermes/SOUL.mdDirect copyWorkspace instructionsworkspace/AGENTS.mdAGENTS.md in --workspace-targetRequires --workspace-target flagLong-term memoryworkspace/MEMORY.md~/.hermes/memories/MEMORY.mdParsed into entries, merged with existing, deduped. Uses § delimiter.User profileworkspace/USER.md~/.hermes/memories/USER.mdSame entry-merge logic as memory.Daily memory filesworkspace/memory/*.md~/.hermes/memories/MEMORY.mdAll daily files merged into main memory.<br>Workspace files are also checked at workspace.default/ and workspace-main/ as fallback paths (OpenClaw renamed workspace/ to workspace-main/ in recent versions, and uses workspace-{agentId} for multi-agent setups).
Skills (4 sources)
SourceOpenClaw locationHermes destinationWorkspace skillsworkspace/skills/~/.hermes/skills/openclaw-imports/Managed/shared skills~/.openclaw/skills/~/.hermes/skills/openclaw-imports/Personal cross-project~/.agents/skills/~/.hermes/skills/openclaw-imports/Project-level sharedworkspace/.agents/skills/~/.hermes/skills/openclaw-imports/<br>Skill conflicts are handled by --skill-conflict: skip leaves the existing Hermes skill, overwrite replaces it, rename creates a -imported copy.
Model and provider configuration
WhatOpenClaw config pathHermes destinationNotesDefault modelagents.defaults.modelconfig.yaml → modelCan be a string or {primary, fallbacks} objectCustom providersmodels.providers.*config.yaml → custom_providersMaps baseUrl, apiType/api — handles both short ("openai", "anthropic") and hyphenated ("openai-completions", "anthropic-messages", "google-generative-ai") valuesProvider API keysmodels.providers.*.apiKey~/.hermes/.envRequires --migrate-secrets. See API key resolution below.<br>Agent behavior
WhatOpenClaw config pathHermes config pathMappingMax turnsagents.defaults.timeoutSecondsagent.max_turnstimeoutSeconds / 10, capped at 200Verbose modeagents.defaults.verboseDefaultagent.verbose"off" / "on" / "full"Reasoning effortagents.defaults.thinkingDefaultagent.reasoning_effort"always"/"high"/"xhigh" → "high", "auto"/"medium"/"adaptive" → "medium", "off"/"low"/"none"/"minimal" → "low"Compressionagents.defaults.compaction.modecompression.enabled"off" → false, anything else → trueCompression modelagents.defaults.compaction.modelcompression.summary_modelDirect string copyHuman delayagents.defaults.humanDelay.modehuman_delay.mode"natural" / "custom" / "off"Human delay timingagents.defaults.humanDelay.minMs / .maxMshuman_delay.min_ms / .max_msDirect copyTimezoneagents.defaults.userTimezonetimezoneDirect string copyExec timeouttools.exec.timeoutSecterminal.timeoutDirect copy (field is timeoutSec, not timeout)Docker sandboxagents.defaults.sandbox.backendterminal.backend"docker" → "docker"Docker imageagents.defaults.sandbox.docker.imageterminal.docker_imageDirect copy<br>Session reset policies
OpenClaw config pathHermes config pathNotessession.reset.modesession_reset.mode"daily", "idle", or bothsession.reset.atHoursession_reset.at_hourHour (0–23)...