3 minutes

Installing Hermes Agent on Arch Linux



What is the Hermes Agent?

After configuring my machine to run Ollama, I wanted to experiment with Hermes Agent. For those who are unaware, I will directly quote from their website to explain what it is:

The self-improving AI agent built by Nous Research. The only agent with a built-in learning loop — it creates skills from experience, improves them during use, nudges itself to persist knowledge, and builds a deepening model of who you are across sessions.

It is an open-source AI agent with far too many features to summarize here.

Why not use OpenClaw?

What attracted me to Hermes was that OpenClaw has a history of critical vulnerabilities, particularly around remote code execution and prompt injection bypassing local permissions. I didn’t want to expose my machine to these security vulnerabilities.

Installation

There are several installation methods available. I wanted to install it locally on my Arch Linux machine.

I wanted to keep it somewhat isolated while still allowing it access to my hardware. Over time, I’ve grown to dislike running certain services via Docker/Podman.

So, I elected to install it under its own user. Much like my Ollama installation, it runs under its own user with its own home directory. This way, I am able to limit what the agent can access.

In my post about setting up Ollama, I created a separate partition and mounted it under /srv/ai.

I intend to put the Hermes Agent user’s home directory in /srv/ai/hermes and have the installation live there.

I’ve adapted these steps from the Non-Sudo / System Service User Installs instructions.

Hermes needs Chromium for its browser automation tools, plus standard build tools for the installer:

sudo pacman -Syu --needed --noconfirm base-devel git curl xz chromium

I then create the Hermes user and set /srv/ai/hermes as the home directory:

sudo useradd -m -d /srv/ai/hermes -r -s /bin/bash hermes

Run the official installer as the hermes user:

sudo -u hermes -i bash -c "$(curl -fsSL [https://hermes-agent.nousresearch.com/install.sh](https://hermes-agent.nousresearch.com/install.sh))"

Once this completes, Hermes is installed. The default Hermes installation directory is ~/.hermes.

Some things to note: if you log in as the hermes user:

$ sudo -u hermes -i

And then inspect the .bashrc, you will find that Hermes has added a new PATH entry:

$ cat ~/.bashrc
#
# ~/.bashrc
#

# If not running interactively, don't do anything
[[ $- != *i* ]] && return

alias ls='ls --color=auto'
alias grep='grep --color=auto'
PS1='[\u@\h \W]\$ '

# Hermes Agent — ensure ~/.local/bin is on PATH
export PATH="$HOME/.local/bin:$PATH"

You can see that Hermes does indeed live there:

$ which hermes
/srv/ai/hermes/.local/bin/hermes

Setting up a systemd service

Because the installer script runs as an unprivileged user, it cannot set up a systemd service definition.

To run it as a service, we can create a systemd unit file.

I had OpenCode extract the relevant systemd service file from the installer script.

You can then create the /etc/systemd/system/hermes-agent.service file:

sudo tee /etc/systemd/system/hermes-agent.service > /dev/null << EOF
[Unit]
Description=Hermes Agent Service
After=network.target

[Service]
Type=simple
User=hermes
Group=hermes
WorkingDirectory=/srv/ai/hermes
Environment=HOME=/srv/ai/hermes
Environment=PLAYWRIGHT_MCP_EXECUTABLE_PATH=/usr/bin/chromium
ExecStart=/srv/ai/hermes/.local/bin/hermes gateway start
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

Reload the systemd manager configuration:

sudo systemctl daemon-reload

We haven’t started the daemon yet.

Post-install configuration

After the script runs, you still need to configure Hermes with API keys and a model. Because the agent runs under the hermes user, you do this through sudo:

sudo -u hermes -i hermes setup

I am going to cover how I set this up with Ollama and Telegram in a future post.

hermes-agent·arch-linux·ai·nous-research·ai-agents·mcp·systemd·self-hosting·ollama
2026-07-06 00:00