tang-hermes-dashboard

Self-hosted AI chat dashboard for Hermes Agent — multi-model web UI with multi-platform integration
2,185
Install
npm install tang-hermes-dashboard
Latest Version:0.7.0
Vue:3
License:BSL-1.1
Last Updated:Sep 2, 2026
Links: npm
Maintainer: tangzai

Tang Hermes Dashboard 中文

A desktop app, local runtime, and web console for Hermes Agent.
Chat with agents, build visual workflows, manage models and profiles,
browse the web, and keep everything local.

Download Tang Hermes Dashboard Desktop · Repository · npm install -g tang-hermes-dashboard && tang-hermes-dashboard start

npm version license gitee

Core Capabilities

Area What Tang Hermes Dashboard does
Agent chat Runs Hermes Agent conversations with streaming responses, tool traces, generated-file previews, persistent local sessions, and standalone desktop chat windows.
Local control plane Manages profiles, providers, models, credentials, memory, skills, plugins, logs, and runtime settings from one dashboard.
Automation Builds executable visual workflows and configures platform channels, cron jobs, Kanban tasks, group-chat rooms, and MCP servers around the same Hermes profiles.
Workspace tools Provides a file browser, web terminal, Desktop Agent Browser, voice input/output, Journey graph, and performance views.
Distribution Ships as a desktop app for Windows/macOS/Linux, an npm CLI package, and a Docker image.

Features

AI Chat

  • Real-time chat streaming over Socket.IO /chat-run; chat runs execute through the Hermes agent bridge
  • Multi-session management — create, rename, delete, switch between sessions
  • Self-built session database — local SQLite storage for Web UI sessions; Hermes state.db remains a read-only source for Hermes history APIs
  • Session grouping by source (Telegram, Discord, Slack, etc.) with collapsible accordion
  • Active session indicator — live sessions pin to top with spinner icon
  • Sessions sorted by latest message time
  • Markdown rendering with syntax highlighting and code copy
  • Tool call detail expansion (arguments / result)
  • Profile-scoped file uploads, clipboard image/file paste, and workspace attachments
  • File download support — download uploaded files and agent-generated files by resolved path across local, Docker, SSH, and Singularity backends
  • Inline previews for generated HTML, PDF, DOCX, PPTX, XLSX, CSV, images, Markdown, and source files
  • Session search — Ctrl+K search across the Web UI local session database; read-only Hermes history sessions are not included
  • Session categories, message references, compression progress, and durable background delegation results
  • Profile-aware model selector — discovers models available to the signed-in account through authorized Hermes profiles
  • Per-session model display badge and context token usage

Platform Channels

Unified configuration for 10 platforms in one page:

Platform Features
Telegram Bot token, mention control, reactions, free-response chats
Discord Bot token, mention, auto-thread, reactions, channel allow/ignore lists
Slack Bot token, mention control, bot message handling
WhatsApp Enable/disable, mention control, mention patterns
Matrix Access token, homeserver, auto-thread, DM mention threads
Feishu (Lark) App ID / Secret, mention control
DingTalk Client ID / Secret, mention control
QQBot App ID / Secret, mention control
WeChat QR code login (scan in browser, auto-save credentials)
WeCom Bot ID / Secret
  • Credential management writes to ~/.hermes/.env
  • Channel behavior settings write to ~/.hermes/config.yaml
  • Per-platform configured/unconfigured status detection

Usage Analytics

  • Total token usage breakdown (input / output)
  • Session count with daily average
  • Estimated cost tracking & cache hit rate
  • Model usage distribution chart
  • 30-day daily trend (bar chart + data table)

Scheduled Jobs

  • Create, edit, pause, resume, delete cron jobs
  • Trigger immediate execution
  • Cron expression quick presets

Kanban

  • Profile-aware Kanban board for planning and tracking agent work
  • Task creation, updates, and status movement from the dashboard
  • Shared with the same local Web UI state and authentication model

Visual Workflows

  • Vue Flow canvas for Hermes Agent nodes with file/image attachments
  • Directed edges, structured conditions, success/failure routes, loops, and approval gates
  • Import/export for portable workflow definitions and profile-aware workspaces
  • Run budgets, deadlines, stop/rerun controls, and persisted execution history
  • Frozen run snapshots, node conversations, edge decisions, and evidence playback on the canvas

