hermes-webui

Process monitoring and configuration dashboard for Hermes Agent

β˜… 81 Python Updated 3/24/2026
View on GitHub β†’ Homepage

Hermes WebUI

Process monitoring and configuration dashboard for Hermes Agent.

Dashboard

Features

Screenshots

Dashboard Sessions
Dashboard Sessions
Config Cron Jobs
Config Cron
Skills
Skills

Requirements

Installation

1. Clone the repository

git clone https://github.com/sanchomuzax/hermes-webui.git
cd hermes-webui

2. Set up Python environment

python3 -m venv venv
source venv/bin/activate
pip install -e .

3. Build the frontend

cd frontend
npm install
npx vite build
cd ..

4. Run

hermes-webui

Or directly:

python -m webui

Output:

Starting Hermes WebUI at http://0.0.0.0:8643
Auth token: <your-auth-token>

5. Log in

Open http://<your-host>:8643 in a browser and paste the auth token shown in the console output.

The token is generated once and stored in ~/.hermes/auth.json. To retrieve it later:

python3 -c "import json; print(json.load(open('$HOME/.hermes/auth.json'))['webui_token'])"

Configuration

Environment Variable Default Description
HERMES_HOME ~/.hermes Hermes Agent installation directory
HERMES_WEBUI_HOST 0.0.0.0 Bind address
HERMES_WEBUI_PORT 8643 Port

CLI flags

Flag Description
--localhost Bind to 127.0.0.1 only (not accessible from LAN)
--port PORT Override the default port

Running as a systemd service

Create /etc/systemd/system/hermes-webui.service:

[Unit]
Description=Hermes WebUI
After=network.target

[Service]
Type=simple
User=YOUR_USER
WorkingDirectory=/home/YOUR_USER/.hermes/hermes-webui
ExecStart=/home/YOUR_USER/.hermes/hermes-webui/venv/bin/python -m webui
Restart=on-failure
RestartSec=5
Environment=HERMES_HOME=/home/YOUR_USER/.hermes

[Install]
WantedBy=multi-user.target

Then enable and start:

sudo systemctl daemon-reload
sudo systemctl enable hermes-webui
sudo systemctl start hermes-webui

Check status:

sudo systemctl status hermes-webui
journalctl -u hermes-webui -f

Note: When running as a service, the auth token is not printed to your terminal. Retrieve it from ~/.hermes/auth.json as shown above.

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  React Frontend (Vite + TailwindCSS)    β”‚
β”‚  SPA with TanStack Query + WebSocket    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                 β”‚ HTTP + WS
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  FastAPI Backend (Python)               β”‚
β”‚  β”œβ”€ REST API (sessions, config, cron)   β”‚
β”‚  β”œβ”€ WebSocket hub (live events)         β”‚
β”‚  └─ Polling bridge (state.db + files)   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                 β”‚ SQLite (read-only) + YAML
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Hermes Agent (unmodified)              β”‚
β”‚  state.db, config.yaml, gateway_state   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Hermes WebUI reads from the agent's data files without modifying the agent's core code.

Tech Stack

Pages

Page Description
Dashboard KPI cards (sessions, messages, cost, gateway), platform badges, activity feed with live session list, model distribution
Sessions Paginated session list with FTS5 search, source filter tabs, click into any session to view full message history
Config Read-only view of config.yaml sections and .env variables (sensitive values masked)
Cron List of scheduled cron jobs with status, schedule, and prompt preview
Skills Grid of built-in and custom skills with description, click to view full source

Troubleshooting

"Cannot connect to server" on login

Dashboard shows no sessions

Activity Feed not updating

Related

Built With

This project was vibe-coded with Claude Code (Claude Opus 4.6).

License

MIT