Skip to main content

hermes-migrate

One-click migration from OpenClaw to Hermes.

Stop OpenClaw, migrate everything, start Hermes — your channels keep working.

Install

pip install hermes-migrate

Or with pipx:

pipx install hermes-migrate

From source (no pip/venv needed)

For locked-down systems (Debian/Ubuntu with externally-managed Python):

git clone https://github.com/raulvidis/hermes-migrate.git
cd hermes-migrate
./install.sh
hermes-migrate --dry-run -v   # preview
hermes-migrate -v             # full migration

Only requires Python 3.9+ and PyYAML (usually pre-installed).

Quick Start

# Full end-to-end migration
hermes-migrate

# Preview what would happen (no changes)
hermes-migrate --dry-run

# Migrate a specific agent from a multi-agent setup
hermes-migrate --agent cleo

# Verbose output
hermes-migrate -v

That's it. The tool will:

  1. Stop OpenClaw processes
  2. Auto-install Hermes if not present
  3. Migrate your persona, memories, and workspace files
  4. Write working credentials to ~/.hermes/.env
  5. Generate config.yaml with model and channel settings
  6. Start Hermes in the background

After it finishes, your existing channels (Telegram, Slack, Discord, WhatsApp) should just work.

What Gets Migrated

Files

OpenClaw Hermes
workspace/SOUL.md ~/.hermes/SOUL.md
workspace/MEMORY.md ~/.hermes/memories/MEMORY.md
workspace/USER.md ~/.hermes/memories/USER.md
workspace/HEARTBEAT.md ~/.hermes/memories/HEARTBEAT.md
workspace/IDENTITY.md ~/.hermes/memories/identity.md
workspace/AGENTS.md ~/.hermes/memories/agents_config.md
workspace/TOOLS.md ~/.hermes/memories/tools_config.md
workspace/memory/*.md ~/.hermes/memories/openclaw_archive/

Configuration

OpenClaw Hermes
Agent model (primary + fallbacks) config.yaml model settings
Channel bindings config.yaml platform_toolsets
Compaction mode compression settings
maxConcurrent code_execution.max_tool_calls
subagents.maxConcurrent delegation.max_iterations
Session retention / cron session_reset settings

Credentials

Bot tokens, API keys, and auth tokens are copied to ~/.hermes/.env (chmod 600):

  • Telegram bot tokens (per-agent in multi-agent setups)
  • Slack bot/app tokens
  • Discord bot tokens
  • WhatsApp config
  • Embedding/memory search API keys (e.g., Gemini)
  • Gateway auth tokens
  • Custom model provider API keys and base URLs
  • Allowed user lists (Telegram, Slack)

Documentation

The tool also generates reference docs in ~/.hermes/memories/:

  • openclaw_agents.md — multi-agent setup documentation
  • openclaw_channels.md — per-channel account details (tokens redacted)
  • openclaw_infrastructure.md — gateway, hooks, plugins, custom providers

Multi-Agent Setups

OpenClaw supports multiple agents with different models and channel bindings. When you run the migration:

  1. The tool lists all agents with their models and channels
  2. You pick which one to migrate to this Hermes instance
  3. Only that agent's config, channels, and credentials are migrated
  Available OpenClaw agents:

    [1] nora
        Model: openai/gpt-5
        Channels: slack:nora

    [2] cleo
        Model: anthropic/claude-haiku-4-5
        Channels: telegram:cleo

    [3] hank
        Model: zai/glm-5
        Channels: telegram:hank

  Select agent to migrate [1-3]:

To migrate multiple agents, use separate Hermes instances:

hermes-migrate --agent cleo
HERMES_HOME=~/.hermes-hank hermes-migrate --agent hank

CLI Reference

usage: hermes-migrate [-h] [--dry-run] [-v] [-a AGENT_ID] [--no-install]
                          [--no-start] [--version]

options:
  --dry-run          Preview changes without writing files
  -v, --verbose      Enable verbose output
  -a, --agent ID     Specify agent to migrate (skips interactive prompt)
  --no-install       Skip automatic Hermes installation
  --no-start         Don't start Hermes after migration
  --version          Show version

Post-Migration

If everything went smoothly, Hermes is already running and your channels are live. To verify:

  1. Send a message through your old channel (Telegram, Slack, etc.)
  2. Check ~/.hermes/.env has the right credentials
  3. Check ~/.hermes/config.yaml for model and channel settings
  4. Review ~/.hermes/SOUL.md to adjust your persona
  5. Browse ~/.hermes/memories/ for migrated memories and reference docs

If Hermes didn't auto-start (e.g., CLI not in PATH after fresh install):

source ~/.bashrc
hermes

Development

git clone https://github.com/raulvidis/hermes-migrate
cd hermes-migrate
pip install -e ".[dev]"

# Run tests
pytest

# Run tests with verbose output
pytest -v

# Format
black hermes_migrate/ tests/

# Lint
ruff check .

Project Structure

hermes_migrate/
  __init__.py        # Package version
  cli.py             # CLI entry point
  migrate.py         # All migration logic
tests/
  conftest.py        # Shared fixtures
  test_cli.py        # CLI argument parsing tests
  test_migrate.py    # Migration logic tests (90+ tests)
  test_security.py   # Redaction and security tests

Requirements

  • Python 3.9+
  • PyYAML (installed automatically)
  • Works on Linux, macOS, and Windows

License

MIT

Metadata

Release files for hermes-migrate 1.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hermes-migrate 1.2.1
File Size Uploaded Provenance Actions
hermes_migrate-1.2.1.tar.gz 39.4 kB Without provenance Details for hermes_migrate-1.2.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for hermes-migrate 1.2.1
File Interpreter ABI Platform Actions
hermes_migrate-1.2.1-py3-none-any.whl Python 3 none any Details for hermes_migrate-1.2.1-py3-none-any.whl

Total release size: 79.1 kB

Release files / hermes_migrate-1.2.1.tar.gz

Download URL hermes_migrate-1.2.1.tar.gz
Size 39.4 kB
Tags Source
SHA-256 checksum
How to use checksums
1ed2906f07b43e0fb908f43e20eff07c164325144357e5fed8435260699feb3b
BLAKE2b-256 checksum
How to use checksums
c27d88de8fa67fce029b48764a59e9f9a3a05a968e4282fbff739a1d5fb53c5d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / hermes_migrate-1.2.1-py3-none-any.whl

Download URL hermes_migrate-1.2.1-py3-none-any.whl
Size 39.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f9d0e1b134bccc5b65a1b7507f54163286fda7b0f2a1f27ba4b8e1c084291e1a
BLAKE2b-256 checksum
How to use checksums
dfc65ec53aa77dd5bcae7be9031d1e4b2f783e115418f55d92095d4e1573712e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Security for hermes-migrate 1.2.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page