Model Management

  • Auto-discover models from credential pool (~/.hermes/auth.json)
  • Fetch available models from each provider endpoint (/v1/models)
  • Add, update, and delete providers (preset and custom OpenAI-compatible)
  • OAuth/device flows for Nous Portal, xAI, Claude, and GitHub Copilot
  • Provider URL auto-detection for non-v1 API versions (e.g. /v4)
  • Provider-level model grouping, visible-model controls, aliases, refresh, and default switching
  • Separate STT and TTS provider catalogs under Models

Multi-Profile

  • Create, rename, delete, and switch between Hermes profiles
  • Clone existing profile or import from archive (.tar.gz)
  • Export profile for backup or sharing
  • Profile-scoped configuration, cache, uploads, sessions, jobs, usage, memory, skills, plugins, providers, and model visibility
  • Account-bound profile access: super administrators can manage every profile; regular administrators only see and use profiles assigned to their account

File Browser

  • Browse files on remote backends (local, Docker, SSH, Singularity)
  • Upload, download, rename, copy, move, and delete files
  • Store uploaded files under the selected/requested Hermes profile while keeping downloads path-based for agent-generated artifacts outside the upload directory
  • Create directories
  • Preview and edit supported files with syntax highlighting, then attach workspace files back to a chat

Group Chat

  • Multi-agent chat rooms with real-time messaging via Socket.IO
  • @mention routing — mention an agent to trigger a contextual reply
  • Context compression — automatic conversation summarization when history exceeds token threshold
  • Typing status and reply progress indicators
  • Room creation, deletion, and invite code management
  • Agent management — add/remove agents from rooms with per-agent profiles
  • SQLite message persistence
  • Mobile responsive with collapsible sidebar

Desktop Agent Browser

  • Desktop-only multi-tab browser that agents can navigate through the managed MCP server
  • Isolated browser profiles, per-tab control leases, proxy settings, downloads, cookies, and permissions
  • Accessibility snapshots, screenshots, console logs, and page annotations for agent-assisted browsing

Skills & Memory

  • Browse and search installed skills
  • View skill details and attached files
  • Install and manage Skill Bundles with profile-aware usage statistics
  • User notes and profile-scoped memory management
  • Interactive Journey graph for skill/memory relationships, category filtering, detail inspection, and playback

Theme Customization

  • Light/dark mode, interface style, base font size, text color, and active color
  • Per-account background images and live preview across the workspace

Logs

  • View agent / server / error logs
  • Filter by log level, log file, and keyword
  • Structured log parsing with HTTP access log highlighting

Admin & Runtime Management

  • MCP manager for the managed tang-hermes-dashboard server, profile injection, and api / browser / use toolsets
  • Runtime version tooling for testing newer builds in isolation
  • Performance monitor views for super administrators

Authentication

  • Token-based auth (auto-generated on first run or set via AUTH_TOKEN env var)
  • Username/password login with account management in Settings
  • Default bootstrap credentials are admin / 123456; users are prompted after login to change the default username and password
  • Super administrators can manage users and profile bindings; regular administrators can manage their own account details

CLI maintenance commands:

# Delete persisted login IP lock records
tang-hermes-dashboard clear-login-locks

# Delete login locks and restart the running Web UI process
tang-hermes-dashboard clear-login-locks --restart

# Create or reset the default super administrator login to admin / 123456
tang-hermes-dashboard reset-default-login

clear-login-locks removes ${HERMES_WEB_UI_HOME:-~/.hermes-web-ui}/.login-lock.json. If the server is running, restart it to clear in-memory lock state. reset-default-login updates the Web UI account database; if an admin user already exists, its password is reset to 123456 and the account is enabled as a super administrator.

Settings

  • Display (streaming, compact mode, reasoning, cost display)
  • Agent (max turns, timeout, tool enforcement)
  • Memory (enable/disable, char limits)
  • Session reset (idle timeout, scheduled reset)
  • Privacy (PII redaction)
  • Model settings (default model & provider)
  • Profile and provider configuration

