TL;DR:
- Hermes vs OpenClaw: Hermes Agent (Nous Research, Python) and OpenClaw (OpenClaw Foundation, Node.js) are both MIT-licensed, self-hosted AI agents with memory, skills, cron jobs and 20+ chat integrations.
- Hermes is agent-first, with full-text search of past sessions and seven terminal backends. OpenClaw is gateway-first: one Gateway on port 18789 serves a Control UI, chat channels and native apps.
- Both write reusable skills from finished work by default in Hermes Agent v0.21.5 and OpenClaw 2026.9.8.
- Both document 1 GB RAM and 1 CPU core as the minimum with an API model. Hermes recommends 2 to 4 GB and 2 cores.
hermes claw migrateimports an OpenClaw setup;openclaw migrate hermesgoes the other way.
Applies to: Ubuntu 24.04 LTS · Hermes Agent v0.21.5 · OpenClaw 2026.9.8 · checked October 2026
Hermes Agent is an open-source AI agent from Nous Research, written in Python, that keeps memory across sessions, writes its own skills and runs scheduled tasks. OpenClaw, formerly Clawdbot and Moltbot, is an open-source assistant stewarded by the OpenClaw Foundation, written in TypeScript for Node.js, that runs a Gateway connecting chat apps, tools and model providers. This comparison covers architecture, memory, setup, security and server resources, plus moving from OpenClaw to Hermes.
Choose Hermes Agent for a Python agent you drive from a terminal or chat, with search across past sessions and commands that can run in Docker or on another machine. Choose OpenClaw for one gateway that people reach from many chat apps, a browser Control UI and phone apps, with roles for a small team.
Hermes Agent vs OpenClaw at a glance
| Hermes Agent | OpenClaw | |
|---|---|---|
| Maintainer | Nous Research | OpenClaw Foundation, a 501(c)(3) nonprofit |
| Runtime | Python 3.14, installed by the script | Node.js 24.16+ or 26.1+ |
| Design | Agent loop, plus a gateway process for chat and cron | Gateway that every client and channel connects to |
| Memory | MEMORY.md and USER.md with size limits, plus search of past sessions | MEMORY.md, USER.md and daily notes, indexed for search |
| Skill sources | Agent-written skills, Skills Hub | Agent-written skills through Skill Workshop, ClawHub |
| Command execution | Local shell by default; Docker, SSH, Modal, Daytona and others | Gateway host by default; optional Docker sandbox, nodes, cloud workers |
| Model providers | OpenAI, Anthropic, Gemini, OpenRouter, Ollama, llama.cpp, Nous Portal | OpenAI, Anthropic, Gemini, OpenRouter, Ollama, llama.cpp; Codex and Claude Code CLI runtimes |
| Default ports | 8642 API server (off until enabled), 9119 dashboard | 18789 Gateway and Control UI, bound to loopback |
| Documented minimum, API model | 1 GB RAM, 1 CPU core | 1 GB RAM, 1 CPU core |
| Telemetry | None | Daily version check; usage statistics opt-in |
OpenClaw vs Hermes Agent: agent first or gateway first
Hermes Agent starts from the agent loop. Running hermes opens a terminal UI, and a separate gateway process connects chat platforms and runs cron jobs. Commands go to a terminal backend: the local shell by default, or Docker, SSH, Singularity, Modal, Daytona or Vercel Sandbox.
OpenClaw starts from the Gateway, a long-running control plane that owns sessions, tools and channel connections. The CLI, the browser Control UI and the native apps for macOS, iOS, Android, Windows and Linux all connect to it, and paired devices act as nodes that add camera, screen and voice actions. Tools run on the Gateway host unless you configure a sandbox, a node or a cloud worker.
Memory and skills: how each agent learns
Hermes keeps two bounded files in ~/.hermes/memories/: MEMORY.md for the agent's notes (2,200 characters) and USER.md for your profile (1,375 characters), both loaded at session start. Every session is also stored in SQLite with full-text search, which the session_search tool queries for older details.
OpenClaw writes memory as Markdown in ~/.openclaw/workspace: MEMORY.md for durable facts, USER.md for preferences and dated daily notes in memory/. Daily notes are indexed for memory_search, and a background dreaming sweep distills them into MEMORY.md.
Skills are folders with a SKILL.md file in both. Hermes saves a skill when it works out a multi-step workflow or gets corrected. OpenClaw's self-learning mode defaults to auto: after a turn with at least 10 model iterations, a background review can turn the procedure into a skill. Both offer an approval gate for skill changes, and the Hermes Skills Hub also searches ClawHub, OpenClaw's registry.
Which is easier to self-host: Hermes Agent or OpenClaw?
Both install with one script and a setup wizard under a non-root user. Create an unprivileged user for each agent, for example sudo adduser hermes, and run sudo loginctl enable-linger hermes from your sudo account, so user services start at boot and keep running after you log out. Open a shell as that user with sudo -iu hermes, then run export XDG_RUNTIME_DIR=/run/user/$(id -u) so hermes gateway install and other systemctl --user commands reach the user session.
- Hermes Agent:
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bashinstalls Python 3.14, Node.js and Chromium for the browser tools (--skip-browserleaves Chromium out).hermes setupconfigures the model, tools and chat platforms, andhermes gateway installadds a systemd user service. Run the installer without sudo. - OpenClaw:
curl -fsSL https://openclaw.ai/install.sh | bashinstalls Node.js 24 LTS when Node is missing, then onboarding checks model access and installs the Gateway as a systemd user service. If the service is missing, runopenclaw onboard --install-daemon. Telegram needs only a bot token and no plugin.
For a full OpenClaw server walkthrough, see How to Install and Secure OpenClaw on a VPS.
Model providers and local models
Both connect to OpenAI, Anthropic, Google Gemini, OpenRouter and local servers such as Ollama and llama.cpp. Hermes also connects to Nous Portal, the Nous Research service for models and hosted tools.
Hermes refuses any model with less than 64,000 tokens of context. For Ollama, run sudo systemctl edit ollama.service, add Environment="OLLAMA_CONTEXT_LENGTH=64000" under [Service], restart the service and check the CONTEXT column in ollama ps. A 64K context adds KV cache memory on top of the model weights, and local models under about 30B parameters often skip memory tool calls, so an API model is the more reliable choice for Hermes. OpenClaw connects to Ollama through the native API at http://127.0.0.1:11434, because the /v1 route breaks tool calling. RAM decides which models load; see the best Ollama models for CPU servers by RAM size.
Use local inference on demand: a request keeps the CPU busy for seconds, then the server idles. Sustained full-CPU load is not permitted on Arct Cloud plans, so continuous or batch generation, including scheduled agent jobs that call the model all day, belongs on an API model. The CPU benchmark of self-hosted LLMs lists measured speeds.
Security defaults on a VPS
Both agents run shell commands as their Linux user, so give each one its own unprivileged user.
- Hermes Agent screens commands in
smartapproval mode by default: an auxiliary model approves low-risk commands, denies dangerous ones and asks you about the rest. A built-in blocklist stops a fixed set of destructive commands in every mode. Commands run on the host until you select the Docker backend or another isolated one. - OpenClaw binds the Gateway to loopback, answers unknown DM senders with a pairing code and allowlists group access. Sandboxing is off by default, so tools run on the host.
openclaw security auditreports drift from these defaults.
Hermes's API server listens on 127.0.0.1:8642 only after you set API_SERVER_ENABLED=true and an API_SERVER_KEY in ~/.hermes/.env. Open OpenClaw's Control UI through an SSH tunnel from your computer, signed in with an SSH key:
ssh -N -L 18789:127.0.0.1:18789 [email protected]
Replace deploy and 203.0.113.10 with your sudo user and server IP, then open http://127.0.0.1:18789/ and sign in with the gateway token or password. The tunnel does not bypass gateway auth. Telegram long polling and Discord connect outbound, so UFW only needs OpenSSH allowed. If you run either agent in Docker, publish ports on loopback only (for example 127.0.0.1:8642:8642), because Docker-published ports bypass UFW rules.
Resource use on the same server
| Hermes Agent | OpenClaw | |
|---|---|---|
| Documented minimum, API model | 1 GB RAM, 1 CPU core, 500 MB data | 1 GB RAM, 1 core, 500 MB disk |
| Documented recommendation | 2 to 4 GB RAM, 2 cores | 2 GB+ RAM; swap on 1 GB servers |
Both rows come from the Hermes Docker guide and the OpenClaw Raspberry Pi and DigitalOcean guides.
Hermes browser tools need at least 2 GB RAM. Building OpenClaw's Docker image from source needs 6 GB; pre-built images do not.
When to choose Hermes Agent
- You work mostly from a terminal or a chat app and want the agent to search past sessions on top of its memory files.
- You want commands to run away from the agent host: in Docker, on another server over SSH, or in Modal or Daytona sandboxes.
- You write Python and want to extend the agent with plugins.
- You want Nous Portal to cover models, web search and text-to-speech under one login.
When to choose OpenClaw
- You want a browser Control UI and desktop and phone apps connected to one Gateway, with device actions through paired nodes.
- Several people in one trust boundary share the agent and need pairing, roles and per-person access.
- You want the Codex app server or the Claude Code CLI to run the agent loop.
- You prefer a project stewarded by a nonprofit foundation.
OpenClaw to Hermes: move an existing setup
hermes claw migrate reads ~/.openclaw (or the older ~/.clawdbot and ~/.moltbot folders) and imports the SOUL.md persona, memory files, skills, model settings, MCP servers and chat platform settings. A first-time hermes setup offers the same import.
Install Hermes under the Linux user that runs OpenClaw, so hermes claw migrate finds ~/.openclaw. For an OpenClaw folder in another location, add --source with its path. Stop and disable the OpenClaw gateway so it does not start again at boot and poll the same bot tokens, then preview and apply the import:
systemctl --user disable --now openclaw-gateway.service
hermes claw migrate --dry-run
hermes claw migrate --migrate-secrets
--migrate-secrets adds provider API keys and the Telegram bot token; without it, add those to Hermes yourself. Discord, Slack, Matrix and Mattermost tokens are copied either way. Before applying, Hermes writes a restore point to ~/.hermes/backups/pre-migration-*.zip. Cron jobs, plugins, hooks and channel bindings are copied to ~/.hermes/migration/openclaw/<timestamp>/archive/ for manual review. Pair WhatsApp again with hermes whatsapp. Run hermes gateway restart and open a new chat, since imported memory and skills apply from the next session.
The OpenClaw vs Hermes choice can be reversed: openclaw migrate hermes --dry-run previews an import into a fresh OpenClaw setup.
Hermes Agent vs Claude Code and OpenCode
Claude Code and OpenCode are coding agents you start in a repository to read, edit and run code. Hermes Agent and OpenClaw are long-running agents: a gateway stays up, takes chat messages, keeps memory and runs scheduled jobs. hermes import-agent claude-code copies CLAUDE.md instructions, MCP servers and skills into Hermes. To run a coding agent on a server, see How to Install OpenCode on Ubuntu 24.04.
FAQ
Hermes vs OpenClaw: which is better?
Hermes Agent is better for one person who works from a terminal or chat and wants session search and commands in Docker or over SSH. OpenClaw is better for a small team sharing one Gateway through a browser Control UI, chat apps and phone apps.
Why do people choose Hermes over OpenClaw?
Hermes Agent suits people who want a Python stack, search across past sessions and terminal backends such as Docker and SSH. Both agents write skills from finished work by default.
What's the best model to use with Hermes?
Use a model with reliable tool calling and at least 64,000 tokens of context, which Hermes requires at startup. Hosted Claude, GPT, Gemini and Qwen models meet this. Local models under about 30B parameters often skip memory tool calls.
Can Hermes Agent be used as a personal assistant?
Yes. Run the Hermes gateway and message the agent from Telegram, Discord, Slack, WhatsApp, Signal or email. The same gateway runs scheduled jobs such as a morning briefing.
Can I run Hermes Agent and OpenClaw on the same server?
Yes. They keep data in separate folders and use different default ports: 8642 and 9119 for Hermes, 18789 for OpenClaw. Run each under its own Linux user with its own bot token, because two gateways polling one Telegram bot conflict.
How much RAM do Hermes Agent and OpenClaw need?
Both document 1 GB RAM and one CPU core as the minimum with an API model. Hermes recommends 2 to 4 GB with 2 cores. A local model adds its own size plus context cache on top.
Next steps
- How to Install and Secure OpenClaw on a VPS
- How to Install Ollama on Ubuntu 24.04 with Open WebUI
- Hermes Agent documentation
- OpenClaw documentation
See Hermes Agent VPS plans for plan sizes and install notes, or compare all plans.