Cómo migrar de OpenClaw a Hermes Agent sin perder memoria ni skills

Cómo migrar de OpenClaw a Hermes Agent sin perder memoria ni skills

29 de julio del 202611 minOpenClaw, Hermes Agent, Nous Research, IA, Tutorial

Respuesta corta (60 segundos): la migración es preview → aplicar → verificar → limpiar. (1) Instalá y verificá Hermes Agent en la misma máquina donde ya corre OpenClaw. (2) Previsualizá con hermes claw migrate --dry-run para ver qué importará sin tocar nada. (3) Aplicá la migración con hermes claw migrate (o la variante opt-in hermes claw migrate --preset full --migrate-secrets --yes si querés un viaje completo que también lleve API keys sin prompts). (4) Verificá con hermes doctor, hermes status y hermes config show, más una sesión nueva que ya vea las skills importadas. (5) Revisá canales (incluido el re-emparejado de WhatsApp con QR) y los archivos archivados. (6) Recién después de validar todo, pará OpenClaw con openclaw gateway stop, previsualizá la limpieza con hermes claw cleanup --dry-run, y recién entonces corré hermes claw cleanup. Para un borrado total de OpenClaw al final, seguí la guía de desinstalación.

Si corrés OpenClaw hace un tiempo y querés pasarte a Hermes Agent sin perder ni memoria ni skills, hay un comando oficial: hermes claw migrate. Lee de ~/.openclaw/ (con fallback a ~/.clawdbot/ y ~/.moltbot/), importa todo lo compatible y deja archivado lo que no tiene equivalente. Esta guía es la versión corta, sin olores, de la guía oficial de migración, con foco en qué se lleva solo, qué queda archivado, y cómo validar antes de tocar nada importante.

Qué migra automáticamente

La tabla resume, por área, qué toma hermes claw migrate desde tu instalación de OpenClaw y dónde lo deja en Hermes. Los flags importantes son --preset full (todo compatible) o --preset user-data (excluye infra). Ningún preset importa secretos solo: si querés API keys y tokens, agregá --migrate-secrets.

