CLI / Desktop Onboarding — Team Hermes

Phase C decision record + member setup guide. H1 outcome: Slack app creation works, but installing the app into the GLOO workspace ("Install to GLOO") is blocked on admin approval. Slack therefore cannot carry the team lane today → CLI + desktop remote-gateway (C2) is the primary path. See "Slack later" at the bottom.

What you're connecting to

Prerequisite for every path: your SSH public key must be on the VM. Send it to Chad once; he adds it to ~ubuntu/.ssh/authorized_keys.

Upstream docs: https://hermes-agent.nousresearch.com/docs (desktop remote backend: User Guide → Desktop → "Connecting to a remote backend"; connection registry: "Connecting Desktop to Many Hermes Instances").


The desktop app (macOS / Windows / Linux) can attach to a Hermes backend on another machine over SSH. It opens the tunnel, starts the backend on the VM on demand, and adopts a session token automatically — no password, no exposed ports. Chats, sessions, and memory all live on the VM.

1. Install

Download the Hermes Desktop installer from https://hermes-agent.nousresearch.com/desktop (or on an existing CLI install run hermes desktop). You do not need to configure a local provider — pick "Choose provider later" in first-run onboarding; your chats run on the VM's provider.

2. Make sure SSH works from your machine

ssh ubuntu@hermes.dev.360.gloo.com   # uses your default key
# first connect: accept the host key. You should land in a shell.
# If you use a non-default key file:
#   ssh -i ~/.ssh/your_key ubuntu@hermes.dev.360.gloo.com
#   (and reference that key below)

If SSH asks nothing and just works, Desktop will work too — it uses the same key. On macOS the app reads your ~/.ssh; if your key has a passphrase, entering it once in the app stores it in the OS keychain.

3. Add the connection

  1. Open the app → Settings → Gateways (or click the plug button at the right end of the sidebar profile rail).
  2. Scroll to Registered gatewaysAdd connection → kind SSH.
  3. Fill in: - Name: Team VM (any unique name) - SSH host: ubuntu@hermes.dev.360.gloo.com (port 22 default)
  4. Save connection, then click Test — it should report Reachable.
  5. Select it from the gateway selector in the Sessions sidebar (it shows "connect on demand" until first use — that's by design, not a failure).

4. Chat

Open a new chat (Cmd/Ctrl+N) and talk to it. Status bar should show the backend on the VM. Everything — sessions, memory, skills — lives on the VM.

Useful desktop extras: drag-and-drop files into chat, review pane (Cmd/Ctrl+G) for git work, Cmd/Ctrl+K command palette.

Desktop troubleshooting


Path B — CLI over SSH

No local Hermes install needed — the VM already has one. SSH in and use it.

Interactive session

ssh -t ubuntu@hermes.dev.360.gloo.com hermes

(If your key isn't the default: add -i ~/.ssh/your_key.) You get the interactive chat; sessions/memory are the shared VM ones. Exit with /exit.

One-shot queries

ssh ubuntu@hermes.dev.360.gloo.com \
  'hermes chat -Q --query="Summarize what you remember about project X"'

Notes: -Q suppresses the banner/stats so you get just the answer; use the --query="..." form (a bare -q -Q trips the argument parser).

Add to ~/.ssh/config on your machine:

Host hermes-team
    HostName hermes.dev.360.gloo.com
    User ubuntu
    # IdentityFile ~/.ssh/your_key   # only if non-default

Then it's just ssh -t hermes-team hermes.

CLI troubleshooting


Path C — manual tunnel (debugging only)

The Desktop SSH connection (Path A) does this automatically; manual mode is only for debugging:

ssh -N -L 19119:127.0.0.1:9119 ubuntu@hermes.dev.360.gloo.com
# in another terminal, verify the backend answers through the tunnel:
curl -s http://127.0.0.1:19119/api/status | head -c 200

Expected: JSON with "version":"0.21.0". The backend (hermes serve) on the VM binds loopback only; Desktop's SSH connection starts it on demand over the tunnel (hermes serve --ssh-session-token-file handshake).

Security notes

Verification (2026-09-03, from the bee control host)

Slack later

The Slack app Chad created still exists. When GLOO IT admin approves the "Install to GLOO" request, H3 proceeds: bot/app tokens go to the VM env (SLACK_BOT_TOKEN / SLACK_APP_TOKEN, Socket Mode — no public URL needed) per https://hermes-agent.nousresearch.com/docs/user-guide/messaging/slack, and Slack DMs become a third lane alongside desktop/CLI. Nothing about the paths above changes — they keep working.