Setup guides

Set up Hermes Agent on Linux for Herald

To use Herald with Hermes Agent on Linux, install Hermes with its one-line installer, add Tailscale if you want to connect from anywhere, then run npx herald-setup and scan the QR code. Hermes stays on 127.0.0.1 behind a dashboard password. On a machine that runs all the time, keep hermes serve going with a systemd user service and lingering turned on.

Herald’s setup step asking you to run npx herald-setup on your computer, then scan the QR code

Requirements

Architecture
x86_64 or aarch64
Distribution
One with glibc and systemd; Hermes tests on the latest Ubuntu
Hermes Agent
hermes on your PATH; the installer adds ~/.local/bin
Node.js
20 or newer, for npx herald-setup
Network
The same LAN as your phone, or Tailscale on both

Install Hermes and pair Herald

  1. Install Hermes Agent

    This is the installer from the Hermes installation guide. On minimal images it may ask for your sudo password once to install libatomic. Run hermes doctor if anything looks wrong.

    curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
    source ~/.bashrc
    hermes setup
  2. Install Tailscale (recommended)

    Sign in with the same account you use on your phone. You can skip this if the phone and the computer share a network and you only need Herald at home.

    curl -fsSL https://tailscale.com/install.sh | sh
    sudo tailscale up
  3. Run herald-setup

    If Linux refuses the Tailscale Serve change for your user, herald-setup says so and suggests sudo tailscale set --operator=$USER. Run that, then run the helper again.

    npx herald-setup
  4. Scan the QR code in Herald

    Tap Scan the QR code in Herald. If the terminal can’t draw the code, herald-setup prints the address, username and password to type into Enter an address manually instead.

Keep Hermes running with systemd

herald-setup runs Hermes as a child process, so Hermes stops when you press Ctrl-C. The Hermes docs recommend keeping hermes serve under systemd, tmux or another process manager so it survives logout and reboots. The user service below keeps Hermes on 127.0.0.1, where Tailscale Serve expects to find it.

Pair first, press Ctrl-C to stop the copy herald-setup started, then enable the service. To pair again later while the service runs, use npx herald-setup --no-serve; if it says Hermes is running with the old settings, run systemctl --user restart hermes-serve.

[Unit]
Description=Hermes Agent backend for Herald

[Service]
ExecStart=%h/.local/bin/hermes serve --port 9119
Restart=always
RestartSec=10
RestartPreventExitStatus=78

[Install]
WantedBy=default.target
Save as ~/.config/systemd/user/hermes-serve.service. Adapted from the systemd example in the Hermes web dashboard docs, using the installer’s ~/.local/bin/hermes wrapper as Hermes recommends for services. Exit code 78 means another Hermes backend already serves this machine.
systemctl --user daemon-reload
systemctl --user enable --now hermes-serve
sudo loginctl enable-linger "$USER"
Lingering keeps your user services running after you log out, as the Hermes docs recommend for machines that stay on.

Laptops, sleep and updates

A Linux laptop may suspend when idle, which takes Hermes offline. The Hermes docs suggest systemd-inhibit --what=idle:sleep --who=hermes --why="Herald" sleep infinity & to block idle sleep for as long as it runs.

After hermes update, run systemctl --user restart hermes-serve so Hermes runs the new code. The Hermes update guide notes that backends you start yourself aren’t restarted for you.

Same network, no Tailscale

  • herald-setup picks your LAN address, keeps Hermes on 127.0.0.1 and opens only that one address on port 9119 while it runs. It never listens on 0.0.0.0 unless you pass --bind-all.
  • If you run a firewall, allow TCP port 9119 from your local network.
  • Traffic is plain HTTP, so your password crosses the network unencrypted. Read same-Wi-Fi access for the details.

Troubleshooting

  • Command not found: hermes. Reload your shell with source ~/.bashrc, or check that ~/.local/bin is on your PATH.
  • Hermes did not answer within 180 seconds. Run hermes serve --port 9119 in another terminal to see the error. Output from the Hermes that herald-setup started is in ~/.hermes/logs/herald-setup.log.
  • The service won’t start. Read its log with journalctl --user -u hermes-serve.
  • The phone can’t connect. See Herald can’t connect and Tailscale HTTPS certificates.

Questions

Which Linux distributions work?

Hermes treats Linux on x86_64 and aarch64 as a top-tier platform and tests on the latest Ubuntu. Its docs say a distribution with glibc, systemd and the standard filesystem layout is likely to work well.

Can I run herald-setup over SSH?

Yes. In an interactive SSH session it asks its questions and draws the QR code in your terminal. Without a terminal, for example ssh host npx herald-setup, it takes every default instead.

Why does herald-setup ask me to run sudo tailscale set --operator?

On Linux, changing Tailscale settings such as Serve needs root unless your user is Tailscale’s operator. That command makes your user the operator, so herald-setup can run tailscale serve without sudo.

Does Herald use the API server on port 8642?

No. Herald talks to the dashboard backend, hermes serve, on port 9119. Hermes’ OpenAI-compatible API server on port 8642 is for other tools and can stay off.

Sources

Get Herald for Hermes Agent

iPhone, iPad, Apple Watch, CarPlay and Android. $12.99 once, no subscription, no account and no Herald server.

Herald is an independent, unofficial app. It is not made, endorsed or supported by Nous Research.