Hermes: The OpenClaw Replacement That Actually Learns
· ~5 min readWhen OpenClaw hit nine CVEs in four days last spring, including a CVSS 9.9 vulnerability, developers started looking for alternatives. Cisco called personal AI agents like OpenClaw "a security nightmare." Meanwhile, a competitor had quietly grown to 110,000 GitHub stars in just ten weeks: Hermes Agent by Nous Research.
Hermes isn't just another OpenClaw clone. It adds something OpenClaw lacks: a closed learning loop that enables the agent to self-improve over time without fine-tuning. Every task it completes gets distilled into persistent memory; next time it encounters a similar request, it responds with accumulated experience.
What Migrates from OpenClaw
Hermes includes a built-in migration path via hermes claw migrate. The command auto-detects ~/.openclaw and imports:
- Persona:
SOUL.md→~/.hermes/SOUL.md(direct copy) - Memory:
MEMORY.md,USER.md,HEARTBEAT.md→~/.hermes/memories/(parsed into entries, merged with existing) - Skills:
workspace/skills/→~/.hermes/skills/openclaw-imports/ - Command allowlist: Approval patterns → merged into
config.yaml - Messaging settings: Platform configs, allowed users, working directory →
~/.hermes/.env - API keys: Allowlisted secrets (Telegram, OpenRouter, OpenAI, Anthropic, ElevenLabs) →
~/.hermes/.env - TTS assets: Workspace audio files →
~/.hermes/tts/ - Workspace instructions:
AGENTS.md(copy to workspace with--workspace-target)
Model configuration maps as follows:
| OpenClaw | Hermes |
|---|---|
agents.defaults.model | config.yaml → model |
models.providers.* | config.yaml → custom_providers |
channels.telegram | config.yaml → platforms.telegram |
agents.defaults.compaction | config.yaml → compression |
Quick Migration Steps
First-time setup: The hermes setup wizard automatically detects ~/.openclaw and offers migration before configuration begins.
Anytime after install:
# Preview then migrate (always shows preview first)
hermes claw migrate
# Preview only, no changes
hermes claw migrate --dry-run
# Full migration including API keys, skip confirmation
hermes claw migrate --preset full --migrate-secrets --yes
# Migrate without secrets
hermes claw migrate --preset user-data
All options:
| Flag | Description |
|---|---|
--dry-run | Preview only — no files modified |
--preset {user-data,full} | Migration preset (default: full). user-data excludes secrets |
--overwrite | Overwrite existing files (default: skip conflicts) |
--migrate-secrets | Include allowlisted secrets |
--source PATH | Custom OpenClaw directory |
--workspace-target PATH | Copy AGENTS.md to this path |
--skill-conflict {skip,overwrite,rename} | Handle skill conflicts (default: skip) |
--yes, -y | Skip confirmation prompts |
Installation Options
Option A: Official bash installer (recommended)
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
source ~/.bashrc
hermes --version
The installer handles Python 3.11, Node.js v22, uv, ripgrep, and ffmpeg automatically. Requires Git as the only prerequisite.
Option B: Docker
docker run -d \
--name hermes \
--restart unless-stopped \
-v ~/.hermes:/opt/data \
-p 8642:8642 \
nousresearch/hermes-agent gateway run
Place your .env file in ~/.hermes/ with ANTHROPIC_API_KEY or OPENAI_API_KEY, plus platform tokens like TELEGRAM_BOT_TOKEN.
Option C: From source
git clone https://github.com/NousResearch/hermes-agent.git
cd hermes-agent
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[all]"
hermes --version
The [all] extra installs every platform connector and memory backend. For minimal install, use pip install -e .
Post-Migration Checklist
- Verify configuration:
hermes setup # Run wizard if not done during install
hermes status # Check agent, auth, and platform status
hermes doctor # Diagnose any config or dependency issues
- Rebuild memory index: Migrated memories need re-embedding
hermes memory reindex
- Test skills: Check that migrated skills load correctly
hermes skills list
- Update model settings: Choose your provider
hermes model # Interactive model selector
Recommended models: Qwen 3.5 (free on OpenRouter) for routine automation; Claude Opus 4.6 or GPT 5.4 (thinking mode medium+) for complex reasoning tasks.
Hermes vs OpenClaw: Trade-offs
| Aspect | OpenClaw | Hermes |
|---|---|---|
| Strength | Breadth: 20+ channels, 13,000+ ClawHub skills | Depth: Long-term memory, self-learning loop |
| Setup | More complex, Node.js-based | Easier setup, better default memory |
| Channels | 24 messaging platforms | 7 platforms |
| Community | ClawHub marketplace | Smaller but growing |
| Self-improvement | Requires manual skill creation | Automatic via GEPA reflection loop |
| Runtime | Node.js | Python 3.11 |
| Security | CVEs spring 2026 | MIT license, local-only data storage, clean codebase |
Dual-Stack Deployment
Hermes and OpenClaw naturally complement each other. Dual-stack deployment is often better than outright migration:
- OpenClaw handles broad channel coverage and planning, decomposition, multi-step coordination
- Hermes serves as the execution specialist for repetitive domain-specific workflows
Both can run side-by-side, exchanging tasks and results via HTTP or message queues. This is particularly useful for teams needing both broad channel coverage and long-term learning capability.
Known Migration Issues
The hermes claw migrate tool has tracked several schema drift issues:
| Issue | Impact | Status |
|---|---|---|
workspace/ → workspace-main/ path change | Memories not migrating | Fixed in v0.3.0+ |
Channel tokens → accounts.default.* paths | Wrong auth token location | Fixed in v0.3.0+ |
TTS edge → microsoft rename | TTS provider detection fails | Fixed in v0.3.0+ |
| Provider API types now hyphenated | Wrong apiType for providers | Fixed in v0.3.0+ |
thinkingDefault enum expanded | Invalid enum values | Fixed in v0.3.0+ |
If you're on a Hermes version pre-v0.3.0, use the migration script from the official docs or the community openclaw-to-hermes tool as a reference.
Why Hermes Now?
The timing isn't coincidental. OpenClaw's security crisis created a gap. But Hermes offers more than just safety — it offers a fundamentally different approach to AI agents: one that learns from experience rather than requiring manual skill creation.
If you have a long-running project and you've been using Claude Code or Cursor in the default configuration, the practical experiment is: install Hermes Agent on a $5 VPS, point it at one repo, give it a Telegram channel, and let it accumulate skills for a month. The skills it writes are the test — if they're useful after a month, the loop works for your workflow.
Migration takes under 10 minutes with hermes claw migrate. Your agent picks up right where it left off — SOUL.md, MEMORY.md, skills, and channels all transfer seamlessly. Keep OpenClaw installed for a week after migration in case you want to reference old configs before decommissioning.
Next Steps
- Backup your OpenClaw setup:
cp -r ~/.openclaw ~/.openclaw.backup
- Install Hermes:
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
- Run setup with migration:
source ~/.bashrc
hermes setup # Auto-detects OpenClaw and offers migration
- Verify channels work:
hermes gateway
Send a test message to your Telegram/Discord bot to confirm everything's functioning. Your agent now has OpenClaw's breadth plus the ability to learn from every interaction.