Voice / TTS / STT

  • Manage voice providers under Models → STT and Models → TTS; existing Settings → Voice links redirect there.
  • TTS adapters: Edge, OpenAI-compatible, MiMo, Doubao, ElevenLabs, Gemini, xAI, Mistral, MiniMax, and DeepInfra.
  • STT adapters: Browser, OpenAI-compatible, Doubao, Groq, Mistral, xAI, ElevenLabs, and DeepInfra.
  • Use editable turn-based voice input from the chat mic, or open the full-screen real-time voice stage for a continuous voice-focused experience.
  • Provider keys and MiMo voice-clone audio stay server-side; the browser receives only masked secret status.
  • Starting a new voice turn stops current assistant playback first, but does not implicitly cancel an active agent run.
  • For supported settings, security notes, and current non-goals, see docs/voice-dialogue.md.
  • The real-time stage does not claim simultaneous full-duplex listen/speak; telephony and always-on wake-word listening remain out of scope.

Web Terminal

  • Integrated terminal powered by node-pty and @xterm/xterm
  • Multi-session support — create, switch between, and close terminal sessions
  • Real-time keyboard input and PTY output streaming via WebSocket
  • Window resize support

Desktop App

  • Native Electron shell for Windows, macOS, and Linux
  • Bundles the Web UI runtime and starts the local Tang Hermes Dashboard server automatically

Quick Start

Download the latest Tang Hermes Dashboard desktop installer from gitee Releases.

Desktop builds are published for macOS, Windows, and Linux, with separate architecture assets where applicable. The desktop app bundles the Web UI runtime and stores Hermes Agent data in the native Hermes location:

  • Windows: %LOCALAPPDATA%\hermes (falls back to %APPDATA%\hermes)
  • macOS/Linux: ~/.hermes

The desktop wrapper stores its own Web UI state separately in ~/.hermes-web-ui unless HERMES_WEB_UI_HOME is set.

After the packaged desktop app starts, it installs managed command shims so the desktop app, bundled Hermes Agent CLI, and bundled Web UI CLI do not conflict:

Command Description
tang-hermes-dashboard Open the Tang Hermes Dashboard desktop app
tang-hermes-dashboard cli ... Run the bundled Hermes Agent CLI
tang-hermes-dashboard web ... Run the bundled tang-hermes-dashboard command
tang-hermes-dashboard -h Show wrapper help

Use tang-hermes-dashboard cli -h for Hermes Agent CLI help and tang-hermes-dashboard web -h for Web UI CLI help.

npm

npm install -g tang-hermes-dashboard
tang-hermes-dashboard start

Open http://localhost:8648

Docker Compose

Single-container deployment with integrated Hermes Agent:

docker compose up -d --build

docker compose logs -f hermes-webui

Open http://localhost:6060

  • Persistent Hermes data is stored in ./hermes_data
  • Web UI auth token is stored in ./hermes_data/hermes-web-ui/.token
  • On first run with auth enabled, the token is printed to container logs
  • All runtime settings are environment-variable driven in docker-compose.yml

For detailed notes and troubleshooting, see docs/docker.md.

Hermes Agent Runtime Discovery

When Web UI starts backend chat features, it prefers a source checkout that contains run_agent.py such as ~/.hermes/hermes-agent. If no source checkout is found, it falls back to the Python environment used by the installed hermes command, then the system Python. This supports both source installs and package installs such as pip install hermes-agent.

Web UI Environment Variables

These variables configure Hermes Web UI, its local Hermes runtime integration, and development/preview helpers. Provider API keys and Hermes Agent settings are normally managed through Hermes profiles; environment variables here are process-level overrides.

