Problem or Use Case
Install Hermes Desktop as thin-client connecting to remote hermes installation.
The Reality
The desktop app is designed to always bootstrap the Hermes Agent runtime on first launch if no installation is found. 2 The bootstrap runner in electron/main.cjs automatically runs install.ps1 stages to install Python, Node, and other dependencies. 3
Remote Mode Workaround
If you set these environment variables before first launch, the desktop app will connect to a remote backend and skip the local backend spawn:
HERMES_DESKTOP_REMOTE_URL=https://your-remote-backend.com/hermes
HERMES_DESKTOP_REMOTE_TOKEN=your-session-token
When these are set, resolveRemoteBackend() returns a remote configuration and startHermes() connects to it immediately, never reaching the local backend code path. 4 1
Limitations
- The Electron shell itself is still installed (that's the desktop app)
- If you ever unset the environment variables, the app will attempt to bootstrap the local runtime on next launch
- There's no official "client-only" build that excludes the bootstrap logic entirely
Notes
The bootstrap logic is in ensureRuntime() which only runs when backend.kind === 'bootstrap-needed' — meaning no usable local installation was found. 3 Remote mode via environment variables is the intended way to use the desktop app without a local backend, but it doesn't prevent the initial bootstrap attempt if the env vars aren't set before first launch.
Proposed Solution
Flag for installer that doesn't install or run server components.
Alternatives Considered
No response
Feature Type
Other
Scope
Small (single file, < 50 lines)
Contribution
Debug Report (optional)
Problem or Use Case
Install Hermes Desktop as thin-client connecting to remote hermes installation.
The Reality
The desktop app is designed to always bootstrap the Hermes Agent runtime on first launch if no installation is found. 2 The bootstrap runner in
electron/main.cjsautomatically runsinstall.ps1stages to install Python, Node, and other dependencies. 3Remote Mode Workaround
If you set these environment variables before first launch, the desktop app will connect to a remote backend and skip the local backend spawn:
When these are set,
resolveRemoteBackend()returns a remote configuration andstartHermes()connects to it immediately, never reaching the local backend code path. 4 1Limitations
Notes
The bootstrap logic is in
ensureRuntime()which only runs whenbackend.kind === 'bootstrap-needed'— meaning no usable local installation was found. 3 Remote mode via environment variables is the intended way to use the desktop app without a local backend, but it doesn't prevent the initial bootstrap attempt if the env vars aren't set before first launch.Proposed Solution
Flag for installer that doesn't install or run server components.
Alternatives Considered
No response
Feature Type
Other
Scope
Small (single file, < 50 lines)
Contribution
Debug Report (optional)