hermes-webui README

The project's README from github.com/nesquena/hermes-webui. As one markdown file: README.md.

Hermes Web UI

Hermes Agent is a sophisticated autonomous agent that lives on your server, accessed via a terminal or messaging apps, that remembers what it learns and gets more capable the longer it runs.

Hermes WebUI is a lightweight, dark-themed web app interface in your browser for Hermes Agent. Full parity with the CLI experience - everything you can do from a terminal, you can do from this UI. No build step, no framework, no bundler. Just Python and vanilla JS.

Layout: three-panel. Left sidebar for sessions and navigation, center for chat, right for workspace file browsing. Model, profile, and workspace controls live in the composer footer — always visible while composing. A circular context ring shows token usage at a glance. All settings and session tools are in the Hermes Control Center (launcher at the sidebar bottom).

Setup Hermes so you can access it natively on every device:

image
Light mode with full profile support
Light mode with full profile support
Customize your settings, configure a password
Customize your settings, configure a password
Workspace file browser with inline preview
Workspace file browser with inline preview
Session projects, tags, and tool call cards
Session projects, tags, and tool call cards

This gives you nearly 1:1 parity with Hermes CLI from a convenient web UI which you can access securely through an SSH tunnel from your Hermes setup. Single command to start this up, and a single command to SSH tunnel for access on your computer. Every single part of the web UI uses your existing Hermes agent and existing models, without requiring any additional setup.


Contents

image


Why Hermes

Most AI tools reset every session. They don't know who you are, what you worked on, or what conventions your project follows. You re-explain yourself every time.

Hermes retains context across sessions, runs scheduled jobs while you're offline, and gets smarter about your environment the longer it runs. It uses your existing Hermes agent setup, your existing models, and requires no additional configuration to start.

What makes it different from other agentic tools:

vs. the field (landscape is actively shifting — see docs/why-hermes.md for the full breakdown):

OpenClaw Claude Code Codex CLI OpenCode Hermes
Persistent memory (auto) Yes Partial† Partial Partial Yes
Scheduled jobs (self-hosted) Yes No‡ No No Yes
Messaging app access Yes (15+ platforms) Partial (Telegram/Discord preview) No No Yes (10+)
Web UI (self-hosted) Dashboard only No No Yes Yes
Self-improving skills Partial No No No Yes
Python / ML ecosystem No (Node.js) No No No Yes
Provider-agnostic Yes No (Claude only) Yes Yes Yes
Open source Yes (MIT) No Yes Yes Yes

† Claude Code has CLAUDE.md / MEMORY.md project context and rolling auto-memory, but not full automatic cross-session recall
‡ Claude Code has cloud-managed scheduling (Anthropic infrastructure) and session-scoped /loop; no self-hosted cron

The closest competitor is OpenClaw — both are always-on, self-hosted, open-source agents with memory, cron, and messaging. The key differences: Hermes writes and saves its own skills automatically as a core behavior (OpenClaw's skill system centers on a community marketplace); Hermes is more stable across updates (OpenClaw has documented release regressions and ClawHub has had security incidents involving malicious skills); and Hermes runs natively in the Python ecosystem. See docs/why-hermes.md for the full side-by-side.


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 method How to stop
python3 bootstrap.py Ctrl-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.sh Find 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.

Advanced: dynamic recall prefill & Gateway-backed chat

Two optional, self-hosted-deployment features — attaching dynamic session-recall prefill to browser turns (Joplin/Obsidian/Notion/llm-wiki routers), and routing browser chat through a running Hermes Gateway — are documented in docs/advanced-chat-setup.md. Most users need neither.

The bootstrap will:

  1. Detect Hermes Agent and, if missing, attempt the official installer (curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash).
  2. Find or create a Python environment with the WebUI dependencies.
  3. Start the web server and wait for /health.
  4. Open the browser unless you pass --no-browser.
  5. Drop you into a first-run onboarding wizard inside the WebUI.

Native Windows is not supported for this bootstrap yet. Use Linux, macOS, or WSL2. For Windows / WSL auto-start at login, see docs/wsl-autostart.md.

A community-maintained native Windows setup is documented at @markwang2658/hermes-windows-native-guide (companion setup repo: @markwang2658/hermes-windows-native). Notes from the community report in #1952:

If provider setup is still incomplete after install, the onboarding wizard will point you to finish it with hermes model instead of trying to replicate the full CLI setup in-browser. For a step-by-step walkthrough of the wizard, provider choices, local model server Base URLs, and safe re-runs, see docs/onboarding.md. If an AI assistant is helping with install, reinstall, bootstrap, provider setup, or first-run support, have it read docs/onboarding-agent-checklist.md before running commands or inspecting logs.


Features

Chat and agent

Sessions

Workspace file browser

Voice input

Profiles

Authentication and security

Themes

Settings and configuration

Slash commands

Panels

hermes-webui (nesquena/hermes-webui)

Searching Database…

这是什么?Hermes WebUI 是一个轻量的深色主题网页界面,面向 Hermes Agent——一个可跨会话记忆、自行托管的自主智能体。它在浏览器里提供与命令行完全对等的功能,电脑和手机上都能用。
它是我现有的 Hermes Agent 的前端,还是一个独立的智能体?它只是一个前端,不是独立的智能体:WebUI 在同一进程内运行你的 Hermes agent,沿用你现有的配置和模型。界面分为三个面板——会话侧边栏、聊天区和工件文件浏览器。
我怎么把它跑起来?克隆仓库并运行 python3 bootstrap.py(或 ./start.sh):它会检测或安装 Hermes Agent,配置 Python,启动服务器,并带你进入首次运行的引导向导。也提供 Docker 和 Nix 方式。
除了 Python 之外还需要装别的东西吗?你还需要 Hermes Agent 本身——缺失时引导脚本会自动安装——再加上 Python。没有构建步骤,不需要框架或打包工具,模型用的是你已有的服务商密钥,所以也不用注册新账号。
它能在 Windows 上原生运行吗?官方引导脚本不支持——它只支持 Linux、macOS 或 WSL2。社区维护了一套 Windows 原生安装方案;它更轻量(约 330 MB,而 WSL2 下约 1 GB),但在路径和工具方面有一些小问题。
我能用手机访问吗,还是只能用笔记本?可以——常规做法是用一条命令建立 SSH 隧道,连到运行智能体的那台机器;文档还介绍了通过 Tailscale 远程访问以及手机端的设置方法。
我的对话记录和智能体的记忆存在哪里?一切都自行托管:对话、记忆和工作区文件都保存在你自己的服务器和硬件上,不在别人的云里。你通过自己的隧道来访问它。
智能体工作时,聊天界面会显示什么?每次工具调用都会变成一张可展开的卡片,显示工具名称、参数和结果摘要;你还能看到子智能体委派卡片、内嵌的 Mermaid 图表、可折叠的思考过程,以及在执行危险的 shell 命令前弹出一张确认卡片。
它支持哪些模型服务商?你的 Hermes 配置支持哪家就用哪家:OpenAI、Anthropic、Google、DeepSeek、Nous Portal、OpenRouter、MiniMax、Xiaomi MiMo 和 Z.AI,模型下拉列表会根据你配置的密钥自动生成。
底层的 Hermes 智能体能做哪些普通聊天机器人做不到的事?它能跨会话保持持久记忆,在你离线时按计划运行 cron 定时任务,接入 10 多个消息平台,还会从实际使用中总结出自己的可复用技能,而不依赖插件市场。
我能分享或导出一段对话吗?可以——从 Control Center 生成一个公开的只读分享链接(经过脱敏的快照,不含工作区和配置文件),或者把会话导出为 Markdown 记录或完整的 JSON。
Creator
nesquena
Size
253.4 MB
Stars
19K
Age
6mo
Commits · 90 Days