This guide uses the cloud broker at getsesame.dev. Running your own broker? The only difference is
sesame login --broker-url <your-url>.Hermes is already running
Sesame detects the running Desktop, gateway, service, or terminal processes and restarts them through the broker. Run these in order:sesame onboard hermes shows what it found and asks before restarting anything. Confirm the prompt. When --verify-only reports your processes as protected, you’re done.
A bare interactive terminal session can’t be moved automatically — exit it, then start it again with
sesame launch -- hermes.Starting fresh
Install Hermes, then start it through Sesame instead of directly:sesame launch -- hermes gateway run instead.
After setup
Two things to remember:- Add a secret in the dashboard (Secrets → Add) for each provider Hermes should call — the broker injects it per approved request; Hermes never holds the key.
- Starting through Sesame isn’t one-time: launch new Hermes processes with
sesame launch -- hermes, and if Hermes Desktop was reopened from the Dock (or anything is running unwrapped), runsesame onboard hermesagain.sesame doctorverifies the machine’s trust setup any time.
Private networks (Tailscale, VPNs)
Hermes can call services that exist only inside your VPN or tailnet — an internal MCP server, a private API. What’s required depends on whether Sesame holds a secret for that hostname:- No secret stored for the host — traffic flows directly from the Hermes machine. Put the Hermes machine on the VPN and it works; the broker is never involved.
- Secret stored for the host — the broker makes the request so it can inject the credential, which means the broker machine must be on the VPN too. Self-hosted broker: install Tailscale on the broker host and
sudo tailscale up— no broker restart or container changes needed. The cloud broker at getsesame.dev cannot join your private network, so credential-injected private hosts require a self-hosted broker. - Serve the private host over HTTPS on port 443. The edge proxy mediates TLS only (plain
http://fails with a 405), and credential-injected requests are rebuilt on port 443. With Tailscale,tailscale serve <port>handles both — it exposes your service athttps://<machine>.<tailnet>.ts.netwith a valid certificate.
502 — Upstream request to '<host>' timed out: the broker can’t reach the host. On the broker machine, checktailscale status— is it connected, was the machine deleted from the tailnet, has its key expired?- Machine joined the VPN after Hermes was wrapped: the running processes’ proxy exclusions predate the new network.
sesame doctorflags this; rerunsesame onboard hermesto restart them. - In the Tailscale admin console, disable key expiry for server machines (broker, Hermes host) so they don’t silently drop off the tailnet after ~180 days.