{"slug": "hermes-on-raspberry-pi", "title": "Hermes on Raspberry Pi", "summary": "A developer documented a complete guide for running the Hermes AI agent on a Raspberry Pi 5 with 16 GB RAM, enabling a self-improving agent that operates 24/7 on a home network. The setup uses a remote LLM provider for inference while the Pi handles orchestration, tools, memory, and messaging gateways, with SSH and optional Telegram/Discord/WhatsApp access.", "body_md": "A complete guide: from a blank SD card to a self-improving agent running 24/7 on your home network, reachable via SSH and (optionally) Telegram/Discord/WhatsApp.\n\n**Why this works well:** Hermes Agent officially supports Linux aarch64 as a Tier 1 platform via the `install.sh`\n\ninstaller. The LLM inference runs on a remote provider (Nous Portal, OpenRouter, Anthropic, etc.), so the Pi only handles orchestration, tools, memory, and the messaging gateway — 16 GB of RAM is generous headroom for this.\n\n- Raspberry Pi 5 (16 GB) + official 27 W USB-C power supply (the Pi 5 is picky about power)\n- microSD card (32 GB+, A2-rated recommended) — or better, an NVMe SSD with an M.2 HAT if you want durability for a 24/7 machine\n- Active Cooler or a case with a fan (the Pi 5 throttles without one under sustained load)\n- Your Mac, with\n**Raspberry Pi Imager** installed:[https://www.raspberrypi.com/software/](https://www.raspberrypi.com/software/) - Your home Wi-Fi SSID + password, or an Ethernet cable to the router (Ethernet preferred for an always-on box: more stable, no Wi-Fi power-save issues)\n\nYou'll never need a keyboard or monitor on the Pi. Everything is pre-configured from the Imager.\n\n-\nOpen\n\n**Raspberry Pi Imager** on your Mac. -\n**Device:** Raspberry Pi 5. -\n**OS:**`Raspberry Pi OS Lite (64-bit)`\n\n— under \"Raspberry Pi OS (other)\". Lite = no desktop, perfect for a headless agent.**64-bit is mandatory**(Hermes supports aarch64, not armhf). -\n**Storage:** your SD card / SSD. -\nClick\n\n**Next → Edit Settings**(the OS customization dialog). This is the key step:** General tab:**- Hostname:\n`hermespi`\n\n(you'll reach it as`hermespi.local`\n\n) - Username: e.g.\n`sebi`\n\n+ a strong password **Configure wireless LAN:** your SSID + password, Wireless LAN country:`FR`\n\n(or`NO`\n\nif the Pi lives in Norway — this matters, it sets legal Wi-Fi channels)- Locale: timezone + keyboard layout (\n`fr`\n\nif you'll ever plug in your AZERTY keyboard)\n\n**Services tab:**- ✅\n**Enable SSH** - Choose\n**\"Allow public-key authentication only\"** and paste your Mac's public key (recommended), or password authentication to start simple.\n\nTo get/create your Mac's public key:\n\n```\ncat ~/.ssh/id_ed25519.pub || ssh-keygen -t ed25519 -C \"sebi@mac\"\n```\n\n(The\n\n`-C \"sebi@mac\"`\n\nis only a comment — a human-readable label attached to the key so you can identify it later. It plays no role in authentication; put whatever you like there, or omit`-C`\n\nentirely. If your existing key ends with an email address, that's just its comment. Either way, paste the**whole line exactly as printed**—`ssh-ed25519 AAAA... label`\n\n— into Imager, comment included. Don't edit it; trimming by hand risks breaking the key. Copy it cleanly with`pbcopy < ~/.ssh/id_ed25519.pub`\n\n.) - Hostname:\n-\nWrite the image, then insert the card into the Pi.\n\nEthernet instead of Wi-Fi?Just skip the wireless LAN section and plug the cable in. You can configure both — Ethernet takes priority when connected, Wi-Fi acts as fallback.\n\nPlug in power (and Ethernet if using it). First boot takes ~1–2 minutes (it resizes the filesystem and starts SSH).\n\n**Option A — mDNS (easiest):** from your Mac:\n\n```\nping hermespi.local\n```\n\nmacOS has Bonjour built in, so this almost always works on a home LAN.\n\n**Option B — your router's admin page:** look at the DHCP client list for a device named `hermespi`\n\nand note its IP (e.g. `192.168.1.42`\n\n).\n\n**Option C — network scan from your Mac:**\n\n```\narp -a | grep -i \"b8:27\\|dc:a6\\|d8:3a\\|2c:cf\"   # common Raspberry Pi MAC prefixes\n# or, if you have nmap (brew install nmap):\nnmap -sn 192.168.1.0/24\nssh sebi@hermespi.local\n# or by IP:\nssh sebi@192.168.1.42\n```\n\nAccept the host key fingerprint on first connect. You're in.\n\nRe-flashed the card?The Pi generates new host keys on every fresh install, so your next connection will fail with a loud`WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!`\n\nThis is expected after a reinstall — clear the stale entry with`ssh-keygen -R hermespi.local`\n\n(and`ssh-keygen -R <ip>`\n\nif you ever connected by IP), then reconnect and accept the new fingerprint.\n\nIf you used a password in the Imager, switch to keys now:\n\n```\n# From your Mac:\nssh-copy-id sebi@hermespi.local\n```\n\nThen on the Pi, disable password login:\n\n```\nsudo nano /etc/ssh/sshd_config\n# Set: PasswordAuthentication no\nsudo systemctl restart ssh\n```\n\nAn always-on agent should not change IP. Two options:\n\n**Best: DHCP reservation on your router.** In your router's admin UI, pin the Pi's MAC address to a fixed IP (e.g.`192.168.1.42`\n\n). Zero config on the Pi, survives reinstalls.**Alternative: static IP on the Pi**(Raspberry Pi OS Bookworm uses NetworkManager):\n\n```\nsudo nmtui   # → Edit a connection → set IPv4 to Manual, enter IP/gateway/DNS\n```\n\nAdd to `~/.ssh/config`\n\n:\n\n```\nHost hermespi\n    HostName hermespi.local\n    User sebi\n```\n\nNow it's just `ssh hermespi`\n\n.\n\nOn the Pi:\n\n```\nsudo apt update && sudo apt full-upgrade -y\nsudo reboot\n```\n\nReconnect, then install what the Hermes installer expects (Git is the only hard requirement; curl and xz-utils are needed on Linux because the installer downloads Node.js as a `.tar.xz`\n\n):\n\n```\nsudo apt install -y git curl xz-utils\n```\n\nOptional but useful for a 24/7 box:\n\n```\nsudo apt install -y tmux htop\n```\n\nOne command, as your normal user (not root — the per-user layout is the standard path):\n\n```\ncurl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash\n```\n\nThe installer handles everything else automatically: **uv**, **Python 3.11**, **Node.js v22**, **ripgrep**, **ffmpeg**, the repo clone into `~/.hermes/hermes-agent/`\n\n, the virtualenv, and the `hermes`\n\ncommand at `~/.local/bin/hermes`\n\n.\n\nHeadless tip:if you don't need browser automation on the Pi (Playwright + Chromium is the heaviest dependency), you can skip it:\n\n```\ncurl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash -s -- --skip-browser\n```\n\nYou can still get web browsing through the Nous Portal\n\ncloud browsertool, which runs remotely — arguably the better fit for a Pi anyway. If youdowant local Chromium, run`sudo npx playwright install-deps chromium`\n\nfirst so the system libraries are present.\n\nThen reload your shell:\n\n```\nsource ~/.bashrc\nhermes doctor    # sanity check — should come back clean\n```\n\nThe fastest path (one OAuth covers a model + web search, image gen, TTS, and cloud browser via the Tool Gateway):\n\n```\nhermes setup --portal\n```\n\nSince you're on a headless machine, the OAuth flow will print a URL — open it in the browser **on your Mac**, authenticate, and the CLI picks it up.\n\nAlternatives (bring your own key):\n\n```\nhermes model                                # interactive provider picker\nhermes config set OPENROUTER_API_KEY sk-or-...\n# or Anthropic, OpenAI, DeepSeek, Hugging Face, custom endpoints...\n```\n\nSecrets go to `~/.hermes/.env`\n\n, settings to `~/.hermes/config.yaml`\n\n— `hermes config set`\n\nroutes each value to the right file automatically.\n\nNow chat:\n\n```\nhermes --tui      # modern TUI (recommended)\n# or: hermes     # classic CLI\n```\n\nVerify the basics before layering anything on:\n\n```\n❯ What's my disk usage? Show the top 5 largest directories.\n```\n\nThen confirm sessions persist:\n\n```\nhermes -c         # resumes the last session\n```\n\nOne rule of thumb from the docs worth respecting:get one clean conversation working before adding the gateway, cron, skills, or voice.`hermes doctor`\n\n→`hermes model`\n\n→`hermes setup`\n\nis the recovery sequence when anything feels off.\n\nA note on local models:Hermes requires ≥64K tokens of context. Youcanrun Ollama on a Pi 5, but a model that's both capable enough for agentic tool-calling and holds a 64K context is not realistic on this hardware. Use the Pi as the agent's home and let inference live in the cloud — that's exactly the deployment model Hermes is built for.\n\nThis is where the Pi shines: an agent you talk to from Telegram/Discord/Signal/WhatsApp while it works at home, 24/7.\n\n```\nhermes gateway setup     # interactive wizard: pick platform, paste bot token, set allowlist\nhermes gateway           # start it in the foreground to test\nhermes gateway status    # check state\n```\n\nTelegram is the gentlest first platform: create a bot with @BotFather, paste the token into the wizard, and message your bot.\n\nCreate a **user** service so Hermes runs under your account without root:\n\n```\nmkdir -p ~/.config/systemd/user\nnano ~/.config/systemd/user/hermes-gateway.service\n[Unit]\nDescription=Hermes Agent Messaging Gateway\nAfter=network-online.target\nWants=network-online.target\n\n[Service]\nExecStart=%h/.local/bin/hermes gateway\nRestart=on-failure\nRestartSec=10\n\n[Install]\nWantedBy=default.target\n```\n\nEnable it, and allow your user services to run without an active login session (essential for headless):\n\n```\nsystemctl --user daemon-reload\nsystemctl --user enable --now hermes-gateway\nsudo loginctl enable-linger $USER      # keeps user services alive after you disconnect\n```\n\nCheck on it anytime:\n\n```\nsystemctl --user status hermes-gateway\njournalctl --user -u hermes-gateway -f    # live logs\n```\n\nReboot the Pi (`sudo reboot`\n\n) and confirm the bot answers without you SSHing in. That's the whole point.\n\n```\ntmux new -s hermes\nhermes gateway\n# Detach: Ctrl+B then D — reattach later with: tmux attach -t hermes\n```\n\nFine for testing; systemd is the right answer for permanent operation.\n\n`hermes tools`\n\n— enable/disable toolsets per platform (e.g. restrict what the Telegram surface can do vs. the CLI)`hermes skills browse`\n\n/`hermes skills search kubernetes`\n\n— the skills hub; every installed skill becomes a`/slash`\n\ncommand**Cron automations**— natural-language scheduling with delivery to any connected platform (\"send me a morning briefing on Telegram at 8:00\")** MCP servers**— add to`~/.hermes/config.yaml`\n\n:\n\n```\nmcp_servers:\n  github:\n    command: npx\n    args: [\"-y\", \"@modelcontextprotocol/server-github\"]\n    env:\n      GITHUB_PERSONAL_ACCESS_TOKEN: \"ghp_xxx\"\n```\n\n**Terminal sandboxing**— for safety on a box that runs unattended, consider`hermes config set terminal.backend docker`\n\n(install Docker via`curl -fsSL https://get.docker.com | sh`\n\n, then`sudo usermod -aG docker $USER`\n\n). Command approval and allowlists are covered in the Security docs.`hermes update`\n\n— updates in place (the installer layout auto-detects the right update path)\n\n**Thermals:** check with`vcgencmd measure_temp`\n\n. Sustained >80 °C means throttling — get the Active Cooler.**Storage endurance:** an agent with persistent memory (SQLite FTS5) writes constantly. On SD cards, prefer a quality A2 card and take periodic backups of`~/.hermes/`\n\n(it holds your config, secrets, sessions, memory, and skills). NVMe via the M.2 HAT is the comfortable long-term option.**Backup one-liner** from your Mac:\n\n```\nrsync -avz hermespi:~/.hermes/ ~/Backups/hermespi-hermes/\n```\n\n**Power:** use the official 27 W supply; undervoltage causes mysterious crashes. Check`dmesg | grep -i voltage`\n\nif things get weird.\n\n| Symptom | Fix |\n|---|---|\n`hermes: command not found` |\n`source ~/.bashrc` , or check `~/.local/bin` is on PATH |\n| Empty/broken replies | `hermes model` — re-verify provider + auth |\n| Gateway runs but bot silent | Re-run `hermes gateway setup` ; check token + allowlist; `hermes gateway status` |\n| Anything else | `hermes doctor` tells you exactly what's missing |\n\n```\n# Mac: flash Pi OS Lite 64-bit with Imager (hostname=hermespi, SSH on, Wi-Fi set)\nssh sebi@hermespi.local\nsudo apt update && sudo apt full-upgrade -y && sudo reboot\nssh sebi@hermespi.local\nsudo apt install -y git curl xz-utils\ncurl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash\nsource ~/.bashrc\nhermes setup --portal          # OAuth via your Mac's browser\nhermes --tui                   # first chat, verify it works\nhermes gateway setup           # connect Telegram/Discord/...\n# then install the systemd user service from section 7\nsudo loginctl enable-linger $USER\n```\n\n", "url": "https://wpnews.pro/news/hermes-on-raspberry-pi", "canonical_source": "https://gist.github.com/sebastienblanc/139c957489696afb194b8b33e6303107", "published_at": "2026-07-12 10:43:22+00:00", "updated_at": "2026-07-12 17:40:31.943160+00:00", "lang": "en", "topics": ["ai-agents", "developer-tools", "ai-infrastructure"], "entities": ["Hermes Agent", "Raspberry Pi 5", "Nous Portal", "OpenRouter", "Anthropic", "Raspberry Pi Imager", "Raspberry Pi OS Lite"], "alternates": {"html": "https://wpnews.pro/news/hermes-on-raspberry-pi", "markdown": "https://wpnews.pro/news/hermes-on-raspberry-pi.md", "text": "https://wpnews.pro/news/hermes-on-raspberry-pi.txt", "jsonld": "https://wpnews.pro/news/hermes-on-raspberry-pi.jsonld"}}