Skip to content

Dashboard fails to start: desktop 0.7.1 spawns 'hermes dashboard --isolated', engine 0.16.0 rejects the flag (loop) #797

Description

@nonoskygt

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions