Summary
On Windows, the desktop app spawns the local dashboard backend as hermes dashboard --isolated …, but the Hermes Agent engine's dashboard subcommand does not accept --isolated. argparse hard-errors with unrecognized arguments: --isolated and exit(2), so the backend dies before it becomes ready. The desktop retries in a loop, flooding dashboard-stderr.log and never bringing the embedded dashboard up.
Environment
- hermes-desktop: 0.7.1 (latest release, 2026-06-26)
- Hermes Agent engine (CLI): 0.16.0 (
v2026.6.5-75-gd165933c5, .update_check reports behind: 0 — i.e. also latest)
- OS: Windows 11
- Both components are on their newest published versions, so this is not fixable by updating either side.
Root cause
Desktop main process (out/main/index.js), buildLocalDashboardCliArgs() hardcodes the flag:
function buildLocalDashboardCliArgs(profile, port, options = {}) {
const args = dashboardCliArgs(profile, [
"dashboard", "--isolated", "--no-open", "--host", "127.0.0.1", "--port", String(port)
]);
if (options.skipBuild) { args.push("--skip-build"); }
return args;
}
The engine's dashboard subparser (hermes_cli/main.py) accepts --port, --host, --no-open, --insecure, --skip-build, --stop, --status, and a hidden --tui back-compat shim — but not --isolated. --isolated has never existed for this subcommand (git log -S '"--isolated"' -- hermes_cli returns nothing).
Notably the engine already ships a precedent for exactly this drift — a hidden no-op that swallows a removed flag so an old app + new CLI degrades gracefully:
# Backward-compat shim: older Hermes desktop app shells (<= 0.15.x) spawn the
# backend as `hermes dashboard --no-open --tui ...`. ... Accept and silently
# ignore the flag so an old app + new CLI degrades gracefully instead of bricking.
dashboard_parser.add_argument("--tui", action="store_true", help=argparse.SUPPRESS)
--isolated is the same class of flag but has no shim.
Log evidence (dashboard-stderr.log, repeats on a loop)
hermes: error: unrecognized arguments: --isolated
usage: hermes [-h] [--version] ... {chat,model,...,dashboard,...}
Suggested fix (either side)
- Desktop: drop
--isolated from buildLocalDashboardCliArgs, or gate it behind an engine-capability/version check.
- Engine: add
--isolated as a hidden no-op next to the existing --tui shim.
Impact
Core chat still works (it goes through the gateway API server, which stays connected); the embedded dashboard is what fails to launch, plus continuous stderr log spam and wasted respawns.
Summary
On Windows, the desktop app spawns the local dashboard backend as
hermes dashboard --isolated …, but the Hermes Agent engine'sdashboardsubcommand does not accept--isolated. argparse hard-errors withunrecognized arguments: --isolatedandexit(2), so the backend dies before it becomes ready. The desktop retries in a loop, floodingdashboard-stderr.logand never bringing the embedded dashboard up.Environment
v2026.6.5-75-gd165933c5,.update_checkreportsbehind: 0— i.e. also latest)Root cause
Desktop main process (
out/main/index.js),buildLocalDashboardCliArgs()hardcodes the flag:The engine's
dashboardsubparser (hermes_cli/main.py) accepts--port,--host,--no-open,--insecure,--skip-build,--stop,--status, and a hidden--tuiback-compat shim — but not--isolated.--isolatedhas never existed for this subcommand (git log -S '"--isolated"' -- hermes_clireturns nothing).Notably the engine already ships a precedent for exactly this drift — a hidden no-op that swallows a removed flag so an old app + new CLI degrades gracefully:
--isolatedis the same class of flag but has no shim.Log evidence (
dashboard-stderr.log, repeats on a loop)Suggested fix (either side)
--isolatedfrombuildLocalDashboardCliArgs, or gate it behind an engine-capability/version check.--isolatedas a hidden no-op next to the existing--tuishim.Impact
Core chat still works (it goes through the gateway API server, which stays connected); the embedded dashboard is what fails to launch, plus continuous stderr log spam and wasted respawns.