Deep Dive: Hermes Web UI Comparison – Vue Dashboard vs. Python Lightweight Terminal
Core Question: What are the fundamental architectural and functional differences between the full-featured Vue dashboard and the native Python lightweight interface when building a visual control center for Hermes Agent?
As Hermes Agent matures into an autonomous AI entity with persistent memory and execution capabilities, the community has birthed two distinct Web UI implementations. One is the modern, full-stack Hermes Web UI (referred to here as the “Vue Version”), which pursues a comprehensive dashboard experience. The other is the native, lightweight Hermes WebUI (referred to as the “Python Version”), which pursues extreme minimalism and a 1:1 CLI replication.
Based strictly on the technical documentation and feature descriptions of these two projects, this article provides a comprehensive horizontal comparison across four dimensions: underlying architecture, feature matrix, interaction design, and deployment operations. This analysis is designed to help technical decision-makers and developers select the most suitable tool for specific scenarios.
Architecture Philosophy & Technology Stack Comparison
Core Question: What is the fundamental divergence in the underlying architecture design of these two Web UIs, and what does this imply for system maintainability and extensibility?
Architecture determines the upper limit of capability. The Vue Version and the Python Version represent two completely different engineering philosophies: the former tends to build a loosely coupled, visualized “console,” while the latter tends to build a tightly coupled, seamlessly integrated “companion.”
1. Tech Stack & Runtime Environment
| Dimension | Hermes Web UI (Vue Version) | Hermes WebUI (Python Version) |
|---|---|---|
| Language | TypeScript (Frontend) + Node.js (Backend BFF) | Python (Full Stack) + Vanilla JS (Frontend) |
| Frontend Framework | Vue 3 + Vite + Naive UI + Pinia | No Framework, Native HTML/JS/CSS |
| Backend Framework | Koa 2 (BFF Layer) | Built-in Python HTTP Server (server.py) |
| Core Dependencies | node-pty (Terminal), markdown-it, SCSS |
Prism.js (Highlighting), No Frontend Build Tools |
| Build Process | Requires npm install & npm run build |
Zero Build, Direct Python Script Execution |
Technical Selection Analysis:
The Vue Version embraces the trend of modern front-end engineering. Using Vue 3 and TypeScript means the code has strong type constraints and componentized reusability, making it suitable for multi-person collaboration and complex UI development. Its introduction of the BFF (Backend for Frontend) layer, using the Koa framework as an intermediate proxy, cleans and reorganizes the complex interfaces of the Hermes Gateway, serving them specifically for the frontend.
The Python Version adheres to the principle of “simplicity is power.” The frontend has no bundlers; what loads is the source code. Its backend is essentially a lightweight Python web server that directly imports Hermes Agent modules within the process. This design eliminates serialization overhead from HTTP communication, theoretically offering better performance and debugging convenience.
2. Data Flow & Integration Mode
Vue Version Architecture Flow:
Browser → BFF (Koa, :8648) → [Proxy/Rewrite] → Hermes Gateway (:8642) → CLI
↓
Config/Credential Mgmt
Python Version Architecture Flow:
Browser → server.py (Auth/Routing) → [Direct Import] → Hermes Agent Modules
↓
Direct File/Config Access
Author Reflection:
When comparing these two architectures, I noticed an interesting divergence: the Vue Version treats Hermes as an “external service” to be managed, interacting via API. The Python Version, however, views itself as a “part” of Hermes. This implies that if you intend to deeply modify Agent logic and reflect it in the UI, the Python Version has a lower development barrier because the frontend and backend share the same Python context. However, if you wish to deploy the UI on a separate machine or update the UI independently of the Agent, the Vue Version’s BFF architecture offers significantly better decoupling.
Feature Matrix & Deep Business Showdown
Core Question: When facing specific Agent management needs (like channel configuration, file operations, task monitoring), how do the functional coverage and implementation depth of the two versions differ?
While both offer basic chat, session management, and settings, there are significant differences in focus within specific domains.
1. Platform & Channel Management
Vue Version: The Strong Unified Configuration Center
The Vue Version excels in platform management, providing a single page to configure 8 mainstream platforms (Telegram, Discord, Slack, WhatsApp, Matrix, Feishu, WeChat, WeCom).
-
Key Features: -
Visual Configuration Forms: Instead of hand-writing YAML, you input Bot Tokens, App IDs, etc., via forms. -
Auto Gateway Restart: The system automatically triggers a Gateway restart upon config changes, requiring no manual intervention. -
Status Detection: Real-time display of whether each platform is configured or unconfigured. -
Platform Specifics: E.g., auto-reply threads for Discord, App ID/Secret management for Feishu.
-
Python Version: The Minimalist Dependent on Config Files
The Python Version lacks a standalone, complex channel configuration page. It relies more on Hermes’ native config.yaml file. While modification is possible through the Settings panel, its core philosophy is “what you see is what you get”—an extension of the CLI rather than a graphical configuration wizard.
2. File Browsing & Workspace Integration
Python Version: The Master of Three-Pane Layout
This is the Python Version’s proudest highlight. It employs a classic three-pane layout: left for sessions, center for chat, and right for file browsing.
-
Key Features: -
Inline Preview & Editing: Direct preview and editing of text, code, Markdown (rendered), and images. -
File Operations: Create, delete, rename files and folders directly in the browser. -
Git Integration: The file browser header displays the Git branch name and a dirty file count badge. -
Breadcrumb Navigation: Clear path navigation with clickable segments.
-
Vue Version: Basic Support via Skills & File Browsing
The Vue Version also offers skill browsing and attachment management, but its file interaction is mostly done via upload/download, lacking the deep, IDE-like file editing experience found in the Python Version.
Photo by Clément Hélardot on Unsplash
3. Terminal & System Interaction
Vue Version: Integrated Web Terminal
The Vue Version integrates node-pty and @xterm/xterm in the backend to provide a fully functional terminal directly on the webpage.
-
Scenario Value: This means you can execute Shell commands, view system logs, or run scripts directly in the browser interface while managing the Agent, without opening another window via SSH. It supports multi-session, window resizing, and full-color PTY output.
Python Version: Execution via Tool Calls
The Python Version does not have a dedicated Terminal window. Instead, it allows the Agent to execute Shell commands via tool calls, displaying results in the chat stream. This mode is better suited for “letting the AI operate for you” rather than “operating it yourself.”
4. Monitoring, Analytics, & Logs
Vue Version: Data Visualization Dashboard
The Vue Version includes a powerful “Usage Analytics” module.
-
Core Metrics: Total Token usage (input/output), session counts, daily averages. -
Charting: 30-day daily trend charts (bar charts), model usage distribution charts. -
Cost Tracking: Estimated cost tracking and cache hit rate analysis. -
Log Viewing: Structured log parsing, filtering by level/file/keyword, and highlighting HTTP access logs.
Python Version: Text-Based Statistical View
The Python Version provides a /usage command to view Token statistics and displays input/output Token counts and estimated costs per turn in the UI. While lacking complex charts, its immediacy and information density are sufficient for technical users.
5. Sessions & CLI Bridge
Python Version: Native CLI Session Bridge
The Python Version features a unique “CLI Session Bridge.” It reads CLI sessions directly from the Hermes Agent’s SQLite store and displays them in the Web UI sidebar (with a gold “cli” badge).
-
Scenario Value: This means a session you started in the terminal can be continued directly in the web browser, achieving true cross-platform session synchronization.
Vue Version: Source Grouping & Accordion Menus
The Vue Version supports grouping sessions by source (e.g., Telegram, Discord) using collapsible accordion menus. This is very useful for managing bot sessions coming from different channels.
User Experience & Interface Design (UX/UI) Comparison
Core Question: What are the characteristics of the visual presentation and interaction logic of the two versions, and which user habits do they serve?
1. Layout & Visual Style
Vue Version: Modern Management Console
-
Style: Adopts a modern management backend style, predominantly dark-themed, with a refined interface using extensive cards, icons, and micro-interactions. -
Layout: Typically a classic sidebar navigation + content area. -
Component Library: Built on Naive UI, meaning it possesses standard form controls, dropdowns, modals, and Toast notifications with a smooth and consistent interaction experience.
Python Version: Tool-Oriented Editor Style
-
Style: Minimalist, compact interface emphasizing information density. Defaults to Dark mode but also supports Light, Nord, Monokai, and 7 other themes (including a pure black theme optimized for OLED). -
Layout: The iconic three-pane layout keeps chat, code/preview, and file management within the field of view simultaneously, similar to the VS Code split-screen experience. -
Responsiveness: Excellent mobile adaptation; the sidebar becomes a hamburger menu, and the file panel becomes a slide-over drawer.
2. Interaction Details
-
Markdown Rendering: Vue Version uses markdown-it; Python Version uses customrenderMd. Both support syntax highlighting and code copying. -
Streaming: Both support SSE (Server-Sent Events) for streaming output. Vue Version supports async running; Python Version supports auto-reconnect during network blips. -
Voice Input: Python Version integrates a microphone button in the input box, utilizing the Web Speech API for speech-to-text, which is very friendly for mobile users.
Photo by Ilya Pavlov on Unsplash
Deployment, Operations, & Ecosystem
Core Question: In different production environments (personal PC, server, container cluster), how do the deployment difficulty and operational costs of the two versions differ?
1. Installation & Startup Process
Vue Version: Node.js Ecosystem
npm install -g hermes-web-ui
hermes-web-ui start
It also provides a one-click installation script that automatically detects the OS and installs Node.js. For developers familiar with npm, this is the most natural way. It also provides Docker Compose configuration to orchestrate with the Agent in one click.
Python Version: Bootstrap Guide
python3 bootstrap.py
This script is highly intelligent. It automatically detects if the Hermes Agent exists, finds or creates a Python virtual environment, starts the service, and opens the browser. It doesn’t require users to pre-handle complex dependency relationships, making it very suitable for users unfamiliar with Python environment configuration.
2. Docker & Containerization
Both versions offer robust Docker support, but with slightly different strategies.
Vue Version:
-
Provides standard Dockerfile and docker-compose.yml. -
Data persists in ./hermes_data. -
Supports overriding configuration via environment variables.
Python Version:
-
Provides pre-built images to GHCR. -
Emphasizes UID/GID Matching: The documentation specifically details how to solve mounted volume permission issues via -e WANTED_UID=$(id -u), which is crucial in multi-container orchestration (e.g., running Agent and WebUI together). -
Provides examples of two-container and three-container Compose files, showing how to coexist with hermes-dashboard.
3. Security & Remote Access
Both face similar security challenges, and the solutions are highly consistent:
-
SSH Tunnel: Recommended for accessing the localhost port via SSH tunnel. -
Tailscale: Both support pairing with Tailscale for intranet penetration and access on mobile devices. -
Password Auth: Both support enabling simple HTTP password protection via environment variables (like HERMES_WEBUI_PASSWORD). Vue Version uses HMAC cookies; Python Version implements a similar mechanism.
Comprehensive Comparison Summary Table
To visualize the differences more clearly, here is a detailed feature comparison matrix based strictly on the input documentation:
| Feature | Hermes Web UI (Vue Version) | Hermes WebUI (Python Version) | Scenario Assessment |
|---|---|---|---|
| Core Positioning | Full-featured Dashboard & Console | 1:1 Web Clone of CLI | Vue for management, Python for operations |
| Tech Stack | Vue 3, TS, Node.js, Koa | Vanilla JS, Python, No Framework | Vue for frontend teams, Python for Python devs |
| Platform Config | Very High (8 platforms, unified UI forms) | Low (Config file dependent) | Choose Vue for frequent multi-channel config |
| File Management | Basic (Upload/Download) | Very High (3-pane browser, inline edit, Git) | Choose Python for editing code while chatting |
| Web Terminal | Yes (node-pty, multi-session) |
No (Via Agent tool calls) | Choose Vue for direct Shell operations |
| Data Analytics | Very High (Charts, cost tracking, 30-day trends) | Medium (Text stats, per-turn cost) | Choose Vue for reporting Token costs |
| CLI Session Bridge | No | Yes (SQLite import, cli badge) | Choose Python to bridge CLI/Web experience |
| Model Management | High (Auto-discovery, add providers) | High (Dynamic dropdown, multi-provider) | Both good, Vue interface prettier |
| Voice Input | Not mentioned | Yes (Web Speech API) | Choose Python for mobile input scenarios |
| Theming | Not detailed | Rich (7 built-in, supports custom) | Choose Python for personalized display |
| Deployment Difficulty | Low (npm or Docker) | Very Low (Auto-detect bootstrap) | Both simple, Python more tolerant of envs |
Practical Selection Advice
Core Question: Based on the above comparison, how should one make a choice based on team configuration and application goals in actual work?
Choose Hermes Web UI (Vue Version) When:
-
Multi-Platform Ops Management: If you need to manage a complex Agent connected to multiple channels like Telegram, Discord, and Slack, the unified configuration interface of the Vue Version significantly reduces error rates. -
Cost Control & Monitoring: If your project is sensitive to API call costs and needs to display detailed Token usage charts and trends to clients or the team, the Analytics module in the Vue Version is irreplaceable. -
Remote Server Management: If you frequently need to execute Shell commands directly in the browser to restart services or view logs without opening multiple SSH terminals, the built-in Web Terminal of the Vue Version will greatly improve efficiency.
Choose Hermes WebUI (Python Version) When:
-
Coding Assistance & Development: If you use Hermes as a coding assistant and need to frequently browse and modify project files, the three-pane layout and online file browser of the Python Version provide an experience close to an IDE. -
High-Frequency Mobile Usage: If you are accustomed to accessing the Agent on your phone via Tailscale, the Python Version’s mobile-optimized layout and voice input features will offer a better experience. -
Seamless CLI Switching: If you switch frequently between the local terminal and the Web interface, the Python Version’s CLI session bridge ensures you never miss any context. -
Minimalist Deployment: If you don’t want to install a Node.js environment on your server and just want a “just works” lightweight interface, the Python Version’s zero-dependency nature is the best choice.
Author Reflection:
After deeply analyzing these two projects, I believe there is no absolute superiority or inferiority between them. Instead, they represent two distinct evolutionary directions for AI Agent interaction interfaces.The Vue Version attempts to turn the Agent into a “Platform.” Through dashboards, charts, and configuration pages, it gives users a God’s eye view, suitable for enterprise users who operate the Agent as infrastructure.
The Python Version attempts to turn the Agent into a “Tool.” Through compact layouts, file browsing, and CLI bridging, it integrates the Agent into the developer’s workflow, suitable for individual developers or technical teams using the Agent as a productivity tool.
This differentiation is very healthy. It tells us that the future of AI interaction interfaces should not have only one form. For complex management backends, we need modern web frameworks; for efficient tool interfaces, native minimalist design remains irreplaceable.
Conclusion
Whether you choose the Vue Version Hermes Web UI or the Python Version Hermes WebUI, you will gain an interactive experience far superior to the native CLI. If Hermes Agent is the brain, the Vue Version is a sophisticated Control Tower, responsible for scheduling and monitoring; the Python Version is a flexible Neural Link, responsible for direct perception and operation.
It is recommended that users try based on their own tech stack preferences and primary usage scenarios, or even deploy different versions at different stages—using the Python Version’s efficient file operations during the development and debugging phase, and the Vue Version’s full-channel monitoring during production deployment.
Practical Summary / Action Checklist
One-Page Summary
| Feature | Vue Version | Python Version |
|---|---|---|
| Installation | npm install -g hermes-web-ui |
python3 bootstrap.py |
| Primary Use Case | Operations, Analytics, Terminal | Coding, Editing, CLI Integration |
| UI Layout | Dashboard, Modern Sidebar | 3-Pane (IDE-like) |
| Config Method | GUI Forms | YAML / CLI |
| Mobile Ready | Yes | Yes (w/ Voice Input) |
Frequently Asked Questions (FAQ)
1. Can these two Web UIs run simultaneously?
Yes, but they may fight over ports. You need to configure different ports for one (e.g., Vue defaults to 8648, Python defaults to 8787) and ensure they point to the same ~/.hermes data directory to share state. Note the potential risk of data conflicts from concurrent writes.
2. Which version has better security?
Both are very similar in security mechanisms, supporting HTTP password auth and Cookie session management. The Vue Version, as a standalone backend service (Koa), might handle HTTP headers (like CSP) slightly more standardly; the Python Version has undergone multiple community security audits (e.g., CSRF fixes). Security largely depends on your deployment method (e.g., HTTPS/SSH tunnel usage).
3. Will the “Zero Build” feature of the Python Version affect performance?
No. While it lacks Webpack/Vite bundling and minification, native JS loading speed remains extremely fast in modern browsers and networks. Conversely, by avoiding the huge node_modules footprint, its server startup speed is often faster.
4. Will the Vue Version’s BFF layer add latency?
It adds a tiny network hop latency (Browser -> BFF -> Gateway), but for text streaming, this is negligible. The benefit of the BFF is more unified interface aggregation and error handling.
5. Can I edit files directly in the Vue Version?
Based on current documentation, the Vue Version focuses primarily on file upload and skill viewing. While files can be manipulated via attachments, it lacks the deep, IDE-like file tree browsing and online editing experience of the Python Version.
6. Which browsers support the Python Version’s Web Speech API voice input?
Mainly modern browsers like Chrome, Edge, and Safari. The microphone button automatically hides if the browser does not support the API.
7. How do I back up my Web UI settings?
In both versions, most settings are stored in configuration files or JSON files within the ~/.hermes directory. You simply need to back up this directory regularly. The Vue Version also offers a feature to export Profiles.
8. Which version’s Docker image is smaller when deploying?
The Python Version is based on python:3.12-slim and is usually very compact. The Vue Version includes a Node.js environment, so the base image might be slightly larger, but both are within acceptable ranges. Specific size depends on dependency installation during the build.

