Run one server. Connect a native app from your laptop, your phone, or any browser. Your sessions, memory, and agent travel with you.
How it fits together. Hermes WebUI is a full Hermes backend — one server holding your conversations, memory, scheduled jobs, workspace, and the whole Hermes Agent. Every app below is a client that connects to that server, so the same Hermes follows you across devices. Set the server up once, then connect as many clients as you want.
On any machine you control — macOS, Linux, or Windows via WSL2 — with Python 3.11+ and git. The bootstrap finds or installs Hermes Agent, sets up the environment, and walks you through first-run onboarding.
curl -fsSL https://get-hermes.ai/install.sh | bash
Clones the Web UI to ~/hermes-webui, installs Hermes Agent if it's missing, and starts the server on 127.0.0.1:8787. Safe to re-run to update. Open that URL in any browser and the full Web UI is there. To relaunch later, run ./start.sh.
Prefer to read the script first? View install.sh. Or clone & start by hand:
git clone https://github.com/nesquena/hermes-webui.git
cd hermes-webui
python3 bootstrap.py
Hermes WebUI runs on the Hermes Agent. The one-liner installs it automatically if it's missing — or set it up directly:
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
source ~/.bashrc # reload your shell
hermes model # choose your LLM provider
Full walkthrough: the Hermes installation guide →
Auth is off by default on localhost. Before putting the server on a network (Step 2), set a password — in the Web UI's Settings panel, or inline:
HERMES_WEBUI_PASSWORD=your-secret ./start.sh
curl http://127.0.0.1:8787/health
http://127.0.0.1:8787 and start. To reach it from your phone or another computer, keep going.On the same machine, 127.0.0.1:8787 already works — skip ahead. To connect from another device (your phone, a second laptop) or to a server in the cloud (a VPS), give it an address those devices can reach. Pick one path:
Tailscale puts your devices on one private network — nothing is exposed to the internet. Install on both, sign into the same tailnet, then bind the server to all interfaces:
HERMES_WEBUI_HOST=0.0.0.0 \
HERMES_WEBUI_PASSWORD=secret ./start.sh
tailscale ip -4 # your 100.x address
Already SSH into a remote box or VPS? Forward the port over your existing SSH connection — no extra software, nothing public. Run this on your local machine:
ssh -L 8787:localhost:8787 \
you@your-server
Now http://127.0.0.1:8787 on your laptop reaches the remote server.
Cloudflare Tunnel dials out from your machine — no port-forwarding, real HTTPS at a public hostname.
brew install cloudflared
cloudflared tunnel \
--url http://localhost:8787
Prints a public trycloudflare.com URL. Your password is required here.
Each app is a thin native client for the server you just stood up. Install it, enter your server URL, sign in — and your Hermes is there. Run as many as you like; they all share one backend.
.dmg.In any app, tap where it asks for your Server URL, enter the address that matches where you're connecting from, then sign in with your password. The web client uses the same URLs in your browser's address bar.
| Connecting from | Server URL to enter |
|---|---|
| Same machine as the server | http://127.0.0.1:8787 |
| Another device on yourhome / office network (LAN) | http://<server-local-ip>:8787 |
| Anywhere, via Tailscale | http://<tailscale-100.x-ip>:8787 |
| A VPS, via SSH tunnel | http://127.0.0.1:8787 (once the tunnel from Step 2 is open) |
| Anywhere, via Cloudflare | https://your-hostname |
127.0.0.1 only works on the same machine as the server. After entering the URL, tap Test Connection, then sign in. Your URL is stored on-device; your data stays on your server.Hermes WebUI is an open ecosystem — add extensions, and see how the whole thing is maintained.
Work outward. On the server, run curl http://127.0.0.1:8787/health. If that's fine, open your Tailscale or Cloudflare URL in another device's browser. Whichever hop fails is the one to fix — and remember 127.0.0.1 only works on the server's own machine.
Not 127.0.0.1 — that points the phone at itself. Use your server's Tailscale address (http://100.x.x.x:8787) or your Cloudflare hostname (https://…). See the "Which URL do I enter?" table above.
Two clean options: open an SSH tunnel (ssh -L 8787:localhost:8787 you@vps) and connect to http://127.0.0.1:8787 locally, or run Cloudflare Tunnel on the VPS for a public HTTPS hostname you can use from any device. Avoid exposing port 8787 directly to the internet.
Quick tunnels (trycloudflare.com) get a new URL each restart. For a stable hostname, create a named tunnel on a domain you've added to Cloudflare, and keep cloudflared running.
The password in your app must match HERMES_WEBUI_PASSWORD on the server (or the one set in Settings). An inline variable only applies to that launch — persist it in the server's .env for restarts.
Start on another port with HERMES_WEBUI_PORT=8788 ./start.sh, and use that port everywhere — your client URL, the tunnel command, and the SSH forward.
Run the server, connect your apps, take Hermes with you.