The Problem
Most agentic AI tools reset context every session. Users re-explain their environment, conventions, and preferences repeatedly. Hermes WebUI addresses this by providing a browser interface to Hermes Agent, a self-hosted agent with persistent memory, scheduled jobs, and cross-platform messaging. The core problem it solves: giving terminal-grade agent control from a phone or browser without sacrificing the agent's accumulated context.
What This Does
Hermes WebUI is a three-panel web application: session sidebar on the left, chat center, and workspace file browser on the right. The backend is Python (server.py, api/ with 20 modules covering auth, streaming, sessions, uploads, and providers). The frontend is vanilla JavaScript (static/ with 19 files) — no framework, no build step. The composer footer holds model, profile, and workspace controls, plus a token-usage ring.
The system claims near 1:1 parity with the Hermes CLI. It supports multiple providers (OpenAI, Anthropic, Google, DeepSeek, OpenRouter), profiles with environment isolation, session persistence, and a PWA manifest for mobile install. Docker deployment is the primary path, with three compose files for one-, two-, and three-container setups.
How To Use It
Setup: The repo uses pip with requirements.txt (no lockfile). Docker is the documented path — the Dockerfile and docker-compose.yml exist, with two- and three-container variants.
Configuration: Copy .env.example to .env and set your provider API keys. The bootstrap.py script handles initial setup, and dockerinit.bash prepares the container environment.
Running it: Docker (recommended) docker compose up -d
Or directly
pip install -r requirements.txt python server.py
Access via SSH tunnel: ssh -L 8080:localhost:8080 your-server. The README documents this single-command flow but does not include the exact tunnel command.
Real-World Use
A developer runs Hermes on a home server. They start the WebUI container, SSH-tunnel from their laptop, and access the agent from a phone while commuting. The agent has persistent memory of their projects, runs cron jobs that post results to Telegram, and can spawn Claude Code or Codex for heavy coding tasks. The WebUI gives the same control as the terminal — approving tool calls, browsing workspace files, switching profiles — without needing SSH from the phone.
Code Health & Issues
Med — No dependency lockfile: requirements.txt alone means non-reproducible builds; transitive dependency drift is likely. Add pip-tools or uv.lock. Med — 134 test files but no CI evidence beyond .github/workflows/tests.yml: The test suite is extensive (sprint-based naming suggests iterative development), but the workflow file needs verification that it actually runs in CI. Low — Heuristic issue flags: The analysis notes a potential issue with dependencies declared without a lockfile. No other concrete defects are evident from structure alone. Low — Security posture: The repo includes .env.example (good) and api/auth.py for password auth. The PWA manifest tests (testpwamanifestcsp.py, testpwamanifest_sw.py) suggest CSP and service worker concerns are addressed.
The codebase is unusually well-tested for a project this size — 134 test files covering regressions, locales, provider edge cases, and security. Documentation is solid (ARCHITECTURE.md, BUGS.md, TESTING.md). The main risk is dependency hygiene, not code quality.
The Bottom Line
A mature, well-tested web UI for Hermes Agent with strong feature parity and a clean vanilla-JS architecture. The lack of a lockfile is the primary maintenance concern. Best suited for existing Hermes users who want mobile or browser access — not for teams evaluating a new agent platform, since the value depends entirely on the Hermes backend.