Variable Default Description
PORT 8648 Web UI listen port.
BIND_HOST 0.0.0.0 Web UI bind host. Set :: explicitly for IPv6.
HERMES_WEB_UI_HOME ~/.hermes-web-ui Web UI data home for auth token, credentials, logs, DB, and default uploads. HERMES_WEBUI_STATE_DIR is also supported as a compatibility alias.
HERMES_WEBUI_STATE_DIR unset Compatibility alias for HERMES_WEB_UI_HOME.
UPLOAD_DIR $HERMES_WEB_UI_HOME/upload Upload root override. Files are stored below profile-scoped subdirectories.
CORS_ORIGINS same host only Comma- or space-separated cross-origin allowlist for HTTP, Socket.IO, and WebSocket requests. Set * only when you intentionally need legacy wildcard CORS.
AUTH_TOKEN auto-generated Explicit bearer token. If unset, Web UI creates one under HERMES_WEB_UI_HOME.
AUTH_JWT_SECRET AUTH_TOKEN JWT signing secret override for username/password sessions.
HERMES_WEB_UI_AUTH_JWT_EXPIRES_IN 30d Username/password session JWT lifetime. Accepts seconds or s/m/h/d suffixes, for example 12h or 7d.
PROFILE default Startup/default Hermes profile. Runtime requests use the profile selected by the frontend and authorized for the current account.
LOG_LEVEL info Server log level.
BRIDGE_LOG_LEVEL $LOG_LEVEL or info Bridge log level.
MAX_DOWNLOAD_SIZE 200MB Maximum file download size.
MAX_EDIT_SIZE 10MB Maximum editable file size.
WORKSPACE_BASE current user's home directory Base directory for workspace browsing.
HERMES_HOME platform default Hermes data home. Windows uses %LOCALAPPDATA%\hermes; macOS/Linux uses ~/.hermes.
HERMES_BIN hermes Custom Hermes CLI binary path.
HERMES_AGENT_ROOT auto-discovered Hermes Agent source checkout containing run_agent.py.
HERMES_AGENT_BRIDGE_PYTHON auto-discovered Python interpreter used to launch the agent bridge.
HERMES_AGENT_BRIDGE_UV auto-discovered uv executable used to launch the agent bridge when available.
UV auto-discovered Fallback uv executable path.
PYTHON auto-discovered Fallback Python executable for the agent bridge.
HERMES_AGENT_BRIDGE_ENDPOINT platform default Agent bridge broker endpoint. Windows defaults to tcp://127.0.0.1:18765; macOS/Linux defaults to ipc:///tmp/hermes-agent-bridge.sock.
HERMES_AGENT_BRIDGE_TIMEOUT_MS 120000 Timeout for Node requests to the bridge broker.
HERMES_AGENT_BRIDGE_CONNECT_RETRY_MS 5000 Short retry window for connecting to the bridge socket.
HERMES_AGENT_BRIDGE_STARTUP_TIMEOUT_MS 120000 Timeout while waiting for the Python bridge to become ready.
HERMES_AGENT_BRIDGE_STOP_ON_SHUTDOWN enabled Stop the bridge broker during Web UI shutdown and restart. Set 0, false, no, or off to keep the bridge across restarts.
HERMES_AGENT_BRIDGE_AUTO_RESTART enabled Auto-restart the bridge broker after unexpected exit. Set 0, false, no, or off to disable.
HERMES_AGENT_BRIDGE_RESTART_DELAY_MS 1000 Base delay for bridge auto-restart backoff.
HERMES_AGENT_BRIDGE_PLATFORM cli Platform identity passed to Hermes Agent.
HERMES_AGENT_BRIDGE_WORKER_TRANSPORT platform default Profile worker transport. Set tcp for loopback TCP or ipc/unix for Unix domain sockets; defaults to Windows TCP and macOS/Linux IPC.
HERMES_AGENT_BRIDGE_WORKER_PORT_BASE 18780 Base port for TCP worker endpoints.
HERMES_BRIDGE_PROVIDER profile/default Provider override for bridge runs.
HERMES_BRIDGE_TOOLSETS profile/default Toolset override for bridge runs.
HERMES_BRIDGE_MAX_TURNS profile/default Maximum turn override for bridge runs.
HERMES_BRIDGE_SUPPRESS_PLATFORM_HINT cli Controls bridge platform hint suppression passed to Hermes Agent.
HERMES_OPENROUTER_APP_REFERER https://gitee.com/tangtang_6/tang-hermes-dashboard OpenRouter attribution referer sent by bridge runs.
HERMES_OPENROUTER_APP_TITLE Tang Hermes Dashboard OpenRouter attribution title sent by bridge runs.
HERMES_OPENROUTER_APP_CATEGORIES cli-agent,personal-agent OpenRouter attribution categories sent by bridge runs.
HERMES_WEB_UI_MANAGED_GATEWAY enabled Controls Web UI-managed Hermes gateway process handling. Set 0, false, no, or off to use hermes gateway start instead.
HERMES_WEB_UI_DISABLE_GATEWAY_AUTOSTART unset Skip startup gateway checks/autostart. Set 1, true, yes, or on for dashboard-only deployments where another service owns Hermes gateway lifecycle.
HERMES_WEB_UI_DISABLE_SKILL_INJECTION unset Skip startup bundled skill injection. Set 1, true, yes, or on when bundled skills are managed outside Hermes Web UI. When injection is enabled, Web UI updates only skills it previously installed or identical existing bundled copies; local edits and user-owned same-name skills are skipped.
HERMES_WEB_UI_STOP_GATEWAYS_ON_SHUTDOWN disabled Controls whether Web UI shutdown also stops managed gateway processes. Hermes owns the gateway lifecycle, so Web UI shutdown leaves gateways running by default. Set 1 or true to stop them on shutdown.
HERMES_GATEWAY_URL / GATEWAY_URL unset Explicit Hermes gateway upstream URL for proxy routes.
GATEWAY_HOST 127.0.0.1 Default Hermes gateway upstream host for proxy routes.
GATEWAY_PORT 8642 Default Hermes gateway upstream port for proxy routes.
HERMES_WEB_UI_BACKEND_PORT 8648 Backend port used by the Vite dev proxy.
HERMES_WEB_UI_FRONTEND_PORT 8649 Frontend Vite dev server port.
HERMES_WEB_UI_VERSION_MANIFEST_URL unset Custom remote version manifest (JSON with hermes/webui version arrays). When unset, the Runtime versions page lists the latest tang-hermes-dashboard from the npm registry and Web UI downloads come from npm.
HERMES_WEB_UI_NPM_REGISTRY https://registry.npmjs.org npm registry used by the desktop Runtime versions page for Web UI downloads. The version check and the update/upgrade install always use the official registry and ignore this.
HERMES_WEB_UI_DOWNLOAD_GITHUB_REPO unset GitHub repo (owner/repo) whose releases host Hermes runtime and Web UI archives. When set, the Runtime versions page offers GitHub downloads.
HERMES_WEB_UI_DOWNLOAD_BASE_URL unset Base URL that hosts <tag>/<asset> Hermes runtime and Web UI archives (Cloudflare-style source). When set, the Runtime versions page offers Cloudflare downloads.

