Migrate from OpenClaw
Transitioning from OpenClaw to Hermes
The hermes claw migrate command is designed to seamlessly transition your existing OpenClaw configuration (including legacy Clawdbot or Moldbot setups) into the Hermes ecosystem.
[!TIP] Simplifying Providers: If your previous OpenClaw environment utilized multiple providers, running
hermes setup --portalwill consolidate them into a single OAuth login, granting access to over 300 models and the Tool Gateway.
๐ Quick Start Guide
Before applying any changes, Hermes always provides a preview of the migration plan.
# Standard flow: Preview the changes, then confirm to apply
hermes claw migrate
# Read-only mode: View the plan without making any modifications
hermes claw migrate --dry-run
# Power-user mode: Full migration including secrets, bypassing confirmation
hermes claw migrate --preset full --migrate-secrets --yes
Automatic Detection
Hermes automatically scans for legacy configurations in the following locations:
- Directories:
~/.clawdbot/or~/.moltbot/ - Config Files:
clawdbot.jsonormoltbot.json
๐ Configuration Options
| Option | Description |
|---|---|
--dry-run | Performs a preview only; terminates before applying changes. |
--preset [name] | full (all compatible settings) or user-data (ignores infrastructure). |
--migrate-secrets | Required to import API keys. Presets do not import secrets by default. |
--overwrite | Forces Hermes to overwrite existing files if a conflict occurs. |
--no-backup | Disables the creation of a pre-migration zip snapshot in ~/.hermes/backups/. |
--skill-conflict [mode] | Determines how to handle skill collisions: skip (default), overwrite, or rename. |
Pre-Migration Checklist
- Backup critical
SOUL.mdorMEMORY.mdfiles manually. - Identify if you need the
fulloruser-datapreset. - Decide on a
--skill-conflictstrategy.
๐ฆ Migration Mapping
1. Persona, Memory, and Instructions
Hermes handles memory by parsing entries, merging them with existing data, and removing duplicates.
| OpenClaw Source | Hermes Destination | Notes |
|---|---|---|
workspace/SOUL.md | ~/.hermes/SOUL.md | Direct file copy. |
workspace/AGENTS.md | AGENTS.md (in target) | Requires the --workspace-target flag. |
workspace/MEMORY.md | ~/.hermes/memories/MEMORY.md | Parsed, merged, and deduped. |
workspace/USER.md | ~/.hermes/memories/USER.md | Parsed, merged, and deduped. |
workspace/memory/*.md | ~/.hermes/memories/MEMORY.md | All daily logs are merged into the main memory. |
Note: Hermes also checks workspace.default/ and workspace-main/ as fallbacks, as well as workspace-{agentId} for multi-agent configurations.
2. Skills Integration
All skills from the following four sources are consolidated into ~/.hermes/skills/openclaw-imports/:
- Workspace skills:
workspace/skills/ - Managed/Shared skills:
~/.openclaw/skills/ - Personal cross-project skills:
~/.agents/skills/ - Project-level shared skills:
workspace/.agents/skills/
3. Model & Provider Setup
| OpenClaw Path | Hermes Destination | Logic/Notes |
|---|---|---|
agents.defaults.model | config.yaml model | Supports strings or {primary, fallbacks} objects. |
models.providers.* | config.yaml custom_providers | Maps baseUrl and apiType. Handles openai, anthropic, etc. |
models.providers.*.apiKey | ~/.hermes/.env | Only migrated if --migrate-secrets is used. |
โ๏ธ Behavioral & Technical Settings
Agent Logic
The migration converts OpenClaw's timing and effort settings into Hermes' format.
| OpenClaw Key | Hermes Key | Mapping Logic |
|---|---|---|
agents.defaults.timeoutSeconds | agent.max_turns | (Capped at 200) |
agents.defaults.verboseDefault | agent.verbose | off / on / full |
agents.defaults.thinkingDefault | agent.reasoning_effort | always/high/xhigh high; auto/med/adaptive med; off/low/none low |
agents.defaults.compaction.mode | compression.enabled | off false; others true |
agents.defaults.compaction.model | compression.summary_model | Direct string copy. |
agents.defaults.humanDelay.mode | human_delay.mode | natural / custom / off |
agents.defaults.humanDelay.minMs | human_delay.min_ms | Direct copy. |
agents.defaults.userTimezone | timezone | Direct string copy. |
tools.exec.timeoutSec | terminal.timeout | Direct copy. |
agents.defaults.sandbox.backend | terminal.backend | docker docker |
agents.defaults.sandbox.docker.image | terminal.docker_image | Direct string copy. |
Session Management
Hermes looks for session.reset settings. If missing, it infers them from the session.resetTriggers array.
| OpenClaw Path | Hermes Path | Notes |
|---|---|---|
session.reset.mode | session_reset.mode | daily, idle, or both |
session.reset.atHour | session_reset.at_hour | Integer (0โ23) |
session.reset.idleMinutes | session_reset.idle_minutes | Minutes of inactivity |
MCP Servers & TTS
MCP Mapping:
Fields such as command, args, env, cwd, and url (for HTTP/SSE) are mapped directly to mcp_servers.*. Tool filtering (include/exclude) is also preserved.
TTS Priority: Hermes reads TTS settings in the following order of precedence:
messages.tts.providers.{provider}.*(Primary)talk.providers.{provider}.*(Secondary)messages.tts.{provider}.*(Legacy)
| OpenClaw Value | Hermes Destination |
|---|---|
| Provider Name | config.yaml tts.provider |
| ElevenLabs Voice ID | config.yaml tts.elevenlabs.voice_id |
| ElevenLabs Model ID | config.yaml tts.elevenlabs.model_id |
| OpenAI Model | config.yaml tts.openai.model |