Hermes vs OpenClaw — Full Comparison Tutorial¶
Walk through both stacks on your machine, compare architecture and skills, migrate from OpenClaw to Hermes if needed, and decide which runtime fits your workflow.
Repos: NousResearch/hermes-agent · openclaw/openclaw
Companion: Feature matrix · OpenClaw + Gemma + RAG · Awesome Hermes Agent
Part 1 — What problem do they solve?¶
Both projects answer: "How do I talk to an AI agent from Telegram/WhatsApp/Discord and have it use tools on my machine?"
They diverge on what happens after the first week:
| OpenClaw | Hermes | |
|---|---|---|
| Product feel | Polished personal assistant — gateway, channels, dashboard | Research-grade agent platform — tools, memory, evolution |
| Skills | You install or write SKILL.md; ClawHub registry |
Agent can author skills; Curator maintains quality |
| Stack | Node.js, TypeScript, npm global | Python CLI, bash installer |
| Sweet spot | "Message my assistant anywhere" | "My assistant gets better at my workflows over time" |
Neither is a hosted SaaS. You run the gateway on your laptop, homelab, or VPS.
Part 2 — Architecture side by side¶
OpenClaw¶
flowchart LR
A[User on Telegram] --> B[OpenClaw Gateway]
B --> C[Session + agent runtime]
C --> D[SKILL.md in workspace]
C --> E[Tools cron webhooks]
C --> F[LLM provider or Ollama]
D --> C
E --> C
F --> C
C --> B
B --> A
- Gateway = single control plane (default
http://127.0.0.1:18789/) - Workspace =
~/.openclaw/workspacewithAGENTS.md,SOUL.md,TOOLS.md - Skills =
~/.openclaw/workspace/skills/<name>/SKILL.md - Daemon = launchd/systemd user service after
openclaw onboard --install-daemon
Docs: Architecture · Gateway
Hermes¶
flowchart LR
A[User on Telegram] --> B[hermes gateway]
B --> C[Agent + tools]
C --> D[~/.hermes/skills]
C --> E[Memory]
E --> F[Curator loop]
F --> D
C --> G[MCP plugins]
C --> H[LLM provider]
H --> C
C --> B
B --> A
- CLI + TUI =
hermes,hermes --tui - Gateway =
hermes gatewayfor messaging platforms - Skills = procedural memory in
~/.hermes/skills/ - Curator (v0.12+) = periodic grading/pruning of learned skills
Docs: Hermes user guide
Shared pattern¶
Both normalize inbound chat JSON → agent message → tool/skill execution → outbound reply. Both use Markdown skills as the extension point for custom workflows.
Part 3 — Prerequisites¶
| Requirement | OpenClaw | Hermes |
|---|---|---|
| OS | macOS, Linux, Windows (WSL2) | macOS, Linux, WSL |
| Runtime | Node 22.19+ or 24 | Python (installer handles deps) |
| API key or local model | Yes | Yes |
| Disk | ~500MB+ for Node + workspace | ~1GB+ depending on browser tools |
Check versions:
node -v # v22.19+ or v24 for OpenClaw
which hermes # after Hermes install
which openclaw # after OpenClaw install
OpenClaw on Node 20 fails — use use-node22.sh from our OpenClaw guide if needed.
Part 4 — Install OpenClaw¶
The onboarding wizard configures:
- Gateway bind address and auth
- LLM provider (or Ollama for local models)
- At least one channel (Telegram is the fastest smoke test)
- Workspace path and bundled skills
Verify:
Local model (optional): follow the OpenClaw + Gemma + RAG tutorial to point OpenClaw at gemma4:e2b via Ollama.
OpenClaw skills smoke test¶
Skills load from (highest priority first):
<workspace>/skills/- Project
/.agents/skills ~/.agents/skills~/.openclaw/skills- Bundled skills
See Skills docs.
Part 5 — Install Hermes¶
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
source ~/.zshrc # or ~/.bashrc
hermes setup --portal
hermes setup --portal is the fastest path to a working cloud model + tool gateway. For local-only, use hermes model and configure Ollama per Hermes docs.
Verify:
First TUI prompts to try:
- "List tools you have access to"
- "List skills in ~/.hermes/skills"
- "What is the Curator and when does it run?"
Full Hermes depth: Awesome Hermes Agent tutorial.
Hermes gateway smoke test¶
Configure channel tokens via hermes setup or config files. Run hermes doctor after any gateway change. Keep DM pairing / allowlists enabled until you trust exposure.
Part 6 — Feature comparison (hands-on)¶
Use the same three prompts on both systems and compare behavior.
| Test prompt | What to observe |
|---|---|
| "What skills do you have?" | OpenClaw lists workspace/ClawHub skills; Hermes lists ~/.hermes/skills + may mention learned skills |
| "Run a shell command: uname -a" | Tool permission / sandbox behavior |
| "Remember that my project codename is NEPTUNE" | Memory persistence on next session |
Record results in a simple table:
| Test | OpenClaw | Hermes |
|---|---|---|
| Skill list | ||
| Shell tool | ||
| Memory |
Full static matrix: feature matrix.
Part 7 — Skills: same format, different lifecycle¶
OpenClaw skill anatomy¶
~/.openclaw/workspace/skills/my-skill/
├── SKILL.md # YAML frontmatter + instructions
└── scripts/ # optional Python/shell helpers
Install from ClawHub:
openclaw skills install <skill-id>
openclaw skills verify <skill-id> # trust envelope when available
Operator maintains skills — update via openclaw skills update or ClawHub sync.
Hermes skill anatomy¶
Invoke explicitly: /skill my-skill or let the agent auto-select.
Learning loop: after repeated workflows, Hermes can draft new SKILL.md files from session traces. Curator (v0.12+) reviews and prunes them on a ~7-day cycle so quality does not drift.
Porting a skill between stacks¶
- Copy the skill directory to the other runtime's skills path.
- Adjust tool names in
SKILL.md(OpenClaw vs Hermes tool schemas differ). - Update any script paths (
~/.openclaw↔~/.hermes). - Restart gateway / start a new session.
Example: our agentic-rag skill targets OpenClaw — a Hermes port would call the same LitServe RAG API with Hermes shell tool syntax.
Part 8 — Channels & gateway¶
| Concern | OpenClaw | Hermes |
|---|---|---|
| Start daemon | Installed by onboard | hermes gateway (or systemd per your setup) |
| Multi-channel | One gateway, many channels | One gateway, 18+ platforms |
| Config | openclaw.json + wizard |
Hermes config under ~/.hermes/ |
| Chat commands | /status, /new, /restart, … |
Hermes TUI + channel-specific |
Recommendation: enable one channel (Telegram) on both for comparison, then expand. Running both gateways on the same bot token will conflict — use separate bots or run one at a time.
Part 9 — Models: cloud vs local¶
OpenClaw + Ollama (this repo's pattern)¶
ollama pull gemma4:e2b
# Configure in openclaw.json — see openclaw-gemma-rag/config/
openclaw gateway restart
Hermes + local model¶
Configure via hermes model or provider section in Hermes docs. Cloud APIs remain the path of least resistance for tool-heavy tasks on modest hardware.
| Workload | Suggestion |
|---|---|
| Phone assistant, mostly chat | Cloud model on either stack |
| Private docs, RAG, homelab | OpenClaw + Gemma RAG guide |
| Heavy browser automation | Hermes with sandbox backend (Modal/Daytona) or skip browser on small VPS |
Part 10 — Memory & self-improvement¶
| OpenClaw | Hermes | |
|---|---|---|
| Session history | Session tools (sessions_history, etc.) |
Built-in session + TUI history |
| Long-term memory | Workspace files + operator-managed | Memory layer + ecosystem plugins (honcho, hindsight, plur) |
| Automatic skill growth | No | Yes — core differentiator |
| Quality control | Manual review, openclaw skills verify |
Curator automated grading |
Choose Hermes when you want the agent to accumulate procedural memory. Choose OpenClaw when you want predictable, curator-controlled skill sets from ClawHub.
Part 11 — Migrate OpenClaw → Hermes¶
Hermes ships a native migration path:
This imports OpenClaw workspace layout, channel configuration, and compatible skills where possible.
After migration:
hermes doctor
hermes claw migrate --help # inspect flags
# Compare cron + channel config manually
hermes gateway
Community fallback for older Hermes versions: openclaw-to-hermes.
Side-by-side cutover (recommended for production personal assistants):
- Migrate with
hermes claw migrate - Run Hermes gateway on a new Telegram bot
- Keep OpenClaw on the old bot until Hermes passes your test checklist
- Switch DNS/webhooks if applicable
- Decommission OpenClaw daemon when satisfied
Part 12 — Security comparison¶
| Risk | OpenClaw mitigation | Hermes mitigation |
|---|---|---|
| Malicious skill | openclaw skills verify, review scripts |
Review SKILL.md + scripts before enabling |
| Shell/RCE | Docker sandbox (docs strongly recommend) | Remote sandboxes, minimal VPS install (--skip-browser) |
| Open gateway | Local bind, auth tokens | hermes doctor, pairing/allowlists |
| Prompt injection via chat | Model choice, tool allowlists | Same — use strongest model available |
Rule for both: skills are code. Treat ClawHub and awesome-hermes-agent entries as untrusted until reviewed.
Part 13 — Run both side by side (this repo)¶
From the repo root:
Optional full stack:
| Terminal | Command |
|---|---|
| A | Start RAG API per qwen-agentic-rag |
| B | openclaw gateway (messaging assistant) |
| C | hermes --tui (compare tool/skill behavior) |
OpenClaw consumes RAG via the agentic-rag skill. Hermes can call the same HTTP API via a custom skill or MCP wrapper.
Part 14 — Decision guide¶
flowchart TD
Start[Need a self-hosted chat agent?] --> Q1{Want skills to evolve automatically?}
Q1 -->|Yes| H[Hermes Agent]
Q1 -->|No| Q2{Node.js shop + ClawHub?}
Q2 -->|Yes| O[OpenClaw]
Q2 -->|No| Q3{Migrating from OpenClaw?}
Q3 -->|Yes| H
Q3 -->|No| Q4{Local Gemma RAG on chat?}
Q4 -->|Yes| O
Q4 -->|No| Both[Try both — install takes ~10 min]
| Profile | Pick |
|---|---|
| Indie hacker, Telegram/WhatsApp only, loves npm | OpenClaw |
| ML researcher, multi-agent, Nous ecosystem | Hermes |
| Existing OpenClaw user, curious about learning loop | Hermes via hermes claw migrate |
| Need reproducible skill catalog, not auto-writes | OpenClaw + ClawHub |
| Building on this repo's RAG guides | OpenClaw primary; Hermes optional second runtime |
You can also run OpenClaw for channels and Hermes for batch/cron evolution against the same RAG API — they are not mutually exclusive at the API layer.
Part 15 — Troubleshooting¶
| Symptom | OpenClaw fix | Hermes fix |
|---|---|---|
| CLI not found | npm i -g openclaw@latest; check node -v |
source ~/.zshrc; re-run installer |
| Doctor fails | Re-run openclaw onboard |
hermes setup --portal |
| Gateway won't start | openclaw gateway restart; check port 18789 |
hermes doctor; check channel tokens |
| Skills missing | openclaw skills list; workspace path |
ls ~/.hermes/skills; new session |
| Node too old | nvm install 22; use-node22.sh |
N/A |
| Migration incomplete | — | hermes claw migrate; compare cron/channels; try openclaw-to-hermes |
| Both fight for Telegram | Use two bot tokens | Use two bot tokens |
Summary¶
| Dimension | Winner (typical) |
|---|---|
| Channel polish + dashboard | OpenClaw |
| Self-improving skills | Hermes |
| npm / TypeScript ecosystem | OpenClaw |
| Multi-agent + research tooling | Hermes |
| Local Gemma + RAG (this repo) | OpenClaw |
| OpenClaw → Hermes migration | Hermes (hermes claw migrate) |
Next steps:
- Deep dive OpenClaw: openclaw-gemma-rag tutorial
- Deep dive Hermes: awesome-hermes-agent tutorial
- Feature reference: feature matrix
Blog / LinkedIn angle¶
Post: short GIF of the dual-gateway workflow + 2–3 sentence verdict ("OpenClaw for channel-first assistants, Hermes when you want skills that compound").