Setup guides

Run Hermes Agent on a VPS and reach it from your phone

To use Herald with Hermes Agent on a VPS, keep Hermes on 127.0.0.1 and reach it through Tailscale instead of opening a port. Install Tailscale on the server and your phone, run npx herald-setup over SSH and scan the QR code it draws in your terminal. Never expose the dashboard to the internet behind only a password: it holds your API keys and can run commands.

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

Why Tailscale on a VPS

herald-setup prefers Tailscale whenever it is running. Without it, a VPS has no address your phone can use: Herald refuses plain HTTP to public addresses, and herald-setup may pick a private cloud address, such as 10.x.x.x, that your phone can’t reach.

With Tailscale, the server gets an HTTPS name on your tailnet that is served only to your own devices. Hermes stays on 127.0.0.1, nothing new listens on the public interface, and you don’t touch the provider’s firewall.

Requirements

Server
Linux on x86_64 or aarch64; Hermes tests on the latest Ubuntu
Access
SSH from your computer
Tailscale
On the server and on your phone, with the same account
Node.js
20 or newer, for npx herald-setup
Cost
Tailscale’s Personal plan is free for non-commercial use

Set it up

  1. Connect over SSH

    Use SSH rather than your provider’s browser console. Hermes’ Docker guide warns that some browser consoles change pasted characters such as : and @.

  2. Install Hermes Agent

    Run the installer as the user that will run Hermes. The installation guide covers service users without sudo.

    curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
    source ~/.bashrc
    hermes setup
  3. Install Tailscale and sign in

    Open the sign-in link it prints on your laptop or phone, using the same account as your phone.

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

    It picks the server’s tailnet name, sets the dashboard password, runs tailscale serve --bg 9119 and draws the QR code in your SSH session. If Linux refuses the Serve change for your user, run sudo tailscale set --operator=$USER and try again.

    npx herald-setup
  5. Scan the QR code from your screen

    Tap Scan the QR code in Herald and point the camera at your terminal. If the code doesn’t draw, type the printed address, username and password into Enter an address manually.

Keep Hermes running

A Hermes started by herald-setup stops when your SSH session ends. Run it as a systemd user service with lingering turned on, as shown in the Linux guide. Tailscale keeps the Serve mapping across reboots, and the password stays in ~/.hermes/config.yaml.

To pair again later, run npx herald-setup --no-serve so the helper doesn’t compete with the service, then restart the service if it asks.

Check that nothing is exposed

  • Hermes listens only on 127.0.0.1:9119. Check with ss -ltn | grep 9119.
  • Port 9119 stays closed in your provider’s firewall. Hermes’ docs call any open port on an internet-facing machine a security risk.
  • Tailscale Funnel is off for the server’s name. herald-setup won’t publish through Funnel without an explicit yes, and tailscale funnel --https=443 off turns it off.
  • Hermes’ OpenAI-compatible API server (port 8642) stays off unless another tool needs it, and then only with an API key.

What about a public HTTPS address?

The alternative to Tailscale is a public HTTPS name through a reverse proxy or Cloudflare Tunnel. Herald can use either, but both put Hermes’ password sign-in on the internet, which Hermes’ own docs advise against. Hermes recommends OAuth sign-in for internet-facing dashboards, and Herald signs in with a username and password only.

Troubleshooting

  • No Tailscale or Wi-Fi address found. Tailscale isn’t running. Run sudo tailscale up, then run herald-setup again.
  • Tailscale refused the change for this user. Run sudo tailscale set --operator=$USER.
  • HTTPS certificates are not enabled. See Tailscale HTTPS certificates.
  • Herald keeps signing out. See signed out with a 401.

Questions

Can I use the VPS’s public IP with http://?

No. Herald and herald-setup refuse plain HTTP to public addresses, so your password never crosses the internet unencrypted. Use Tailscale, or an HTTPS address.

Can Herald sign in with Nous Portal OAuth?

No. Herald signs in with the dashboard username and password. Hermes recommends OAuth for dashboards on the public internet, which is one more reason to keep a VPS behind Tailscale.

How powerful does the VPS need to be?

The Hermes docs describe running it on a $5 VPS. The language model runs at your provider, unless you choose to host one on the server yourself.

Should the VPS be my primary connection?

It can be. The primary connection hosts kanban, mail and push in Herald, so an always-on server suits it. You can change the primary in Settings at any time.

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.