ÁreaOrigen (OpenClaw)Destino (Hermes)Notas
Persona / instruccionesworkspace/SOUL.md~/.hermes/SOUL.mdCopia directa
Instrucciones de workspaceworkspace/AGENTS.mdAGENTS.md en --workspace-targetRequiere --workspace-target
Memoria de largo plazoworkspace/MEMORY.md~/.hermes/memories/MEMORY.mdParseado a entries, merge con dedupe, delimitador §
Perfil del usuarioworkspace/USER.md~/.hermes/memories/USER.mdMisma lógica de merge por entries
Memoria diariaworkspace/memory/*.md~/.hermes/memories/MEMORY.mdTodos los archivos diarios se mergean al principal
Skills (4 fuentes)workspace/skills/, ~/.openclaw/skills/, ~/.agents/skills/, workspace/.agents/skills/~/.hermes/skills/openclaw-imports/Conflictos: --skill-conflict skip (default), overwrite o rename
Modelo defaultagents.defaults.modelconfig.yamlmodelAcepta string u objeto {primary, fallbacks}
Custom providersmodels.providers.*config.yamlcustom_providers (migrado a providers: en el próximo hermes update)Mapea baseUrl, apiType/api y nombres cortos o con guión
API keys de providersmodels.providers.*.apiKey~/.hermes/.envRequiere --migrate-secrets, allowlist estricto
Comportamiento del agenteagents.defaults.timeoutSeconds, verboseDefault, thinkingDefault, agents.defaults.compaction.mode, agents.defaults.compaction.model, humanDelay.*, userTimezone, tools.exec.timeoutSec, agents.defaults.sandbox.*agent.*, compression.enabled, compression.summary_model, human_delay.*, timezone, terminal.*Mappings con normalización (ej. timeoutSeconds / 10, cap 200)
Reset de sesiónsession.reset.* (o fallback session.resetTriggers)session_reset.*Modos daily / idle
MCP serversmcp.servers.*mcp_servers.*Stdio y HTTP/SSE, con tools.include / tools.exclude
TTSmessages.tts.providers.* (canónico), talk.providers.* (fallback), formato plano viejoconfig.yamltts.*, assets en ~/.hermes/tts/Soporta ElevenLabs, OpenAI, Edge/Microsoft
Canales (Telegram, Discord, Slack, etc.)channels.<plat>.botToken / accounts.default.*Variables en ~/.hermes/.env (TELEGRAM_BOT_TOKEN, DISCORD_BOT_TOKEN, SLACK_BOT_TOKEN/SLACK_APP_TOKEN, SIGNAL_ACCOUNT, SIGNAL_HTTP_URL, SIGNAL_ALLOWED_USERS, MATRIX_ACCESS_TOKEN, MATTERMOST_BOT_TOKEN)Tokens pueden ser string, ${VAR} o SecretRef
Lista blanca de canaleschannels.<plat>.allowFrom[]<PLAT>_ALLOWED_USERSLista join con comas
Aprobaciones / execapprovals.exec.mode, exec-approvals.jsonconfig.yamlapprovals.mode, command_allowlistModes mapeados, patterns merged y deduped
Browserbrowser.cdpUrl, browser.headlessconfig.yamlbrowser.cdp_url, browser.headless
Brave searchtools.web.search.brave.apiKey.envBRAVE_API_KEYRequiere --migrate-secrets
Gateway authgateway.auth.token.envHERMES_GATEWAY_TOKENRequiere --migrate-secrets
Working diragents.defaults.workspaceconfig.yamlterminal.cwdLegacy puede emitir MESSAGING_CWD

Qué no migra automáticamente

Lo que sigue se archiva bajo ~/.hermes/migration/openclaw/<timestamp>/archive/ para revisión manual. Son piezas que en Hermes se construyen con otros comandos o no tienen equivalente directo.

No migraDónde quedaCómo recrearlo en Hermes
IDENTITY.mdarchive/workspace/IDENTITY.mdMerge manual en ~/.hermes/SOUL.md
TOOLS.mdarchive/workspace/TOOLS.mdHermes ya trae instrucciones de tools integradas
HEARTBEAT.mdarchive/workspace/HEARTBEAT.mdUsá hermes cron create para tareas periódicas
BOOTSTRAP.mdarchive/workspace/BOOTSTRAP.mdUsá context files o skills
Cron jobsarchive/cron-config.jsonRecrear con hermes cron create
Pluginsarchive/plugins-config.jsonVer guía de hooks
Hooks / webhooksarchive/hooks-config.jsonUsá hermes webhook o gateway hooks
Memory backendarchive/memory-backend-config.jsonConfigurar con hermes honcho
Skills registryarchive/skills-registry-config.jsonUsá hermes skills config
UI / identityarchive/ui-identity-config.jsonComando /skin
Logging / diagnosticsarchive/logging-diagnostics-config.jsonSección logging en config.yaml
Multi-agent listarchive/agents-list.jsonUsá perfiles de Hermes
Channel bindingsarchive/bindings.jsonSetup manual por plataforma
Canales con config profundaarchive/channels-deep-config.jsonConfig manual por plataforma

Además hay dos plataformas que requieren acción manual: WhatsApp (re-emparejar por QR con hermes whatsapp) y cualquier token que en OpenClaw use source: file o source: exec como SecretRef — la migración avisa sobre estos y los deja sin resolver.

Paso 1 · Instalar y verificar Hermes

Antes de mover nada, asegurate de tener Hermes Agent funcionando en la misma máquina y con hermes --version verde. La guía completa de instalación (Linux, macOS, WSL2, Android, Windows nativo, paths sin sudo) está acá:

~
# Después de instalar Hermes, confirmá el binario y el Gateway hermes --version hermes doctor

Si ya lo tenés instalado y actualizado, podés saltearte a la previsualización. Si no, instalá Hermes Agent y volvé. Tener los dos corriendo en paralelo es exactamente lo que querés durante la transición.

Paso 2 · Previsualizar la migración

Antes de tocar nada, mirá qué va a hacer el comando. La previsualización lee todo el state de OpenClaw, busca skills, providers, canales y memoria, y te imprime el plan completo sin escribir nada:

~
# Previsualizar la migración sin modificar nada hermes claw migrate --dry-run

Por default lee de ~/.openclaw/. Si tu instalación vive en otro lado (por ejemplo, un profile custom o un contenedor), pasale la ruta explícita:

~
# Fuente en una ruta custom (ej. profile o contenedor) hermes claw migrate --dry-run --source /ruta/a/openclaw

El preview te muestra: archivos a copiar, skills a importar, providers y canales detectados, secretos que no se van a copiar (por default), y conflictos. Revisalo con cuidado: si hay algo que no querés tocar, ajustalo antes de aplicar.

Paso 3 · Ejecutar la migración

Una vez que el preview te cierra, aplicá la migración:

~
# Aplicar la migración (vuelve a mostrar el preview y pide confirmación) hermes claw migrate

Si querés un camino completo en una sola corrida — incluyendo API keys y sin prompts — usá esta variante opt-in. Cuidado: lleva secretos, leelos dos veces antes de correrlo:

~
# Camino opt-in completo (incluye API keys, sin confirmación) # --preset full: importa todo lo compatible # --migrate-secrets: también API keys y tokens (allowlist estricto) # --yes: salta el prompt de confirmación hermes claw migrate --preset full --migrate-secrets --yes

Flags útiles si tu situación lo amerita:

  • --workspace-target /ruta: a dónde va AGENTS.md (necesario para copiar las instrucciones del workspace).
  • --overwrite: fuerza pisar archivos de Hermes que entren en conflicto. Sin este flag, la migración se niega a aplicar si hay conflictos.
  • --no-backup: saltea el snapshot pre-migración en ~/.hermes/backups/pre-migration-*.zip. Por default se escribe siempre un restore point antes de aplicar.
  • --skill-conflict skip | overwrite | rename: cómo resolver skills duplicadas. rename deja la importada con sufijo -imported en el basename (p. ej. mi-skillmi-skill-imported).

Paso 4 · Verificar Hermes

Después de aplicar, lo crítico es validar que Hermes quedó funcional. Cuatro comandos, en este orden:

~
# 1) Chequeo completo de config y deps hermes doctor # 2) Autenticación con los providers migrados hermes status # 3) Config efectiva: revisá session_reset, terminal.cwd, model, providers hermes config show

Después de los chequeos, arrancá una sesión nueva (las skills importadas y los memory entries toman efecto en sesiones nuevas, no en la actual):

~
# 4) Sesión nueva: acá deberían aparecer las skills importadas hermes

Si algo no aparece, hermes config show te dice qué keys efectivamente quedaron seteadas. Si falta una API key, agregala con hermes config set OPENROUTER_API_KEY tu_key (o la variable que corresponda). /skills te lista las skills cargadas.

Paso 5 · Revisar canales y archivos archivados

Los tokens de los canales quedan en ~/.hermes/.env, pero el Gateway no los recarga solo. Reinicialo:

~
# Reiniciar el Gateway para que tome los tokens migrados systemctl --user restart hermes-gateway

Si usás WhatsApp, la migración no puede llevarse la sesión (WhatsApp usa QR pairing con Baileys, no token). Quedó guardado el WHATSAPP_ALLOWED_USERS para que mantenga la lista blanca, pero hay que re-emparejar:

~
# Re-emparejar WhatsApp con QR después de migrar hermes whatsapp

Para todo lo que no migra automáticamente (cron, plugins, hooks, multi-agent, channel bindings, IDENTITY.md, TOOLS.md, HEARTBEAT.md, etc.), revisá el directorio:

~
# Archivos archivados para revisión manual ls -la ~/.hermes/migration/openclaw/$(ls -t ~/.hermes/migration/openclaw/ | head -1)/archive/

Cada carpeta adentro (workspace/, cron-config.json, plugins-config.json, hooks-config.json, bindings.json, etc.) corresponde a la columna "Cómo recrearlo en Hermes" de la tabla de arriba. Recreá lo que necesites desde la columna correspondiente.

Paso 6 · Limpiar solo después de validar

La limpieza se hace al final y solo cuando todo lo anterior esté verde. El flujo:

  1. Pará el Gateway de OpenClaw para que no siga procesando: openclaw gateway stop.
  2. Previsualizá qué va a renombrar la limpieza de Hermes.
  3. Aplicá la limpieza: renombra los directorios de OpenClaw a .pre-migration/ para evitar confusión de state entre los dos agentes.
~
# 1) Parar OpenClaw para que no compita con Hermes openclaw gateway stop # 2) Previsualizar qué va a renombrar la limpieza de Hermes hermes claw cleanup --dry-run # 3) Aplicar la limpieza (renombra dirs de OpenClaw a .pre-migration/) hermes claw cleanup

Si querés borrar OpenClaw por completo (CLI + Gateway + state + workspace + app), seguí la guía de desinstalación de OpenClaw después de la limpieza. No borres OpenClaw antes de validar que Hermes está estable.

Troubleshooting

Los cuatro errores más comunes durante una migración, con la solución exacta.

ProblemaCausaSolución
"OpenClaw directory not found"La instalación no está en ~/.openclaw/Pasá --source /ruta/a/openclaw. La migración también busca en ~/.clawdbot/ y ~/.moltbot/.
"No provider API keys found"Las keys viven en una ruta no leída por la migración, o son SecretRefs con source: file / source: execAgregá las keys con hermes config set OPENAI_API_KEY tu_key (etc.) después de la migración. Los SecretRefs source: file / source: exec no se resuelven automáticamente.
Conflictos al aplicar (--overwrite requerido)Hay archivos que se pisan entre la config existente de Hermes y la importadaReleé el preview, decidí qué queda, y agregá --overwrite si querés forzar, o --skill-conflict rename para skills duplicadas.
Skills importadas no aparecenEstás en la misma sesión donde corriste hermes claw migrateCerrá la sesión y arrancá una nueva con hermes. Las skills importadas aterrizan en ~/.hermes/skills/openclaw-imports/ y se cargan en sesiones nuevas. Si querés verlas ya, corré /skills.

Si tu caso es más raro (instalación en contenedor, Nix, Docker, perfil multi-agent), la guía oficial de migración tiene secciones de edge cases que exceden este recorrido.

¿Tenés un setup puntual (multi-agent, custom providers, varios canales) y querés validar el plan antes de ejecutar la migración? Hay un CTA al final con una llamada gratis de 30 minutos.

Preguntas frecuentes

¿Pierdo memoria y skills al migrar a Hermes?

No. `hermes claw migrate` importa `MEMORY.md`, `USER.md`, los archivos diarios de `workspace/memory/`, las skills de `workspace/skills/`, `~/.openclaw/skills/`, `~/.agents/skills/` y `workspace/.agents/skills/`, y los unifica con dedupe por delimitador `§`. Las skills importadas aterrizan en `~/.hermes/skills/openclaw-imports/`.

¿Qué pasa con mis API keys y los tokens de los canales?

Por default, `hermes claw migrate` **no** importa secretos. Si querés que también migre, agregá `--migrate-secrets`. Ahí copia los API keys de los providers desde `openclaw.json`, `~/.openclaw/.env`, el sub-objeto `env` y `auth-profiles.json`, sólo para el allowlist de Hermes (`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`, `VOICE_TOOLS_OPENAI_KEY`).

¿Migra WhatsApp automáticamente?

No. WhatsApp usa QR pairing (Baileys), no token. La migración lleva el `allowFrom` como `WHATSAPP_ALLOWED_USERS`, pero la sesión queda invalidada. Después de migrar corré `hermes whatsapp` para re-emparejar el dispositivo.

¿Qué hace `--preset full` y qué no?

`full` importa todo lo compatible de un golpe y `user-data` excluye infra (sandbox, exec, terminal). **Ningún preset importa secretos solo**: siempre necesitás agregar `--migrate-secrets` explícito para llevar las API keys y los tokens.

¿Cómo manejo un SecretRef que no se puede resolver?

La migración sabe leer tres formatos (string plano, template `${VAR}` y SecretRef con `source: env`). Para `source: env` busca en `~/.openclaw/.env` y en el sub-objeto `env` de la config. Si tu token usa `source: file` o `source: exec`, la migración lo avisa y lo deja sin resolver: agregalo a mano con `hermes config set` después.

¿Se pisa algo si ya tengo configuración en Hermes?

No por default. Ante conflictos, la migración se niega a aplicar y te muestra el plan completo. Para forzar el overwrite agregá `--overwrite`. Para skills específicamente usá `--skill-conflict skip`, `overwrite` o `rename` (este último crea una copia con el sufijo `<skill>-imported`, p. ej. `mi-skill` → `mi-skill-imported`).

¿Cuándo es seguro correr `hermes claw cleanup`?

Sólo después de validar `hermes doctor`, `hermes status` y de re-emparejar WhatsApp. `cleanup` renombra los directorios de OpenClaw a `.pre-migration/` para evitar confusión de state entre los dos agentes. El preview es `hermes claw cleanup --dry-run`.