codename-11/hermes-relay/hermes-relay-desktop-setup
Claude Code and agent skill by codename-11/hermes-relay
- community
Checking that the SKILL.md file is still in the repository.
Install, pair, and troubleshoot the Hermes-Relay desktop CLI on Windows, macOS, or Linux. Agent-readable recipe with live local-machine diagnostics via the desktop_terminal tool.
Install
npx vskill@latest install codename-11/hermes-relay/hermes-relay-desktop-setupSKILL.md
Hermes-Relay Desktop CLI Setup
Experimental. The desktop CLI atdesktop/is a preview-grade thin client. Pairing, chat, shell (PTY pipe to the host), and local tool routing (desktop_terminal/desktop_read_file/desktop_write_file/desktop_search_files/desktop_patch) all work end-to-end. Daemon mode, multi-client routing, and code-signed binaries are the v1.0 polish — see the ROADMAP.
The Hermes-Relay desktop CLI (hermes-relay) is a thin client that gives you remote access to a Hermes agent running on another machine. It pipes a full PTY shell (with the agent's native Ink TUI), streams structured chat events for scripting, and — uniquely — lets the remote agent execute tools on your local machine (read files, run shell commands, search the filesystem) through a round-trip over the same WSS relay the Android client uses. The agent brain stays on the host; your laptop is the hands.
When to Use
Invoke this skill when any of the following happens:
- User runs the
/hermes-relay-desktop-setupslash command. - User asks to "install the Hermes-Relay CLI", "set up hermes-relay on my laptop", "pair this desktop with my Hermes server", "hermes-relay shell isn't working", or anything equivalent.
- User is on a fresh machine and wants to connect to an existing Hermes-Relay host.
- User reports any of:
hermes-relaycommand not found, Node version mismatch, auth timeouts, "No desktop client connected" errors, pasted-pairing-code mangled by bracketed paste, or desktop tools that "time out immediately" (seconds↔ms unit bug in pre-0.6 builds).
Do NOT use this skill to troubleshoot the relay server itself (that's hermes-relay-self-setup) or the Android client (that's hermes-relay-self-setup too). This skill is desktop-CLI-specific, running on the user's laptop/workstation.
Unique Capability: Live Local Diagnostics
This skill can invoke `desktop_terminal` to run commands on the user's own machine — a capability the Android skill can't match. Use it aggressively during install / pairing / troubleshooting:
Never guess the user's state — measure it. desktop_terminal is cheap; one call per check is the right cadence.
Prerequisites
- The Hermes-Relay server is running on the host and reachable from this machine. Verify:
``bash curl -s http://<host>:8767/health ` Expect {"status":"ok","version":"1.1.0"} or later. If it fails, the user's server is down — stop here and run /hermes-relay-self-setup or /hermes-relay-doctor` on the host instead.
- One of:
- Node.js ≥21 on this machine (for the built-in global
WebSocket). Verifynode --version≥ v21. Older Node refuses to run. - A prebuilt
hermes-relaybinary from GitHub Releases (no Node required). Use this path on Windows desktops where Node isn't already installed.
- Network path from here to `<host>:8767`. If the user is roaming (work + home + coffee shop), multi-endpoint pairing (ADR 24) handles it automatically — no prerequisite here.
Procedure
A. Install
Three install methods in decreasing order of Node-flexibility. Pick the first the user can do.
A1. Binary (Windows — recommended, no Node required)
- Downloads
hermes-relay-win-x64.exefrom the latest GitHub Release. - Verifies SHA256 against the published
SHA256SUMS.txt. - Installs to
%USERPROFILE%\.hermes\bin\hermes-relay.exeand adds that directory to the user PATH. - The binary is currently unsigned (experimental phase). Windows SmartScreen may show "Windows protected your PC" on first launch. Click "More info" → "Run anyway", or pre-unblock via
Unblock-File.
Pin a version: $env:HERMES_RELAY_VERSION='desktop-v0.3.0-alpha.1'; irm ... | iex.
Uninstall: delete %USERPROFILE%\.hermes\bin\hermes-relay.exe and remove the PATH entry from System Properties → Environment Variables → User → Path.
A2. Binary (macOS / Linux — recommended, no Node required)
- Detects OS/arch (
linux-x64,darwin-x64,darwin-arm64). - Downloads the matching binary + SHA256 checksum from the latest release.
- Installs to
$HOME/.hermes/bin/hermes-relayand appends that path to~/.bashrcor~/.zshrcif not already present. - macOS Gatekeeper will quarantine the unsigned binary on first launch. If the user sees "cannot be opened because the developer cannot be verified", run once:
``bash xattr -dr com.apple.quarantine ~/.hermes/bin/hermes-relay ``
Pin a version: HERMES_RELAY_VERSION=desktop-v0.3.0-alpha.1 curl -fsSL ... | sh.
Uninstall: rm ~/.hermes/bin/hermes-relay and remove the PATH line from the shell rc.
A3. npm / npx (any platform with Node ≥21)
Once we publish to npm (not yet — experimental phase), this will be:
For now, install from a clone:
The npm link step drops hermes-relay into your npm global bin directory. Add that to your PATH if it isn't already (npm config get prefix shows where).
B. Verify the install
Run a one-off --version check:
Expect 0.3.0-alpha.18 or later (depending on which release is current).
If the command is not found:
- Windows: open a new PowerShell (PATH updates don't apply retroactively), or run
$env:Path += ';C:\Users\<you>\.hermes\bin'temporarily. - macOS / Linux: source the rc file (
source ~/.zshrc) or open a new terminal. - npm path missing:
export PATH="$(npm config get prefix)/bin:$PATH", then add permanently.
C. Pair
On the relay host, mint a fresh pairing invite:
Or, from any Hermes chat session on the host: /hermes-relay-pair.
You'll get a Copy/paste pairing invite section with a URL shaped like hermes-relay://pair?payload=.... That invite carries the relay URL, one-shot relay code, API host, and endpoint candidates.
On this machine (your laptop), either paste that URL into Hermes Relay Desktop → Pair → Paste invite, or run:
The CLI probes the invite endpoints, picks the highest-priority reachable route, exchanges the embedded relay.code for a session token, stores it in ~/.hermes/remote-sessions.json, and prompts for desktop-tool consent when --grant-tools is present.
Manual code pairing is still available when you only have a code:
The CLI prompts for the 6-character code and will:
- Disable bracketed-paste mode during the prompt (so pasted codes aren't wrapped in
\x1b[200~...). - Strip ANSI + control chars defensively, clean to
A-Z0-9, clamp to 6 chars. - Echo
→ using code: F3W7EYas a sanity check. - Connect to the relay, exchange the code for a session token, persist to
~/.hermes/remote-sessions.json(mode 0600).
On success:
Subsequent hermes-relay invocations reuse the stored token — no re-pair needed.
D. First smoke — structured event chat
Quickest sanity check:
The CLI streams back the agent's reply. Stderr gets Connecting... / Connected via LAN (plain) — server 1.1.0; stdout gets the answer. Redirecting stdout to a file (... > out.txt) captures only the reply.
E. Full Hermes TUI — shell mode
For the complete local-Hermes experience (the Axiom-Labs banner, Victor, the Ink status bar, slash commands, everything):
(Bare invocation is shorthand for hermes-relay shell.)
The CLI:
- Connects over WSS.
- Prints
Connected via LAN (plain) — server 1.1.0. - Prompts for one-time local-tool consent (see §F).
- Attaches to the relay's
terminalchannel, which spawns (or re-attaches) a tmux session on the host. - Sends
clear; exec hermes\nafter a 350 ms settle — tmux's login shell replaces itself withhermes, which renders its native Ink TUI straight through to your terminal.
Escape keys:
Ctrl+A .— detach (tmux preserved on the host — nexthermes-relayre-attaches with full state)Ctrl+A k— kill the tmux session (destructive; fresh hermes on next run)Ctrl+A Ctrl+A— forward a literalCtrl+A(for nested tmux)Ctrl+C— passes through tohermes(interrupts the agent, not the client)
F. Desktop tool consent — one-time per relay URL
On first shell or chat with tools enabled, the CLI shows:
Only yes (case-insensitive) enables. Anything else (y, no, Enter, Ctrl+C) denies. Consent is stored per-URL in ~/.hermes/remote-sessions.json as toolsConsented: true and sticks across sessions.
Kill-switches:
--no-toolson any subcommand suppresses the router entirely — the agent sees "no desktop client for tool X".hermes-relay pair --reset-pin(coming) wipes consent + cert pin; re-pair re-prompts.
G. Verify end-to-end tool routing
Inside hermes-relay shell, at the agent prompt:
Expect the agent to render:
The key signal: stdout contains your local hostname, not the server's. That proves the call routed from hermes → relay → WSS → this machine → shell exec → response back. If the agent instead sees the server's hostname (e.g., hermes-host), the tool is running on the server — check consent and /desktop/_ping from the host:
{"connected": true, "advertised_tools": [...]} means routing works; the issue is upstream in Hermes. {"connected": false} means the client isn't attached or consent was denied.
Troubleshooting
hermes-relay: command not found
Your shell hasn't picked up the PATH change. Options:
- Windows: open a new terminal window.
- macOS/Linux:
source ~/.bashrc(or~/.zshrc) in the current session. - Or run with the full path one time:
~/.hermes/bin/hermes-relay --version.
Node version 20 too old. Need >=21
You're on the npm/source install path with old Node. Either:
- Upgrade Node: https://nodejs.org → LTS or current, whichever is ≥21.
- Switch to the binary install (A1 / A2) which needs no Node.
auth timed out after 15000ms
The relay subprocess takes 15–30 s on first attach (hermes agent full-init). Bump the timeout for slow first connects:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/devops/hermes-relay-desktop-setup/SKILL.md
Popularity
- Repository stars
- 197
- Repository forks
- 44
- 7-day trend score
- 26
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/codename-11/hermes-relay/hermes-relay-desktop-setup)