Source: dodo-reach-hermes-desktop-2026-05-28.md — full README, fetched 2026-05-28. Repo: github.com/dodo-reach/hermes-desktop. Stars: 1,604 (116 forks). License: MIT. Language: Swift / SwiftUI. Created: 2026-04-08. Last push: 2026-05-26. Homepage: dodo-reach.github.io/hermes-desktop.
Native macOS companion app for Hermes Agent that manages a Hermes host over pure SSH — “no gateways, no exposed ports, no browser layer.” It turns the daily Hermes loop (sessions, workflows, Kanban, files, usage, skills, cron, terminal) into one focused native window while keeping the Hermes host as the only source of truth — no browser wrapper, no gateway API, no daemon on the host, no local mirror, no sync layer that drifts. The third native-surface entry in the Hermes client-UI cluster alongside Herm-TUI (terminal) and Hermes Console (Obsidian) — this one is the SwiftUI Mac app. Naming note: this is a third-party app by the dodo-reach org; Nous Research has since shipped its own official cross-platform Hermes Desktop (macOS/Windows/Linux, 2026-06-02) that shares the name — they are different products.
Key Takeaways
- Pure-SSH architecture is the whole pitch. The app talks to the selected host over SSH only — no gateway/daemon/local-mirror. Sessions come from the remote session store, Kanban from the upstream Hermes Kanban home, cron from the remote scheduler, files/skills edited on the host with conflict checks. No second source of truth.
- Survives broken higher-level surfaces. Because it’s SSH-direct, the app stays useful when a dashboard, gateway, or agent config breaks — inspect the host, edit files, open a terminal, repair from where the state actually lives.
- Eight focused views: Overview, Sessions (search/read transcripts + pin/continue/resume), Workflows (local reusable presets), Kanban (upstream Hermes board), Files (conflict-checked edits, ≤10 MB), Cron Jobs (full CRUD on the real scheduler), Usage (token totals / top sessions / top models / trends), Skills (
SKILL.mddiscover + edit), Terminal (embedded SSH shell with tabs/themes). - Multi-profile, multi-agent. Targets multiple Hermes profiles on the same SSH host (
~/.hermesor~/.hermes/profiles/<name>); the active profile flows through every view. Built for running several agents from one window. - Complementary to the official web dashboard, not a replacement. “Browser for administration (config, API keys, logs, analytics, browser chat); Mac app for direct host work.”
- Universal app, broad host support. Apple Silicon + Intel, macOS 14+. Works against anything you can SSH to that runs Hermes — Raspberry Pi, another Mac, a VPS, a remote server, or the same Mac via
ssh localhost. - Trust model is explicit: open source (MIT), ad-hoc signed and NOT Apple-notarized (expect a first-launch Gatekeeper warning), per-release SHA-256 + JSON manifest,
verify-release.sh, and a from-source build path (./scripts/build-macos-app.sh). The update check hits GitHub Releases for the app version only — it never sends host/profile/file/session/Kanban content and never updates Hermes Agent itself. - Localized in English, Simplified Chinese, and Russian.
How it works
The app is a thin native surface over the host’s own state:
- Sessions read the remote session store (including transcript content); you can pin, continue a chat, or resume in Terminal.
- Chat in Sessions launches the real Hermes TUI over SSH (
hermes --tui, resume viahermes --tui --resume <session-id>) — not a separate Desktop conversation backend. Transcripts are read back from the host. - Workflows are the one thing stored locally (on the Mac): reusable prompt presets scoped to the active host/profile with optional skill selections. Running one opens a fresh Terminal tab and seeds the first Hermes turn — no remote shadow state created.
- Kanban / Cron / Files / Skills / Usage all read and write the canonical host state directly. File and skill saves run a conflict check first — if the remote file changed since you opened it, the save is blocked and your edits are preserved.
Local app state (connection profiles, pinned sessions, bookmarked files, workflow presets) lives under ~/Library/Application Support/HermesDesktop. Everything else lives on the host.
Requirements & setup
Before install: macOS 14+, SSH access to the Hermes host with the host key already accepted once and non-interactive auth (no password prompt), a network route (LAN / DNS / public IP / VPN / Tailscale), python3 on the host, and Hermes data under the remote user’s ~/.hermes. For Sessions Chat / Terminal resume / workflow launch, the remote hermes CLI must be on the non-interactive SSH PATH. For native Kanban, the host needs a Hermes build with upstream Kanban support.
Litmus test: if ssh your-host works in Terminal without a password or host-key prompt, the app is usually ready.
Connect: in Connections, create a profile using an SSH alias (from ~/.ssh/config, the cleanest path) or explicit host/user/port; pick a Hermes profile (blank = ~/.hermes); click Test (preflight: reachable + non-interactive auth + python3 present) then Use Host.
Install: download HermesDesktop.app.zip from the latest GitHub Release, unzip, drag to Applications, right-click → Open on first launch (Gatekeeper). Do not disable Gatekeeper or sudo-install. Cautious users should read SECURITY.md + docs/distribution.md or build from source.
Why It Matters
- Completes the Hermes client-surface trio. Herm-TUI (OpenTUI/Bun terminal), Hermes Console (Obsidian PTY), and now Hermes Desktop (native SwiftUI Mac app) are three different front-ends over the same gateway/host — the ecosystem is converging on “great UX, host stays source of truth.”
- The anti-pattern it refuses is the point. No gateway, no daemon, no local mirror, no browser layer. This is the cleanest expression yet of the “Tailscale serve, no exposed ports” privacy pattern from the Hermes user-stories catalog — SSH is the security boundary.
- Resilience surface. Being SSH-direct means it’s the tool you reach for when the fancier surfaces are down — a deliberate operational-recovery design, not just a prettier dashboard.
- Multi-profile fit for fleets. The profile-flows-through-everything design matches the 1-to-many-agents operator pattern — manage a Programmer / Researcher / Designer fleet on one host from one window.
- Honest distribution story. Ad-hoc-signed-not-notarized + checksums + from-source build is the same trust-transparency posture the wiki flags on other community Hermes tools; the README is explicit that checksums are integrity, not a trust model.
Try It
- Confirm SSH is non-interactive:
ssh your-hermes-hostshould connect with no password/host-key prompt. Fix~/.ssh/config+ keys first if not. - Install the app from the latest GitHub Release; right-click → Open past the first-launch Gatekeeper warning (it’s ad-hoc signed, expected).
- Add a connection in
Connectionsusing your existing SSH alias; leave the Hermes profile blank to use~/.hermes;Test→Use Host. - Live in Sessions + Terminal for daily work; save a couple of Workflow presets for your recurring first-turn prompts (they launch in a fresh Terminal tab).
- For multi-agent setups, add profiles per agent (
~/.hermes/profiles/<name>) and switch between them — every view follows the active profile. - Cautious install: read
SECURITY.md+docs/distribution.md, or build from source with./scripts/build-macos-app.shand verify with./scripts/verify-release.sh.
Related
- Hermes Desktop — Official Nous Research App — the first-party Nous app that shares this one’s name (cross-platform GUI, v0.15.2); distinct product, disambiguation sibling.
- Herm — Dashboard TUI for Hermes (liftaris) — the terminal sibling client (OpenTUI/Bun); same “alternative front-end over the same gateway” model, different surface.
- Hermes Console — Obsidian Plugin — the Obsidian sibling client (embedded PTY terminal); the third surface in the client-UI cluster.
- Hermes Security Model — the defense-in-depth model Hermes Desktop’s pure-SSH posture complements (SSH as boundary, no exposed ports).
- Hermes User Stories — the privacy / Tailscale-no-exposed-ports use cases this app’s design embodies.
- Hermes Skill Bundles — the Skills surface the app’s Skills view discovers/edits.
- Nate Herk 1-Hour Course — operator setup of the host this app connects to; the multi-agent fleet pattern.
Open Questions
- Windows / Linux clients? This is macOS-only (Swift/SwiftUI). The Console plugin (Obsidian) and Herm-TUI (cross-platform terminal) cover other OSes; no native Windows/Linux Hermes Desktop equivalent is tracked yet.
dodo-reachidentity. The author/org behind the app isn’t profiled here — worth surfacing on refresh (it’s a fast-moving repo: 1.6k★ in ~7 weeks since the 2026-04-08 creation).- Notarization timeline. Ad-hoc-signed-not-notarized today; whether dodo-reach pursues Apple notarization (removing the first-launch warning) is unstated.
- Relationship to the official Hermes web dashboard’s roadmap. The README positions them as complementary, but overlap (sessions, cron, skills, usage) could grow. Resolved 2026-06-02: Nous Research shipped its own official cross-platform desktop app — Hermes Desktop (official) (macOS/Windows/Linux, v0.15.2) — which shares this app’s name but is a distinct first-party product. This dodo-reach client remains the pure-SSH, host-as-source-of-truth power-user surface.