Beautiful WebUI for Hermes Agent
Install • Features • Screenshots • Configuration • Development • Changelog
Pan is a self-hosted web dashboard for Hermes Agent. Chat with your agent, manage skills from skills.sh, control MCP integrations, inspect memory, and operate profiles — all from one place.
- Node.js 18+ installed
- Hermes Agent installed and configured (
~/.hermes)
npx @euraika-labs/pan-uiA setup wizard runs on first launch to connect Pan to your Hermes instance. After setup, open localhost:3199.
First time? The wizard auto-detects your Hermes home directory, API server, and installed binary. Just press Enter through the defaults to get started.
npx @euraika-labs/pan-ui start --daemon # Fork to background
npx pan-ui status # Check if running
npx pan-ui logs # Tail log output
npx pan-ui stop # Stop the daemonnpx @euraika-labs/pan-ui service install # Creates a systemd user service
npx pan-ui service remove # Uninstall itThe service starts on login and survives logout. Manage it with standard systemctl --user commands.
npx @euraika-labs/pan-ui@latestYour configuration in ~/.pan-ui/ is preserved across updates.
| Feature | Description |
|---|---|
| Chat | SSE streaming connected to a live Hermes runtime, with tool timelines, approval cards, and artifact rendering |
| Sessions | Unified session sidebar with source badges (CLI, Discord, Telegram, WhatsApp, …), source filtering, and cross-platform session resumption |
| Skills | Browse installed skills, discover and install 268+ more from skills.sh |
| Extensions | View MCP servers, their tools, health status, and diagnostics |
| Memory | Inspect and edit global and profile-scoped agent memory |
| Profiles | Isolated workspaces — each with its own sessions, skills, memory, and API keys |
| Operations | Approvals, run history, audit trails, telemetry, health monitoring, and exports |
| Daemon | Background process with PID management, log tailing, and systemd integration |
| Command | Description |
|---|---|
pan-ui / pan-ui start |
Start in foreground |
pan-ui start --daemon |
Start in background |
pan-ui start --port 8080 |
Override port |
pan-ui stop |
Stop daemon |
pan-ui status |
Show running state |
pan-ui logs |
Tail daemon logs |
pan-ui setup |
Re-run setup wizard |
pan-ui update |
Check for and install updates |
pan-ui sync-hermes |
Update vendored Hermes to pinned version |
pan-ui version |
Show current version |
pan-ui service install |
Install systemd service |
pan-ui service remove |
Remove systemd service |
pan-ui help |
Show CLI usage |
The setup wizard writes these to .env.local. You can also edit them directly or re-run npx pan-ui setup.
| Variable | Default | Description |
|---|---|---|
HERMES_HOME |
~/.hermes |
Hermes home directory |
HERMES_API_BASE_URL |
http://127.0.0.1:8642 |
Hermes API endpoint |
HERMES_API_KEY |
— | API key (if Hermes requires one) |
HERMES_WORKSPACE_USERNAME |
admin |
Login username |
HERMES_WORKSPACE_PASSWORD |
changeme |
Login password |
HERMES_WORKSPACE_SECRET |
(auto-generated) | Cookie signing secret |
HERMES_MOCK_MODE |
false |
Use mock data when runtime is unavailable |
PORT |
3199 |
Server port |
| Path | Purpose |
|---|---|
~/.pan-ui/pan-ui.pid |
Daemon PID file |
~/.pan-ui/pan-ui.log |
Daemon log output |
~/.config/systemd/user/pan-ui.service |
Systemd service unit (when installed) |
.env.local (in package dir) |
Configuration from setup wizard |
Pan runs as a standalone Next.js server that bridges your browser to the Hermes runtime. On startup it automatically launches the Hermes gateway if it isn't already running — no manual gateway setup required.
Browser ──── fetch / SSE ────▶ Pan (Next.js API routes)
│ │
▼ ▼
Hermes Gateway Hermes Filesystem
:8642 ~/.hermes/
(auto-managed) (skills, memory, profiles, state.db)
│
▼
Hermes Agent sessions
(tools, streaming, full agent capabilities)
- Gateway — Pan's startup hook detects whether the Hermes gateway is reachable. If not, it spawns
hermes gateway runas a child process with health monitoring and auto-restart. The gateway uses the active Hermes profile — no hardcoded names or paths. - Vendored Hermes — Pan pins a specific Hermes Agent version via
hermes.version.json. On first launch, if nohermesbinary is found, the setup wizard installs it from the Euraika-Labs/hermes-agent fork. Usepan-ui sync-hermesto update. - Chat streams through Hermes's OpenAI-compatible SSE endpoint
- Skills are read from
~/.hermes/skills/with YAML frontmatter parsing - Memory reads/writes
USER.mdandMEMORY.mdat global and profile scope - Profiles map to
~/.hermes/profiles/<name>/directories
Already running a gateway? Pan detects it and skips auto-launch. This works with systemd services, manual
hermes gateway run, or any external process on the configured port.
Want to contribute or run from source? See CONTRIBUTING.md for full setup instructions.
git clone https://github.com/Euraika-Labs/pan-ui.git
cd pan-ui
npm install
npm run dev| Command | Description |
|---|---|
npm run dev |
Dev server with hot reload |
npm run build |
Production build |
npm run lint |
ESLint |
npm run test |
Vitest unit tests |
npm run test:e2e |
Playwright end-to-end tests |
- Fixed fork session crash (missing
)in Python bridge) - Changed health probe decoupled from binary — Docker and headless deployments report full health status
- Added Docker test image with bundled Hermes Agent, Docker test suites (37 + 28 assertions), full-stack functional test (33 assertions),
.dockerignore
- Added vendored Hermes fork (
hermes.version.json), auto-install wizard,sync-hermes/update/versionCLI commands, update banner - Changed CLI refactored to subcommand structure, profile detection hardened
- Added automatic gateway management — Pan auto-starts and monitors the Hermes gateway on boot
- Changed simplified to single-process deployment (no separate gateway service needed)
- Added session source badges (CLI, Discord, Telegram, WhatsApp, …), source filter chips, resume button for external sessions
- Fixed skills Discover tab showing 0 skills, hydration mismatch
See SECURITY.md for reporting vulnerabilities.








