by sanchomuzax
Process monitoring and configuration dashboard for Hermes Agent
# Add to your Claude Code skills
git clone https://github.com/sanchomuzax/hermes-webuiNo comments yet. Be the first to share your thoughts!
Process monitoring and configuration dashboard for Hermes Agent.

config.yaml and environment variables (read-only for safety)| Dashboard | Sessions |
|---|---|
|
|
|
| Config | Cron Jobs |
|---|---|
|
|
|
| Skills |
|---|
|
|
~/.hermes/git clone https://github.com/sanchomuzax/hermes-webui.git
cd hermes-webui
python3 -m venv venv
source venv/bin/activate
pip install -e .
cd frontend
npm install
npx vite build
cd ..
hermes-webui
Or directly:
python -m webui
Output:
Starting Hermes WebUI at http://0.0.0.0:8643
Auth token: <your-auth-token>
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'])"
| 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 |
| Flag | Description |
|---|---|
| --localhost | Bind to 127.0.0.1 only (not accessible from LAN) |
| --port PORT | Override the default port |
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.jsonas shown above.
┌─────────────────────────────────────────┐
│ 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.
state.db)| 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 |
0.0.0.0 (default), not 127.0.0.1~/.hermes/state.db exists)state.db in read-only mode — if the agent is actively writing, there may be a brief WAL lock delaystate.db every 3 secondsThis project was vibe-coded with Claude Code (Claude Opus 4.6).
MIT