AI/TLDR

Hermes Web UI

Self-hosted browser front-end for Hermes Agent, with near parity to its CLI

Chat UIsOpen source
Language
Python
License
MIT

Overview

Hermes Web UI is a self-hosted browser interface for Hermes Agent, the always-on autonomous agent that runs on your own server, keeps memory across sessions and is reachable from messaging apps. The project's goal is parity with the Hermes CLI: anything you can do from a terminal you can do from the browser, using your existing Hermes configuration, models and provider keys with no extra setup.

It is deliberately small in construction — Python on the server and vanilla JavaScript in the browser, with no framework, bundler or build step. The layout is three panels: sessions and navigation on the left, chat in the centre, and a workspace file browser with inline preview on the right. Model, profile and workspace controls sit in the composer footer so they stay visible while you type, a circular context ring shows token usage at a glance, and the remaining settings and session tools live in a Hermes Control Center launched from the sidebar.

Chat runs the Hermes agent in-process, reading your `HERMES_HOME` configuration directly rather than calling an external agent API — worth knowing when you already run a Hermes endpoint, because `HERMES_API_URL` is only read by the tasks/cron health probe. Two documented alternatives exist: add your endpoint as a custom OpenAI-compatible provider, or route browser chat through a running Hermes Gateway with `HERMES_WEBUI_CHAT_BACKEND=gateway`. Deployment options include a Nix flake and NixOS module, single- and multi-container Docker, and an SSH tunnel for secure remote access. The bootstrap supports Linux, macOS and WSL2; native Windows is not yet a supported bootstrap target.

What it does

  • Near-parity with the Hermes CLI from the browser, reusing your existing Hermes agent, models and provider configuration
  • Three-panel layout: sessions sidebar, chat, and a workspace file browser with inline preview
  • Composer-footer model, profile and workspace switches plus a circular context ring for token usage
  • No build step — Python server and vanilla JS, so there is no bundler or framework to maintain
  • `ctl.sh` daemon lifecycle for homelab and VM installs: start, status, logs, restart, stop, with a PID file and log under ~/.hermes
  • Nix flake and NixOS module, plus single- and multi-container Docker deployments
  • First-run onboarding wizard that walks through provider setup, with light and dark themes and a mobile-friendly layout

Getting started

The repository bootstrap does the whole setup: it detects Hermes Agent (and offers to run the official installer if it is missing), prepares a Python environment, starts the server, waits for /health and drops you into an onboarding wizard.

Clone and bootstrap

Run the bootstrap from the clone. It runs in the foreground, so stop it with Ctrl-C. Pass --no-browser to skip opening a browser tab.

bashbash
git clone https://github.com/nesquena/hermes-webui.git hermes-webui
cd hermes-webui
python3 bootstrap.py

Or use the shell launcher

start.sh is the equivalent launcher if you prefer it.

bashbash
./start.sh

Run it as a daemon

For a VM or homelab install, ctl.sh wraps the daemon lifecycle without needing fuser or pkill. It runs the bootstrap in foreground/no-browser mode behind a daemon wrapper, writes a PID file and logs, and honours .env plus inline overrides.

bashbash
./ctl.sh start              # background daemon, PID at ~/.hermes/webui.pid
./ctl.sh status             # PID, uptime, bound host/port, log path, /health
./ctl.sh logs --lines 100   # tail ~/.hermes/webui.log
./ctl.sh restart
./ctl.sh stop

Expose it beyond localhost

Bind to all interfaces with an inline override when you intend to reach it over a tunnel or private network. The project's recommended access path for a remote host is an SSH tunnel.

bashbash
HERMES_WEBUI_HOST=0.0.0.0 ./ctl.sh start

Finish provider setup

If provider configuration is still incomplete, the onboarding wizard points you at `hermes model` rather than duplicating the full CLI setup in the browser.

bashbash
hermes model

Commands and code are distilled from the project's own documentation — always check the official repo for the latest.

When to use it

  • Reach a server-resident Hermes agent from a laptop or phone browser instead of SSHing into a terminal
  • Browse and preview the agent's workspace files next to the conversation that produced them
  • Watch context usage while composing, and switch model or profile mid-session without restarting
  • Run the UI as a managed daemon on a homelab box, with logs and health checks via ctl.sh

How Hermes Web UI compares

Hermes Web UI alongside other open-source chat uis tools AI/TLDR tracks, ranked by GitHub stars.

ToolStarsWhat it does
Open WebUI★ 153kA self-hosted web interface for chatting with local and API-based LLMs (Ollama, OpenAI-compatible) that adds RAG, web search, image generation, and multi-user access.
Lobe Chat★ 82.7kAn open-source chat UI with a plugin and agent marketplace, multi-model support, voice, vision, and one-click self-hosting.
AnythingLLM★ 66.2kA desktop and self-hosted chat app focused on document Q&A and agents, letting you build private RAG workspaces over your own files and data sources.
Cherry Studio★ 52kA cross-platform desktop chat client that connects to many cloud and local model providers and ships with hundreds of preset assistants and MCP support.
LibreChat★ 44.4kA self-hostable ChatGPT-style chat app that unifies many AI providers and adds agents, MCP support, artifacts, a code interpreter, and multi-user authentication.
Chatbox★ 41.8kA desktop and web chat client for ChatGPT, Claude, Gemini, Ollama, and other models, with local message storage and multi-provider switching.
Buzz★ 33.7kA self-hostable team workspace built on a Nostr relay where AI agents join channels as members with their own keys, and messages, patches, workflow runs and approvals are all signed events in one log.
Hermes Web UI★ 18.5kSelf-hosted browser front-end for Hermes Agent, with near parity to its CLI