Home/AI Agents/hermes-webui
hermes-webui logo

hermes-webui

nesquena/hermes-webui

Hermes WebUI: The best way to use Hermes Agent from the web or from your phone!

GraphCanon updated 2d · GitHub synced 2d · 26 views this month

17k stars2.4k forksLast push 2d Python MIT

Decision brief

Hermes WebUI is a web interface designed for interacting with the Hermes agent, providing features to manage AI tasks and chat through browsers or mobile devices. It comes packaged as an easy-to-set-up Python application

Good fit when

  • When you want a user-friendly GUI to manage and interact with Hermes agents, ideal for users who prefer a visual interface over command-line operations.
  • Suitable for environments where self-hosted solutions are preferred due to its straightforward VM or homelab installation process via shell scripts.

Avoid when

  • Avoid using this tool if you require out-of-the-box support for full agent-loop delegation as it's not currently available, tracked under issue #1925.
  • If your setup requires running the Hermes WebUI exclusively on an external Hermes/Agent OpenAI-compatible API since WebUI runs the Hermes Agent in-process by default.
Requirements:
Min 1 GB RAM; Requires Docker; Self-hosting requires setup via shell commands or Docker configuration for more comprehensive deployment scenarios.

Observed Jul 11, 2026 · Source: enrich:decision_facts

Verify the decision

Maintenance and security

Full trust report
Maintenance
Very active (0d since push)
As of 2d
Provenance
Not a fork · Personal account
As of 2d
Security (OSV)
11 low (11 low)
As of 1mo

Public GitHub metadata and optional OSV scans. Signals, not a guarantee. Trust methodology.

Install

pip install hermes-webui
PyPI

How it fits your stack(4)

Typed graph edges - alternatives, integrations, successors, and dependencies. Ranked by relationship type, not raw GitHub stars.

Relationship graph

Optional deeper exploration of typed edges and category neighbours.

Similar tools

Same-category neighbours not already linked as typed edges.

Evidence and technical details

Sourced facts, taxonomy, compatibility claims, README excerpt, and machine-readable endpoints.

Overview

A web interface for interacting with the Hermes agent, enabling users to manage AI tasks and chat via a browser or mobile device.

Capability facts

Deploy
Self-host

Source: dockerfile:Dockerfile · Aug 19, 2026

Docker
Dockerfile present

Source: dockerfile:Dockerfile · Aug 19, 2026

CLI
CLI entrypoint

Source: pyproject.toml:[project.scripts] · Aug 19, 2026

MCP server
No MCP server detected

Source: repo_scan · Aug 19, 2026

Languages
python, javascript

Source: github.language+package.json+pyproject.toml · Aug 19, 2026

Categories

Compatibility

Sourced claims from the README excerpt - not unsourced marketing copy.

Python runtimePython

Source: README excerpt (regex_v1, Aug 19, 2026)

python3 bootstrap.py
Source link

Tags

README

Quick start

Run the repo bootstrap:

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

Or keep using the shell launcher:

./start.sh

For self-hosted VM or homelab installs, ctl.sh wraps the common daemon lifecycle commands without requiring fuser or pkill:

./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

ctl.sh start runs the bootstrap in foreground/no-browser mode behind the daemon wrapper, writes logs to ~/.hermes/webui.log, and respects .env plus inline overrides such as HERMES_WEBUI_HOST=0.0.0.0 ./ctl.sh start.

Stopping the server. Each launch method has its own stop path because only ctl.sh start writes a PID file (~/.hermes/webui.pid):

Launch methodHow to stop
python3 bootstrap.pyCtrl-C in the terminal (runs in the foreground)
./ctl.sh start./ctl.sh stop (sends SIGTERM, waits, then SIGKILL)
Detached bootstrap.py (no --foreground) or ./start.shFind the PID via lsof -i :8787 (or ss -tlnp) and kill it

./ctl.sh stop cannot stop a server launched by bootstrap.py or start.sh directly — it only manages processes it started itself.

How chat runs by default. WebUI runs the Hermes agent in-process, reading your HERMES_HOME config directly. It does not connect to an external Hermes/agent OpenAI-compatible API server to run chat. HERMES_API_URL is only read by the Tasks/cron health probe and does not route chat.

Two options if you run an external endpoint:

  1. Use its models as a chat provider (supported today): add it in Settings → Providers as a custom OpenAI-compatible provider with base_url = http://127.0.0.1:8642/v1 and your bearer token.
  2. Route chat through a Hermes Gateway API server (supported today via HERMES_WEBUI_CHAT_BACKEND=gateway): see docs/advanced-chat-setup.md. Full agent-loop delegation is not yet shipped; tracked in #1925.

Docker

Pre-built images (amd64 + arm64) are published to GHCR on every release.

For a comprehensive setup guide covering all 3 compose files, common failure modes, and bind-mount migration, see docs/docker.md. The README covers the 5-minute happy path.


Manual docker run (no compose)

docker pull ghcr.io/nesquena/hermes-webui:latest
docker run -d \
  -e WANTED_UID=$(id -u) -e WANTED_GID=$(id -g) \
  -v ~/.hermes:/home/hermeswebui/.hermes \
  -e HERMES_WEBUI_STATE_DIR=/home/hermeswebui/.hermes/webui \
  -v ~/workspace:/workspace \
  -p 127.0.0.1:8787:8787 \
  ghcr.io/nesquena/hermes-webui:latest

For agents

This page has a .md twin and JSON over the API.

Was this helpful?

Anonymous feedback helps us improve pages and translations.