Skip to main content
Run every command on the machine where Hermes runs. Pick the path that matches you — each one is complete, top to bottom.
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:
For a gateway, the last line is 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), run sesame onboard hermes again. sesame doctor verifies 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 at https://<machine>.<tailnet>.ts.net with a valid certificate.
Troubleshooting
  • 502 — Upstream request to '<host>' timed out: the broker can’t reach the host. On the broker machine, check tailscale 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 doctor flags this; rerun sesame onboard hermes to 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.

Remove Sesame egress

This preserves your Sesame login, agent registration, secrets, and policies.