CLI Commands

Command Description
tang-hermes-dashboard start [port] Start in background; accepts a positional port or --port <port>
tang-hermes-dashboard client [port] Start for a remote client with gateway autostart disabled and permissive CORS
tang-hermes-dashboard restart [port] Restart; stops the bridge by default
tang-hermes-dashboard stop Stop the background process
tang-hermes-dashboard status Check if running
tang-hermes-dashboard clear-login-locks [--restart] Clear persisted login locks, optionally restart
tang-hermes-dashboard reset-default-login Create or reset the default administrator login
tang-hermes-dashboard update / upgrade Update to the latest version and restart
tang-hermes-dashboard version / -v Show the version
tang-hermes-dashboard -h Show help

Add --no-open to start or client when no browser should open.

restart, update, and upgrade stop the Agent Bridge broker by default so restarted or updated servers do not reuse stale Python bridge processes. Set HERMES_AGENT_BRIDGE_STOP_ON_SHUTDOWN=0 before restarting only when you explicitly want to keep the bridge broker and running bridge sessions alive.

update / upgrade first attempt npm cache clean --force, then run npm install -g tang-hermes-dashboard@latest --registry=https://registry.npmjs.org and restart. Cache cleanup is best-effort; if it fails, the updater continues with the install. The install (and the version check shown in the sidebar) are pinned to the official npm registry and ignore the machine's npm registry config — mirrors that lag behind (e.g. registry.npmmirror.com) cannot deliver a stale latest. After the install, the CLI prints the installed version; if the version did not change, the update is considered a no-op and the restart is skipped. When the package version does change, the service is restarted automatically (the npm postinstall hook also restarts a running daemon after a manual npm install -g).

