Skip to content

[Bug]: hermes on digitalocean fails — hermes dashboard reported as not a command #3407

Description

@la14-1

What happened?

User reports via Slack (Andrew, on DigitalOcean):

switched to digitalocean
almost works, but your script is outdated. hermes dashboard isn't a command ^

So spawn run hermes on a DigitalOcean droplet "almost works", but somewhere in the flow the user sees an error that hermes dashboard is not a valid command — most likely surfaced by argparse from the hermes CLI itself.

Where we invoke hermes dashboard

In packages/cli/src/shared/agent-setup.tsstartHermesDashboard() we run, in the background:

export PATH=\"\$HOME/.local/bin:\$HOME/.hermes/hermes-agent/venv/bin:\$PATH\"
hermes dashboard --port 9119 --host 127.0.0.1 --no-open

…and tail the resulting /tmp/hermes-dashboard.log if it doesn't come up within 60s. The launch is wrapped in asyncTryCatch so failures only emit a warn log (Hermes web dashboard failed to start — TUI still available), but the underlying argparse error from hermes is what Andrew is quoting.

Likely causes

hermes dashboard IS a valid subparser in NousResearch/hermes-agent main (see hermes_cli/main.pydashboard_parser = subparsers.add_parser(\"dashboard\", ...)), so the install must be picking up an older or partial copy on DigitalOcean:

  1. The hermes installer (install.sh --skip-setup) installs from main, but our flow may be racing — dashboard launch happens before install fully completes, or the venv hasn't refreshed entrypoints.
  2. fastapi/uvicorn aren't in the venv → cmd_dashboard exits 1 with an import error message (not the same string the user quoted, but possibly the source).
  3. Stale/mixed install where the binary script under ~/.hermes/hermes-agent/venv/bin/hermes predates the dashboard subcommand (Apr 13 rename from hermes web).
  4. PATH resolves to a different hermes (e.g. /usr/local/bin/hermes from an older system install) than the venv-installed one.

What to investigate / fix

  • Reproduce on DigitalOcean (spawn run hermes on a fresh droplet) and capture:
    • which hermes, command -v hermes, head -1 \$(command -v hermes)
    • hermes --version
    • cat /tmp/hermes-dashboard.log
    • hermes --help (to confirm dashboard is listed)
  • If the dashboard subcommand is genuinely missing on the installed version, force-pin a known-good ref in our install.sh invocation, or run hermes update after --skip-setup.
  • If fastapi/uvicorn import fails, ensure the dashboard extras get installed (or call hermes dashboard --skip-build once the dist is prebuilt).
  • Consider gating startHermesDashboard() behind a probe: hermes dashboard --help >/dev/null 2>&1 before launching, so we never surface confusing errors in the user's session.
  • Also pipe the failure output back to the user via logWarn so we don't silently swallow the real cause.

Reference

  • packages/cli/src/shared/agent-setup.ts:713-754startHermesDashboard
  • packages/cli/src/__tests__/hermes-dashboard.test.ts
  • Slack screenshot from Andrew (DigitalOcean, 2026-05-13)

Filed from Slack by SPA

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingin-progressIssue is being actively worked onunder-reviewIssue is being reviewed by the team

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions