Prerequisites
- A Raspberry Pi 5 on Raspberry Pi OS (64-bit). Hermes Agent supports Linux on x86_64 and aarch64; the 32-bit OS is not on its platform list.
- The official USB-C power supply: the Pi 5 asks for 5V/5A over USB-C with Power Delivery.
- An API key for a model provider (Anthropic, OpenAI, OpenRouter...) or a Nous Portal account: the model runs at the provider, the Pi runs the agent.
- SSH access to the Pi, and Git, curl and tar on it (the install script needs them).
- Optional: a Telegram, Discord or Slack bot token, to talk to the agent from your phone.
Steps
- Flash Raspberry Pi OS (64-bit)
Use Raspberry Pi Imager and pick Raspberry Pi OS (64-bit); the Lite image is enough for a headless host. In the customisation screen set the hostname, your Wi-Fi and SSH with a public key. Boot the Pi, log in over SSH, update it, and check that the kernel reports aarch64.
ssh pi@<pi-hostname>.local sudo apt update && sudo apt full-upgrade -y uname -m # must print aarch64 - Install what the installer expects
On Linux the install script needs Git, curl, tar and a SHA-256 tool; it downloads its own pinned uv and Python itself.
sudo apt install -y git curl tar coreutils - Run the official installer
The script clones Hermes Agent into ~/.hermes/hermes-agent/, puts the hermes launcher in ~/.local/bin/ and keeps your data in ~/.hermes/. By default it also installs a browser tool with its own Chromium and a computer-use driver; on a headless Pi you can skip both and add the browser later with hermes pm install agent-browser. Prefer containers? Nous Research also publishes nousresearch/hermes-agent on Docker Hub for amd64 and arm64; the platform page notes that Docker installs cannot use hermes update.
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash -s -- --skip-browser --skip-computer-use source ~/.bashrc hermes doctor # lists anything missing and how to fix it - Pick a provider and a model
hermes model chooses the provider and the model; hermes setup runs the whole guided setup in one pass instead. Hermes' security docs say to keep API keys in ~/.hermes/.env with tight file permissions.
hermes model # or the full wizard: hermes setup chmod 600 ~/.hermes/.env - First conversation
hermes opens the terminal UI. Ask something small and check that the reply comes back: that proves the provider key and the model.
hermes - Connect a chat app
hermes gateway setup walks through the platforms (Telegram, Discord, Slack, Signal, email and more). The gateway refuses everyone until you allow someone: list your user ID (for Telegram, TELEGRAM_ALLOWED_USERS) or approve the one-time pairing code an unknown user receives.
hermes gateway setup # a pairing code sent by your bot, approved from the Pi: hermes pairing approve telegram <code> - Keep the gateway running after you log out and after a reboot
hermes gateway install creates a systemd user service. Lingering keeps that user's services running without an open session, so the gateway comes back when the Pi boots. The docs also offer a system-wide service (hermes gateway install --system) for headless hosts.
hermes gateway install hermes gateway start hermes gateway status sudo loginctl enable-linger $USER journalctl --user -u hermes-gateway -f # live logs - Optional: reach the Pi from outside your network
This setup has no web dashboard to expose: you talk to the agent in the terminal or through the chat apps. To administer the Pi from elsewhere, Tailscale gives it a private address without opening a port.
curl -fsSL https://tailscale.com/install.sh | sh sudo tailscale up tailscale ip -4 # then: ssh [email protected]
Troubleshooting
- hermes: command not found right after the install
- The launcher sits in ~/.local/bin/, which the current shell does not know yet. Run source ~/.bashrc, or open a new SSH session.
- uname -m prints armv7l
- That is the 32-bit Raspberry Pi OS. Hermes Agent's platform list covers aarch64 on Linux, not 32-bit ARM: flash the 64-bit image.
- The bot ignores your messages
- The gateway denies every user until one is allowed. Add your user ID to the platform's allowlist, or approve your pairing code with hermes pairing approve <platform> <code>. Codes expire after an hour.
- The gateway stops when you close the SSH session
- The user service only outlives your session with lingering on: sudo loginctl enable-linger $USER.
Where to go from here
Shell commands the agent wants to run go through approvals.mode, smart by default: a helper model approves low-risk commands, denies dangerous ones and asks you about the rest. Set it to manual to confirm every command, or move the terminal to the Docker backend so the container becomes the boundary. hermes update keeps the install current, and PocketClaw lists Hermes Agent's CVEs on its agent page.
Sources
The steps and figures on this page come from these pages, read on 2026-10-16. When a command here and the project's docs disagree, the docs win.
- Hermes Agent, README and releases (v0.22.2, 15 October 2026)
- Hermes Agent docs: installation
- Hermes Agent docs: platform support
- Hermes Agent docs: messaging gateway
- Hermes Agent docs: security
- Docker Hub: nousresearch/hermes-agent (amd64 and arm64 images)
- Raspberry Pi 5 product page (power supply, 64-bit CPU)