Auto Configuration

On startup the BFF server automatically:

  • Initializes Web UI data directories, local databases, and bundled skills
  • Starts the Hermes agent bridge used by /chat-run
  • Opens a browser on successful startup unless --no-open is set

Development

git clone https://gitee.com/tangtang_6/tang-hermes-dashboard.git
cd tang-hermes-dashboard
npm install
npm run dev
npm run build   # outputs to dist/

See DEVELOPMENT.md for project development guidelines.

Architecture

Browser → BFF (Koa, :8648) → Socket.IO /chat-run
                ↓
        Hermes agent bridge → Hermes Agent runtime
                ↓
           Hermes CLI / profiles
           profile config.yaml    (channel/provider behavior)
           profile auth.json      (credential pool)
           Tencent iLink API      (WeChat QR login)

The frontend is designed with multi-agent extensibility — all Hermes-specific code is namespaced under hermes/ directories (API, components, views, stores), making it straightforward to add new agent integrations alongside.

The BFF layer handles Socket.IO chat streaming, the Hermes agent bridge, profile-aware file upload and path-based download (multi-backend: local/Docker/SSH/Singularity), session CRUD, account- and profile-scoped management, config/credential management, WeChat QR login, model discovery, skills/memory/plugin management, TTS/STT, MCP/runtime management, log reading, and static file serving.

Tech Stack

Frontend: Vue 3 + TypeScript + Vite + Naive UI + Pinia + Vue Router + vue-i18n + SCSS + markdown-it + highlight.js

Backend: Koa 2 (BFF server) + node-pty (web terminal)

What's New in 0.6.45

This release syncs upstream Hermes Studio 0.6.47 → 0.7.13, selecting only Hermes-common features (43 upstream commits). Ekko / Coding Agents / CodeX / Claude Code / Pi are not included.

Key additions:

  • Upgrade crash isolation — bootstrap no longer aborts when optional upgrade steps fail
  • Process-tree cleanup — taskkill /T /F and SIGKILL -pgid consolidated into a single module
  • Pending Interaction timeout — server-side tracker (30s default) + client-side countdown UI on approval / clarify panels
  • Group-chat Hermes-only — agent picker collapsed to Hermes; non-Hermes legacy values coerced safely
  • Dead i18n cleanup — chat.emptyStateAgent, groupChat.agentTypes.{ekko,codex,claude}, usage.agents.claudeCode pruned from en/zh/ar
  • Harness guard — harness:check now runs check-coding-agents-leftovers.mjs and check-i18n-shape.mjs

See docs/CHANGELOG.md for the full diff. 22 new tests.

License

BSL-1.1

The license covers Tang Hermes Dashboard, the former Hermes Web UI name, the tang-hermes-dashboard npm package and CLI, desktop applications, release artifacts, documentation, and associated files in this repository.

Related Packages

@quanthermes/hermes-web-ui

Self-hosted AI chat dashboard for Hermes Agent — multi-model web UI with multi-p...

8,907 2
@illli-studio/studio

Self-hosted AI chat dashboard for Hermes Agent — multi-model web UI with multi-p...

1,416
hermes-web-ui

Ekko Studio is a local-first AI workspace for multi-agent chat, coding, and visu...

455,248 11,504
ekko-studio

Ekko Studio is a local-first AI workspace for multi-agent chat, coding, and visu...

3,980 11,506
@aparte/core

AI chat and agent UI components as Web Components, with the agent loop inside —...

12,040 0

Version History

Version Released Vue License
0.7.0 ^3.5.32 BSL-1.1
0.6.44 ^3.5.32 BSL-1.1
0.6.43 ^3.5.32 BSL-1.1
0.6.42 ^3.5.32 BSL-1.1
0.6.41 ^3.5.32 BSL-1.1