Tutorial · May 23, 2026
How to deploy a Hermes Agent in Docker (and the one-click alternative)
Hermes Agentis Nous Research's open-source, self-improving AI agent — it learns new skills from each session and runs as a messaging gateway across Telegram, Discord, and Slack. There are two reasonable ways to get it running: hand-rolled Docker on a VPS, or a managed deploy on VibeOpenClaw. This guide walks both.
Path 1 — DIY: build the image and run with Docker
Hermes Agent doesn't have a published Docker image, so you build from source. You'll need a Linux host with Docker installed and at least 4 GB of RAM (the image bundles the Python ML stack and a Playwright Chromium for tool use; total ~6–8 GB on disk).
# 1. Build the image (this takes ~10 minutes on a 4-core box)
docker build -t hermes-agent:latest https://github.com/NousResearch/hermes-agent.git#main
# 2. Create a host directory for agent state and config
mkdir -p /opt/hermes/data
chown 1001:1001 /opt/hermes/dataHermes uses a YAML config file for model and provider selection. Drop a config.yaml into the agent directory:
# /opt/hermes/data/config.yaml
model:
default: claude-sonnet-4-6
provider: anthropic
api_key: ${ANTHROPIC_API_KEY}
channels:
telegram:
enabled: true
token: ${TELEGRAM_BOT_TOKEN}# 3. Run the container
docker run -d \
--name hermes \
--restart unless-stopped \
-e ANTHROPIC_API_KEY=sk-ant-... \
-e TELEGRAM_BOT_TOKEN=123456:ABC-... \
-v /opt/hermes/data:/home/hermes/.hermes \
hermes-agent:latest gateway rungateway run starts the messaging gateway only — Hermes intentionally exposes no public HTTP endpoint (the dashboard would surface key management, which is unsafe for a multi-tenant host). All traffic flows through the configured messaging channels.
A few things that will trip you up:
- UID mismatch. Hermes runs as UID 1001 inside the container; your host bind-mount needs to be writable by that UID.
chown 1001:1001 /opt/hermes/datafixes it. - The
hermes -zone-shot CLI is broken upstream for thecustomandopenrouterprovider paths — it saves your message but never produces an assistant response (KeyError: 'final_response'). Real messaging traffic viagateway runworks fine; don't waste time debugging the CLI. - Camoufox cache. The image ships with ~2 GB of Playwright/Camoufox browser data. You can strip it with
rm -rf /tmp/camoufox-* /root/.cache/camoufoxin a downstream Dockerfile if disk is tight.
You're also on the hook for HTTPS (Caddy or Nginx in front, if you need any inbound HTTP), restarts (systemd unit or Docker's --restart), log rotation, and provider-key encryption at rest — the YAML above stores them in plaintext.
Path 2 — Managed: one click on VibeOpenClaw
VibeOpenClaw runs Hermes in a managed Docker container with the gnarly bits already solved — UID setup, config seeding, key encryption (AES-256-GCM at rest), bind-mount permissions, log access, automatic restarts. You sign up, pick Hermes as the agent type, paste your provider API key and channel bot tokens, and the container starts in ~30 seconds.
Concretely, the flow is:
- Sign up at app.vibeopenclaw.com on the Premium plan (Hermes requires Premium — Pro is OpenClaw-only).
- Add your provider key on the API Keys page (OpenAI, Anthropic, Google, Groq, xAI, Mistral, DeepSeek, Together, Fireworks, Perplexity, OpenRouter, Cohere, and NVIDIA are all first-class).
- Click New Agent → choose Hermes → pick the model → paste your Telegram/Discord/Slack bot token → Create.
That's it. You don't touch a YAML file, build an image, or chown anything. Resource quotas (4 GB RAM per Hermes agent, up to 3 agents on Premium) are pre-tuned to Hermes's documented requirements.
Which one should you pick?
DIY if you're comfortable operating Docker, want full filesystem access for experimentation, and are running on a box you already have. Managed if you want Hermes running in 30 seconds with sane defaults, encrypted keys, and a single bill instead of (VPS + DNS + SSL + monitoring + your time). The break-even for most people is one or two evenings of debugging.
If you're still deciding between Hermes and OpenClaw entirely, see the OpenClaw vs Hermes comparison.
Sources
- NousResearch/hermes-agent — official repository (178k+ stars as of June 2026), build and config reference.
- Model Context Protocol — the tool-integration standard Hermes uses.
- Docker BuildKit docs — required for the image's
--chmodbuild steps.