← All articles
By Lucie · Published on août 02, 2026 · 10 min read

Installing Hermes Agent: The Complete Guide and the 6 Pitfalls That Cost You Half a Day

Independent service — not affiliated with Nous Research (publisher of the Hermes Agent software) or Hermès International.

Installing Hermes Agent actually takes 3 to 4 hours, not 5 minutes. Tested on August 1, 2026 on WSL2: a postinstall script stuck for 30 minutes, a build that fails under Node 20, a gateway failing silently. Here are the exact 6 pitfalls we hit, and how to avoid them one by one.

Want this result without going through these 6 pitfalls? We install and manage your agent for you.

How long does the installation really take?

Tutorials claim five minutes. curl | bash, two or three questions, and you're done — at least, that's what the official documentation promises. We timed a real installation on August 1, 2026, on a Windows machine with WSL2 (Ubuntu 22.04), running Hermes Agent version 0.19.1 (build 2026.7.30). Result: 3 hours and 40 minutes, more than half of it lost to blockers that no documentation mentions.

It's not that Hermes Agent is badly designed. Once up and running, the software works very well — 67 skills and roughly seventy tools available natively is nothing to scoff at. The problem is the path between git clone and an agent that actually responds on Telegram. This guide documents that path as it really is, with the exact error messages copied straight from the terminal — not a cleaned-up version written after the fact.

If you're on Windows, know upfront that WSL2 isn't just one option among others — it's the only reliable path. We explain why in our dedicated guide to installing on Windows. And if you're just discovering Hermes Agent, our complete guide — what it is, how much it costs, what it can't do answers the questions we get asked most often before installation even comes up.

STEP 1 Installation install.sh, dependencies Pitfall 1 STEP 2 Configuration hermes setup, config.yaml Pitfall 2 STEP 3 Docker Sandbox python-nodejs container Pitfall 6 STEP 4 Gateway connecting to channels Pitfall 5 STEP 5 Channel & dashboard Telegram, email Pitfall 3 Pitfall 4
The 5 steps of installing Hermes Agent, and the 6 real pitfalls encountered at each step (see the summary table further down).

Pitfall #1: Why does the postinstall script stay stuck for 30 minutes?

First stop, barely two minutes after launching install.sh. The script runs through a series of post-installation tasks, and one of them is called unicode-animations. On paper, it's harmless: an animated ASCII banner that displays on startup, nothing more. In practice, when run in non-interactive mode (the default in a WSL2 terminal without a full TTY), this step never finishes. The cursor blinks, no error comes up, and nothing happens.

We let it run for 30 minutes before killing it. No timeout, no message, nothing. A Ctrl+C is enough to unblock the rest of the installation — the animation isn't a blocking dependency, just a poorly isolated script that fails to detect the absence of an interactive terminal.

What to do: if the installation seems frozen on a step that mentions animations, a banner, or a logo, don't wait. Interrupt with Ctrl+C and rerun the script — in our tests, interrupting this specific step never broke the rest of the installation.

Should you use the interactive wizard or command-line configuration?

Once the dependency installation is finished, install.sh automatically moves on to hermes setup, an interactive assistant: agent name, model provider, API key, preferred channel. Convenient if you're sitting at your screen and available to answer seven or eight questions in a row. Much less convenient if you're scripting the installation, running it in a pipeline, or simply want to configure things step by step without being stuck in front of the wizard.

The alternative exists but isn't documented anywhere visibly: hermes config set. This command lets you set each parameter individually, without going through the wizard:

hermes config set model.provider openrouter
hermes config set model.name anthropic/claude-sonnet-4.5
hermes config set channels.telegram.enabled true

One detail that matters when choosing a model provider: on a free model (we tested poolside/laguna-s-2.1:free), the agent simply made up an installation it hadn't actually performed, and reported it as successful. No alert, no error message — just a false claim stated with confidence. This isn't an isolated bug: it's the kind of behavior you regularly see with free or very lightweight models, which are less reliable at following long instructions. For an agent meant to handle real tasks (emails, appointments, payments), that's not a minor detail.

Of the 32 available channels (Telegram, Microsoft Teams, Google Chat, IMAP/SMTP email…), Telegram remains by far the fastest to activate: QR code pairing, under two minutes, with no particular network configuration.

