Openclaw to hermes migration
Skill S3YED/appie-kit/skills/ops/openclaw-to-hermes-migration
Build Your Own AI Employee. The complete starter kit for OpenClaw + Hermes Agent. 155 deduplicated skills, drag-and-drop workspace, case studies, install scripts.
npx -y skills add S3YED/appie-kit --skill openclaw-to-hermes-migrationAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Migrate an agent that currently runs on OpenClaw gateway to Hermes Agent. Covers pre-flight inventory, Hermes install, config, skills migration, faster-whisper/STT, gateway setup, cutover, and verification.
SKILL.md
7.9 KB, ~2.1k tokens by cl100k_base, as published. Nobody here has run it
OpenClaw → Hermes Agent Migration
When to Use
Migrate an existing OpenClaw-gateway agent to Hermes Agent when:
- User says "migrate [agent] to Hermes" or "switch [agent] from OpenClaw"
- Setting up fleet-wide standardization on Hermes
- Retiring OpenClaw instances in favor of the Hermes framework
Target Machine Profile
The procedure assumes:
- OS: Ubuntu 24.04 (or Debian-based Linux) with apt
- Python: 3.12 (system) — PEP 668 enforced (use
--break-system-packagesfor faster-whisper) - Node.js: Installed (OpenClaw runs on Node.js, but Hermes does not require it)
- Internet: Outbound HTTPS access (for Hermes install, PyPI, OpenRouter API, Telegram API)
- SSH: Root access from the migrating agent's machine
- Tailscale: Installed (100.x.x.x IP)
Pre-Flight: Inventory OpenClaw Instance
1. Check if OpenClaw is running
ps aux | grep openclaw
2. Find OpenClaw config and extract bot token
cat /root/.openclaw/openclaw.json | python3 -m json.tool
Key fields to extract:
channels.telegram.botToken— the Telegram bot token (needed for Hermes .env)channels.telegram.allowFrom— authorized user IDsagents.defaults.model.primary— current modelagents.defaults.userTimezone
3. Check OpenClaw service type
# Check systemd user service
systemctl --user status openclaw-gateway
# Check if symlinked for auto-start
ls -la /root/.config/systemd/user/default.target.wants/openclaw-gateway.service
OpenClaw can be:
- systemd user service (
systemctl --user) - systemd system service (
systemctl) - Docker container
- Raw process (started manually or via tmux/screen/init.d)
4. Check disk space
df -h /
Hermes takes ~500MB-1GB. Ensure at least 5GB free.
5. Check Python version
python3 --version
python3 -c "import sys; print(sys.executable)"
Hermes auto-installs its own python if missing, but Python 3.10+ is ideal.
Step 1: Install Hermes
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
export PATH="$HOME/.local/bin:$PATH"
hermes --version
Expected: Hermes Agent v0.17.0+ (or latest)
Hermes auto-links into /usr/local/bin/ — no shell reload needed.
Step 2: Configure Provider
hermes config set model.default "deepseek/deepseek-v4-flash"
hermes config set model.provider "openrouter"
hermes config set model.context_length 1000000
Use OpenRouter + DeepSeek unless the user specifies otherwise. The OpenRouter API key goes in .env in Step 3.
OpenRouter Key Check
Before setting up, verify the OpenRouter key has remaining credits:
curl -s https://openrouter.ai/api/v1/key \
-H "Authorization: Bearer $OPENROUTER_API_KEY" | \
python3 -c "import sys,json; d=json.load(sys.stdin)['data']; print(f'Remaining: \${d[\"limit_remaining\"]:.1f} of \${d[\"limit\"]} monthly')"
If remaining < $10/month, warn the user before proceeding.
Step 3: Set Up Environment (.env)
cat > /root/.hermes/.env << 'ENVEOF'
OPENROUTER_API_KEY=sk-or-v1-...
TELEGRAM_BOT_TOKEN=<bot-token-from-openclaw-config>
ENVEOF
chmod 600 /root/.hermes/.env
- OPENROUTER_API_KEY: Use the same key as other Hermes agents (Seyed's account). Get from an existing Hermes
.env. - TELEGRAM_BOT_TOKEN: Extract from OpenClaw config (
openclaw.json→channels.telegram.botToken)
Verify .env was written correctly (mask secrets in output):
ls -la /root/.hermes/.env
cat /root/.hermes/.env | sed 's/sk-or-v1-[^ ]*/REDACTED/;s/[0-9]*:[A-Za-z0-9_-]*/REDACTED/'
Step 4: Copy Skills from Existing Hermes Instance
From the existing Hermes instance (e.g. Appie-3):
# On source machine
tar czf /tmp/skills.tar.gz -C /root/.hermes skills/
# Copy to target
scp /tmp/skills.tar.gz root@<target-tailscale-ip>:/tmp/
# On target
mkdir -p /root/.hermes/skills
tar xzf /tmp/skills.tar.gz -C /root/.hermes/
rm /tmp/skills.tar.gz
# Verify
find /root/.hermes/skills -name 'SKILL.md' | wc -l
Expected: 100+ skills (Appie-3 has ~104 as of 2026-06-21).
Step 5: Install Hub Skills (Optional "Up-Heat Kit")
hermes skills install github-code-review
hermes skills install web-research
These skills fail if the hub name doesn't match exactly. Check available skills with hermes skills search <keyword>. Non-critical — the copied skills from Step 4 cover most functionality.
Step 6: Install faster-whisper (Voice STT)
Ubuntu 24.04 has PEP 668 — must use --break-system-packages:
pip3 install faster-whisper --break-system-packages
python3 -c 'import faster_whisper; print("faster-whisper OK:", faster_whisper.__version__)'
Expected: faster-whisper OK: 1.2.1+
Step 7: Configure STT + Gateway Settings
# Enable local STT with faster-whisper
hermes config set stt.enabled true
hermes config set stt.provider local
# Enable Telegram features
hermes config set telegram.reactions true
hermes config set telegram.extra.rich_messages true
Step 8: Install Gateway Service
yes | hermes gateway install
This installs a systemd user service and asks two yes/no questions. yes pipe auto-answers both.
Verify:
hermes gateway status
Expected: Active: active (running), Main PID: <pid> (hermes)
Step 9: Verify Telegram Connection
Check gateway logs for successful Telegram connection:
tail -10 /root/.hermes/logs/gateway.log
Expected lines:
[Telegram] set_my_commands OK for scope BotCommandScopeAllPrivateChats (30 cmds)
[Telegram] Connected to Telegram (polling mode)
Gateway running with 1 platform(s)
Polling Conflict
If OpenClaw was still running when Hermes started, you'll see:
[Telegram] Telegram polling conflict (1/5) — previous session still held open...
This auto-resolves within 30 seconds once OpenClaw is stopped. If it persists, force-stop OpenClaw.
Step 10: Stop and Disable OpenClaw
# Stop the service
systemctl --user stop openclaw-gateway
# Disable auto-start
systemctl --user disable openclaw-gateway
# Verify it's dead
systemctl --user status openclaw-gateway
# Expected: Active: inactive (dead); Loaded: ... disabled
# Kill any remaining OpenClaw processes
pkill -f 'openclaw-gateway' 2>/dev/null || true
Important: kill or pkill may terminate the SSH session if matching patterns overlap (e.g. pkill -f openclaw matching an SSH command). Use systemctl --user stop as the primary method. Only use pkill as fallback in a separate unprivileged command.
Step 11: Final Verification
# 1. Only Hermes should be running
systemctl --user list-units --type=service --state=running | grep -E 'hermes|openclaw'
# Expected: hermes-gateway only
# 2. Telegram API responds
curl -s "https://api.telegram.org/bot$(grep TELEGRAM_BOT_TOKEN /root/.hermes/.env | cut -d= -f2)/getWebhookInfo" | python3 -m json.tool
# Expected: {"ok": true, "result": {"url": "", ...}}
# 3. Gateway is active and wasn't restarted by OpenClaw interference
hermes gateway status | grep Active
# Expected: active (running) since ... (match current time)
# 4. Disk after install
df -h /
Rollback Plan
If Hermes doesn't work:
# 1. Stop Hermes
systemctl --user stop hermes-gateway
systemctl --user disable hermes-gateway
# 2. Restart OpenClaw
systemctl --user start openclaw-gateway
systemctl --user enable openclaw-gateway
# 3. Delete Hermes config (optional)
rm -rf /root/.hermes
```===ME:openclaw-to-hermes-migration
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.