Hermes HUD Web UI

A browser-based consciousness monitor for your Hermes agent's health, memory, spend and run history.

Stars
★ 1.8k
Last updated
14d ago
License
MIT
Primary language
Python

At a glance

How it runs
CLIWeb app
Works with
Platform-specific
Cost
Free software; you pay for model usage
Setup effort
Medium · a few setup steps
You'll need
Python 3.11+Node.js 22.12+Hermes agent with data in ~/.hermes/Shell / CLINetwork accessLocal filesystem
Typical use
An ops or platform engineer debugging a long-running Hermes agent uses the Health tab and its layout/schema checks to spot drift from the verified baseline.
Not a fit if
  • Teams not running a Hermes agent with ~/.hermes/ data
  • Users who want to expose it publicly without adding auth and TLS
  • Those who need a hosted SaaS instead of a local deployment

What does this agent do, and when should you use it?

Hermes HUD Web UI is the browser companion to the TUI hermes-hud: a 19-tab dashboard that reads a running Hermes agent's ~/.hermes/ data directory and the hermes CLI directly, then streams updates over WebSocket so nothing needs a manual refresh. Installation is a clone plus install.sh, and the app serves on http://localhost:3001; the server is local-only by default and rejects cross-site browser requests, untrusted WebSocket origins and non-loopback host access unless you deliberately pass --host 0.0.0.0 --unsafe-allow-remote together with per-origin --allowed-origin flags. The README states the HUD is verified against Hermes Agent v0.20.3 (state.db schema v26) with compatibility retained for schemas v16 and v23, and the Health tab's Agent data layout and Agent schema version checks flag drift from that baseline. Both the Web UI and the TUI can run side by side against the same data. The UI ships English and Chinese, five switchable themes, a command palette and a responsive tab bar.

The HUD reads ~/.hermes/ and the hermes CLI, using native filesystem events by default and polling when HERMES_HUD_FORCE_POLLING=1 is set for NFS, WSL1, VM shares or bind mounts. The Dashboard opens with an executive summary covering health, spend pulse, top model, provider/gateway risk, highest-cost session and action items; Health reacts to filesystem and WebSocket updates while expensive refresh paths stay throttled. Gateway visibility shows managed-tool routing for web search, image generation, text-to-speech and browser automation, marking each as routed through Nous Tool Gateway, a direct key, or unavailable, and the Update hermes action is deliberately two-click with last-run logs and status. The Plugin Hub lists installed dashboard and agent plugins, extension entry points, runtime status, required auth commands and safe enable/disable/update actions. Hermes Replay turns agent runs into redacted, shareable artifacts written locally under ~/.hermes-hud/replays/ — redacted JSON, GitHub-ready Markdown, standalone HTML, a 1200x630 PNG share card and fork-safe fork.json — carrying local hashes and Ed25519 signatures. Optional remote publishing syncs published replays to a static git host, with a public gallery index and unlisted replays reachable only through an unguessable hash path; it is off by default and includes only Safe Share Mode artifacts.

  1. An ops or platform engineer debugging a long-running Hermes agent uses the Health tab and its layout/schema checks to spot drift from the verified baseline.
  2. A cost-conscious solo developer uses the per-model token and cost analytics plus the highest-cost session callout to see where spend goes.
  3. Someone who needs to show what an agent run did exports a redacted JSON, HTML or PNG replay to attach to an issue or PR.
  4. A security-minded operator reviews the sudo governance and gateway managed-tool views to confirm which tools use Nous Tool Gateway, direct keys, or are unavailable.
  5. A Chinese-speaking or browser-first user skips the terminal TUI, switches the language toggle to Chinese and works through the command palette and themes.
  6. A developer building on the plugin ecosystem opens the Plugin Hub to inspect extension entry points, auth commands and runtime status before enabling or disabling.

How do you install or deploy this agent?

Prerequisites: Python 3.11+, Node.js 22.12+, and a running Hermes agent with data in ~/.hermes/.

git clone https://github.com/joeynyc/hermes-hudui.git
cd hermes-hudui
./install.sh
hermes-hudui

Then open http://localhost:3001. If you also want the TUI in the same environment (quotes are required in zsh):

pip install 'hermes-hudui[tui]'

How do you use this agent?

On later runs, activate the virtualenv first:

source venv/bin/activate && hermes-hudui

On NFS, WSL1, VM shares or bind mounts where filesystem events are unreliable, fall back to polling:

HERMES_HUD_FORCE_POLLING=1 hermes-hudui

To deliberately bind to a trusted LAN (the default is local-only and rejects cross-site requests and untrusted WebSocket origins):

hermes-hudui --host 0.0.0.0 --unsafe-allow-remote --allowed-origin https://hud.example.test

Shortcuts: 1–9 and 0 switch tabs, t opens the theme picker, Ctrl+K opens the command palette. The language toggle at the far right of the header switches English/Chinese and persists to localStorage. Put authentication and TLS in front of the HUD before exposing it beyond a trusted network.

What are this agent's strengths and limitations?

Pros
  • Reads the same ~/.hermes/ data directory as the TUI hermes-hud and can run alongside it, so you keep one data source.
  • Local-first security posture: cross-site browser requests and untrusted WebSocket origins are rejected, and remote binding requires explicit flags plus per-origin --allowed-origin entries.
  • Replay defaults to Safe Share Mode, redacting raw tool arguments, terminal output, assistant reasoning, token-like values, emails and local paths before writing share artifacts.
  • Gateway view distinguishes Nous Tool Gateway routing, direct keys and unavailable tools, and the Update hermes action is two-click with last-run logs and status.
  • Ships a bilingual English/Chinese UI, five themes, a command palette and a responsive tab bar that keeps the active tab in view.
Limitations
  • Tightly bound to Hermes: you must already run a Hermes agent with data in ~/.hermes/, so other agent stacks get nothing.
  • Needs both Python 3.11+ and Node.js 22.12+ and builds a virtualenv via install.sh, heavier than a plain pip install.
  • The README only claims verification against Hermes Agent v0.20.3 (schema v26) with v16 and v23 compatibility; other schemas depend on the Health checks to detect drift.
  • Export signatures (local hashes and Ed25519) prove local artifact integrity only, not third-party attestation.
  • Remote publishing requires you to configure a git repository and branch and to rely on your local git credentials; no hosted service is provided.

How does this agent compare with similar options?

The direct alternative named in the README is the author's own TUI hermes-hud: both independently read the same ~/.hermes/ data directory and you can use either one or both at once. The Web UI is fully standalone and adds tabs the TUI lacks — Memory, Skills, Sessions, Replay, Health, Providers, Gateway, Model and Plugins — plus per-model token and cost analytics, gateway managed-tool visibility, actionable diagnostics, a command palette, live chat and a theme switcher. If you already have the TUI, pip install 'hermes-hudui[tui]' enables it.

Key facts side by side with the most closely related agents.

Agent Source review Form / cost Stars Updated Language Full support on
Hermes HUD Web UI This agent 55 · Major gaps CLIFree + model costs ★ 1.8k 14d ago Python —
AgentOps 50 · Major gaps Library / SDKFreemium ★ 5.9k 3mo ago Python OpenAI API · Claude API
Arize Phoenix 61 · Some gaps CLIFreemium ★ 12k today Python OpenAI API · Claude API
AgentSight 77 · Some gaps CLIFree ★ 732 4d ago C Claude Code

How does FollowAgents rate this agent?

FollowAgents source review · FARS-2.1
Major gaps
55/ 100 5-point scale 2.8 / 5
Trust 17/29
Reliability 8/14
Adaptability 10/18
Convention 10/18
Effectiveness 7/13
Verifiability 3/8
Why each dimension lost points
Trust17 / 29 · 2.9/5

The README states the server is local-only by default, rejects cross-site requests and non-loopback access, and requires explicit --unsafe-allow-remote plus --allowed-origin for remote binding, which is a sound least-privilege and external-effects default (least_privilege=2, external_effects=2). The Update hermes action is deliberately two-click, and remote publishing is off by default and only triggered manually, supporting user confirmation (user_confirmation=2). Replay exports default to Safe Share Mode, redacting raw tool arguments, terminal output, reasoning, token-like values, emails, and local paths, and the README clarifies signatures prove local integrity only, giving real data-flow transparency and sensitive-data handling (data_flow_transparency=2, sensitive_data_handling=2). Dependencies are mainstream (fastapi, uvicorn, pyyaml, watchfiles, pillow, cryptography), and CI runs npm audit --audit-level=high and CodeQL, but there is no pip-audit or lockfile on the Python side, so dependency_security=2 rather than 3. Rollback is only implied by last-run logs/status for Update hermes; no version pinning, backup, or restore path is described, so rollback=1. Source attribution is limited to README and pyproject pointing at the same repo and author, with no upstream Hermes version pin or third-party provenance, so source_attribution=1. No malware, credential theft, covert exfiltration, or destructive defaults were found.

Reliability8 / 14 · 2.9/5

README and pyproject agree on Python 3.11+, Node 22.12+, port 3001, and the hermes-hudui CLI entry point; CI covers 3.11/3.12/3.13 and smoke-tests the wheel, so self-consistency is good (self_consistency=2). Dependencies are public PyPI packages installed via pip and npm ci, so availability is predictable (dependency_availability=2). However, apart from the Health tab's schema-drift checks, there is no concrete error text or recovery guidance for missing Hermes, empty data directories, or WebSocket disconnects, so failure_messages=1.

Adaptability10 / 18 · 2.8/5

The README clearly targets Hermes users and documents 19 tabs, themes, shortcuts, English/Chinese support, and macOS/Linux/WSL platforms, making audience and scenarios clear (audience_and_scenarios=2). Capability boundaries are stated: it only reads ~/.hermes/ and the hermes CLI, remote exposure requires adding auth and TLS, and Replay signatures are not third-party attestation (capability_boundaries=2). Trigger precision is weak: only tabs and shortcuts are described, with no criteria for when to use the HUD versus the TUI or CLI, so trigger_precision=1. Environment fit is good: HERMES_HUD_FORCE_POLLING=1 covers NFS/WSL1/VM shares, and schema v16/v23/v26 compatibility is declared (environment_fit=2).

Convention10 / 18 · 2.8/5

The README is well structured with Quick Start, feature sections, Replay, language, themes, shortcuts, TUI relationship, and platform support, giving solid information architecture (information_architecture=2). Install steps are concrete, including git clone, install.sh, venv activation, and the zsh quoting caveat (install_notes=2). Package, CLI, and data-directory naming are consistent (naming_stability=2). Examples are limited to screenshots and one redacted replay JSON, with no FAQ or troubleshooting (examples_and_faq=1). Known limitations are only mentioned in passing (schema drift, polling fallback) rather than consolidated (known_limitations=1). The LICENSE is full MIT text and pyproject declares license=MIT, so license=3. Version 0.12.0 exists but there is no CHANGELOG or release history (versioning_changelog=1). Maintenance responsibility points only to the author and an Issues link, with no governance or support commitment, and the publisher is unverified (maintenance_responsibility=1).

Effectiveness7 / 13 · 2.7/5

The output is a browser dashboard with an executive summary, cost, model analytics, and Replay exports (JSON/Markdown/HTML/PNG) that can be shared or attached to issues, so output usability is good (output_usability=2). Compared with the TUI it adds Memory, Skills, Sessions, Replay, Health, Providers, Gateway, Model, and Plugins tabs plus a command palette, giving clear marginal value (marginal_value=2). However, it requires a running Hermes agent, Node 22.12+, and Python 3.11+ with data in ~/.hermes/, and no performance or resource data is given, so cost_benefit=1.

Verifiability3 / 8 · 1.9/5

The README claims 'Verified against Hermes Agent v0.20.3 (state.db schema v26)', but no verification script, test output, or version pin in the repository traces that claim (claim_traceability=1). CI configuration and test files exist and partially corroborate the test process, but there is no independent third-party source or run result backing the functional claims (cross_source_corroboration=1). The README mixes factual statements with inferential or promotional phrasing (e.g., 'same soul', 'popular') without separating verified facts from marketing language (fact_inference_separation=1).

Risks and how to mitigate them
  • The README claims verification against Hermes Agent v0.20.3 (state.db schema v26), but no traceable verification script, test output, or version pin exists in the repository, so the claim cannot be independently confirmed.
  • No Python lockfile is provided and CI does not run pip-audit or equivalent Python dependency scanning, leaving supply-chain risk only partially covered by frontend npm audit and CodeQL.
  • Apart from the Health tab's schema-drift checks, there is no concrete error text or recovery guidance for missing Hermes, empty data directories, or WebSocket disconnects.
  • No version rollback, backup, or restore mechanism is described; Update hermes only shows last-run logs and status, so rollback capability is limited.
  • The publisher is unverified and maintenance responsibility or support commitments are unclear, creating uncertainty about long-term maintenance and update paths.
  • Remote publishing and remote binding are off by default, but once enabled the user bears responsibility for authentication and TLS configuration, and the README gives no concrete hardening steps.
Evidence confidence: Low Reviewed Oct 09, 2026 Reviewed revision 0a13c4fe46f6
See the full review method →

FAQ

Does it upload my agent's data anywhere?
No by default. The server is local-only, Replay writes artifacts to ~/.hermes-hud/replays/, and remote publishing is off by default and only syncs when you trigger it, including only Safe Share Mode artifacts; local filesystem paths and publish manifests never leave the machine.
Which Hermes and schema versions does it support?
The README states verification against Hermes Agent v0.20.3 (state.db schema v26) with compatibility retained for schemas v16 and v23. Because the HUD reads ~/.hermes/ and the hermes CLI directly, the Health tab's Agent data layout and Agent schema version checks flag any drift from that baseline.
Can I run it on NFS, in WSL, or in a container?
Platform support is macOS, Linux and WSL. It uses native filesystem events by default; for NFS, WSL1, VM shares or bind mounts that do not deliver events reliably, set HERMES_HUD_FORCE_POLLING=1 to poll instead.
How do I let colleagues on my LAN reach it safely?
Non-loopback access is rejected by default, so you must pass --host 0.0.0.0 --unsafe-allow-remote and add each browser origin with --allowed-origin https://...; the README says to put authentication and TLS in front of the HUD before exposing it beyond a trusted network.
Are replay exports proof of what my agent did?
They prove local artifact integrity only. Exports carry local hashes and Ed25519 signatures generated on your machine, which is explicitly not external third-party attestation, and the content is redacted under Safe Share Mode before writing.
View on GitHub ↗ Install ↓

Related agents