If you're coming from another agent — OpenClaw in particular — know that the hermes setup wizard offers automatic data migration from ~/.openclaw: we detail what actually transfers, and what doesn't, in our Hermes Agent vs. OpenClaw comparison.

The full configuration lives in two files: ~/.hermes/config.yaml for settings, and ~/.hermes/.env for secrets (API keys, tokens). One point that cost us twenty minutes: the container_persistent key, which controls the persistence of the Docker sandbox, has to be nested under the terminal: section — not placed at the root of the file:

terminal:
  container_persistent: true

Placed at the wrong level, it's silently ignored. No syntax error, no warning: the container simply starts fresh from zero on every session.

Common pitfall

A misindented configuration key in a YAML file almost never produces a visible error. It's just ignored. If a setting doesn't seem to "take effect," check the indentation before looking any further.

Why does the dashboard build fail with npm run build?

The Hermes Agent web dashboard doesn't ship pre-built: you have to build it yourself with npm run build. Under Node.js 20 (the LTS version installed by default on most recent WSL2 images), the build fails with a stack of errors related to dependencies expecting a newer API — nothing exotic, just a version mismatch.

We reproduced the error, changed only the Node version, and reran it: immediate success under Node 22. No other change.

Node.js Version npm run build Result Build Time
Node 18 Failure — dependency errors
Node 20 (default LTS) Failure — dependency errors
Node 22 Success 52 seconds

With nvm already installed, switching versions takes ten seconds:

nvm install 22
nvm use 22
npm run build

Without nvm, expect more like fifteen minutes to cleanly install a recent Node version on Ubuntu, including the time to set up the NodeSource repository.

Node 18 npm run build → failure Node 20 (default LTS) npm run build → failure Node 22 success in 52 seconds
The dashboard build fails consistently under Node 18 and 20, and succeeds under Node 22 — tested on August 1, 2026.

Why is hermes dashboard --host 0.0.0.0 refused?

Once the dashboard is built, the logical next step is to expose it on all network interfaces so you can access it from another machine: hermes dashboard --host 0.0.0.0. Result: the command is refused, and the service never starts.

The reason is actually good security news: Hermes Agent refuses to expose the dashboard on a public interface until authentication is configured. The dashboard gives access to the agent's configuration, its logs, and sometimes its secrets — exposing it without a password on 0.0.0.0 would be an open door to anyone who can reach the port.

The fix happens in ~/.hermes/config.yaml, under the dashboard: section:

dashboard:
  basic_auth:
    username: your_username
    password: a_strong_password

Once this section is filled in, --host 0.0.0.0 is accepted normally. In practice, it's better to keep the dashboard on 127.0.0.1 anyway and go through an SSH tunnel if you need remote access — exposing it publicly, even password-protected, remains an extra attack surface.

Why does the dashboard show "GATEWAY START STARTED" when nothing actually starts?

This is the most confusing of the six pitfalls, and by far the one that costs the most time. The gateway is the component that connects the agent to external channels — Telegram, email. Running hermes gateway start without having installed the service beforehand returns this message, word for word:

Gateway service is not installed
Run: hermes gateway install

So far, nothing abnormal — the error is clear and says exactly what to do. The problem shows up if you go through the web dashboard instead of the terminal: the interface displays "GATEWAY START STARTED," as if everything were proceeding normally, and then nothing happens. No failure message, no switch to a visible error state. The status stays stuck on a label that suggests startup is in progress, indefinitely.

We lost 40 minutes on this single pitfall, checking ports, Docker logs, and network configuration — before rerunning the same command directly in the terminal and finally seeing the real error message the dashboard had been silently swallowing.

The correct sequence, in order, allows no exceptions:

hermes gateway install
hermes gateway start
$ hermes gateway start ✗ Gateway service is not installed Run: hermes gateway install WEB DASHBOARD — SAME MOMENT Status shown: GATEWAY START STARTED (stays frozen, indefinitely) Actual status: stopped
Pitfall 5 — the terminal gives the exact error and the fix; the web dashboard, meanwhile, displays "GATEWAY START STARTED" without ever signaling the failure.

We lost 40 minutes on this single pitfall.

This kind of silent error is exactly what we spare our clients: your agent is installed, configured, and monitored by our team, on a private server, from day one until cancellation.

Get my agent without installing it myself →

Why is a service launched inside the sandbox invisible from the host?

Hermes Agent runs its sandbox (where the agent can execute commands, scripts, and test servers) in a Docker container based on the nikolaik/python-nodejs:python3.11-nodejs20 image. As long as you stay within the "agent runs code, you get the result back as text" paradigm, everything is fine. Complications start as soon as you ask the agent to start a network service — a dev server, a test API.

The container gets an IP address internal to the Docker network, typically in the 172.18.x.x range. A service launched inside it does listen on that IP, but the ports aren't published to the host by default. Result: from your machine, curl 172.18.0.5:3000 or even curl localhost:3000 return nothing — the service is running, but it's unreachable from outside the container.

This isn't a bug: it's Docker's standard behavior without explicit port mapping. But it isn't documented anywhere in the context of Hermes Agent, and the symptom looks like a service that fails to start when it's actually running fine — just invisible.

Your machine (the host) curl localhost:3000 → nothing responds port not published Docker Container python-nodejs IP 172.18.x.x service: port 3000
Pitfall 6 — without explicit port mapping, a service launched in the Docker sandbox does listen, but remains unreachable from the host machine.
PitfallObserved SymptomSolutionTime Lost
1. Postinstall animationsTerminal frozen, no errorCtrl+C then continue30 min
2. Automatic wizardStuck facing 7-8 questionshermes config set15 min
3. Dashboard buildnpm errors under Node 20Switch to Node 2220 min
4. Dashboard refused on 0.0.0.0Command rejectedConfigure basic_auth10 min
5. Silent gateway« GATEWAY START STARTED » frozeninstall then start40 min
6. Ports not publishedService invisible from hostPublish Docker ports25 min

How much time should you plan for, concretely?

Rounding generously: one hour for installing dependencies and cloning, one hour forty minutes for the six pitfalls above if you hit them without knowing them in advance, and the rest for fine-tuning the configuration (channels, priorities, initial tests). If you follow this guide already knowing the six pitfalls, expect more like 45 minutes to an hour end to end.

If your goal is a dedicated server rather than a local installation, the question of choosing a VPS and its real cost (hosting + model inference) deserves a separate calculation — we cover it in detail in our comparison of VPS offers for Hermes Agent.

Key takeaways

  • The real installation takes 3 to 4 hours, not 5 minutes — plan generously the first time.
  • The unicode-animations block clears with a simple Ctrl+C.
  • hermes config set avoids the interactive wizard for a scripted installation.
  • The dashboard build requires Node 22: Node 20 fails every time.
  • The gateway sequence is strict: install then start, never the reverse — the web dashboard hides the error if you don't follow this order.

Want to keep your own OpenRouter key, without managing the server yourself? Hermes hosted, from €12/month.

Prefer to let us handle it?

Three no-commitment plans, capped billing — never any overage, whatever your agent does.

Essential€49 incl. VAT / month
Comfort€89 incl. VAT / month
Custom€199 incl. VAT / month
Create my account →

Frequently Asked Questions

How long does it really take to install Hermes Agent?

Expect 3 to 4 hours for a first installation on WSL2 if you discover the pitfalls as you go, versus 45 minutes to 1 hour if you follow this guide already knowing them. The official documentation claims 5 minutes, which corresponds to the time of the main script alone, without the six blockers detailed in this article.

The installation script is stuck — what should I do?

If the block occurs on a step related to a banner or animation (unicode-animations), interrupt with Ctrl+C and rerun the script: it isn't a blocking dependency. If the block occurs elsewhere, check the logs first before interrupting anything.

Why does my dashboard build fail?

In nearly all cases, it's a Node.js version that's too old. Node 20 fails consistently in our tests, Node 22 works every time. Check your version with node -v before looking any further.

Should you install Hermes Agent directly on Windows, or via WSL2?

Via WSL2, without hesitation. Native Windows support is explicitly described as experimental by the project team; WSL2 with an Ubuntu distribution is the setup that's actually tested and stable.

Can you install Hermes Agent without using the terminal?

No, not for the initial installation: there's no graphical installer. Once the agent is up and running, however, all day-to-day configuration (priorities, channel, reminders) is done in natural language directly with the agent.

What happens if I don't configure dashboard authentication?

Hermes Agent simply refuses to expose the dashboard on any interface other than 127.0.0.1 until a username and password are set under dashboard.basic_auth in config.yaml. This is a deliberate safeguard, not a bug.