Skip to content

feat: hermes migrate --from openclaw CLI command (pre-startup migration) #826

@teknium1

Description

@teknium1

Problem

The OpenClaw migration currently lives as an optional skill (optional-skills/migration/openclaw-migration/). As a skill, it requires the agent to already be running — which means the user needs working API keys and platform configs set up first. This is a chicken-and-egg problem since the migration is supposed to bring those keys and configs over.

Proposal

Add a hermes migrate --from openclaw CLI subcommand that:

  1. Runs before agent startup (no API keys needed)
  2. Auto-detects ~/.openclaw/ and offers to migrate
  3. Reuses the existing openclaw_to_hermes.py script directly
  4. Presents an interactive flow (preset selection, conflict modes, secret migration opt-in)
  5. Could optionally be offered during hermes setup if ~/.openclaw/ is detected

Why this matters

With the expanded migration (19 categories now), the script can bring over essentially everything a user needs to get Hermes working: API keys, platform tokens, model selection, TTS config, allowed users, skills, memories, and persona. Running this before first launch means the user gets a fully configured Hermes on day one.

Implementation notes

  • Add migrate subcommand to hermes_cli/main.py argparse
  • --from flag accepts openclaw (extensible to other agents later)
  • Interactive prompts via stdlib input() (no agent/prompt_toolkit needed)
  • The migration script at optional-skills/migration/openclaw-migration/scripts/openclaw_to_hermes.py already handles everything — just need a CLI wrapper
  • Consider auto-detection in hermes setup: if ~/.openclaw/ exists, ask "Would you like to import your OpenClaw settings?"
  • Could also detect other agent configs (~/.claude/, ~/.codex/) for future migration paths

Current state

The migration script supports: SOUL.md, MEMORY.md, USER.md, AGENTS.md, workspace + shared skills, command allowlists, Telegram/Discord/Slack/WhatsApp/Signal settings, model config, TTS config, provider API keys, TTS asset files, daily memory notes, and archiving unmapped docs. 19 categories total with 24 tests.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions