Hermes HUD Web UI
A browser-based consciousness monitor for your Hermes agent's health, memory, spend and run history.
- Source repo
- joeynyc/hermes-hudui
- Stars
- ★ 1.8k
- Last updated
- 14d ago
- License
- MIT
- Primary language
- Python
- FA score
- 55/100 · Major gaps
At a glance
- How it runs
- Works with
- Platform-specific
- Cost
- Free software; you pay for model usage
- Setup effort
- Medium · a few setup steps
- You'll need
- 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
- Source review
- 55/100 · Major gaps
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.
- 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.
- A cost-conscious solo developer uses the per-model token and cost analytics plus the highest-cost session callout to see where spend goes.
- 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.
- 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.
- 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.
- 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-huduiThen 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-huduiOn NFS, WSL1, VM shares or bind mounts where filesystem events are unreliable, fall back to polling:
HERMES_HUD_FORCE_POLLING=1 hermes-huduiTo 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.testShortcuts: 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?
- 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.
- 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?
Why each dimension lost points
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.
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.
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).
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).
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.
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).
- 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.