OpenSource-Hub

hermes-webui

Application

nesquena/hermes-webui

Web UI for Hermes autonomous AI agent with persistent memory and scheduling.

Overview

Hermes WebUI provides a browser-based interface to the Hermes Agent, an autonomous AI agent with persistent memory, cross-session recall, scheduling, and multi-platform messaging. It offers full parity with the CLI experience in a three-panel dark-themed layout. No additional setup required beyond existing Hermes Agent installation.

README Preview

# Hermes Web UI\n\n[Hermes Agent](https://hermes-agent.nousresearch.com/) 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.\n\nHermes WebUI is a lightweight, dark-themed web app interface in your browser for [Hermes Agent](https://hermes-agent.nousresearch.com/).\nFull parity with the CLI experience - everything you can do from a terminal,\nyou can do from this UI. No build step, no framework, no bundler. Just Python\nand vanilla JS.\n\nLayout: three-panel. Left sidebar for sessions and navigation, center for chat,\nright for workspace file browsing. Model, profile, and workspace controls live in\nthe **composer footer** — always visible while composing. A circular context ring\nshows token usage at a glance. All settings and session tools are in the\n**Hermes Control Center** (launcher at the sidebar bottom).\n\n\n\n\n  \n    \n      \n      Light mode with full profile support\n    \n    \n      \n      Customize your settings, configure a password\n    \n  \n\n\n\n  \n    \n      \n      Workspace file browser with inline preview\n    \n    \n      \n      Session projects, tags, and tool call cards\n    \n  \n\n\nThis 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.\n\n---\n\n## Contents\n\n- [Why Hermes](#why-hermes) — what it is and how it compares\n- [Quick start](#quick-start) — clone + `bootstrap.py` / `start.sh` / `ctl.sh`\n- [Features](#features) — chat, sessions, workspace, voice, profiles, security, themes, panels, mobile\n- [Configuration & access](#configuration--access) — auto-discovery, overrides, remote/Tai

FAQ (5)

Troubleshooting
Why do models from a named custom provider appear twice in the model dropdown?

This is caused by a bug in the _normId function in static/ui.js, which only strips the first provider prefix using indexOf(':'). For named providers like 'custom:alibaba-bailian', the resulting normalized key doesn't match the static list, causing deduplication to fail. The fix is to use lastIndexOf(':') to strip all nested prefixes. This was resolved in version v0.51.254. Update to that version or apply the patch manually.

GitHub Issue #3478
Troubleshooting
How to fix scroll jumping to top during streaming in Hermes WebUI on iOS Safari?

Update Hermes WebUI to version v0.51.254 or later. This release includes a fix (PR #3541) that corrects the scroll position restoration logic so the viewport no longer jumps during live token streaming on iPhone Safari. It also resolves a related issue where the clarify/approval card would overlay and obscure the conversation on mobile. After updating, clear the browser cache and re-add the PWA to the home screen if necessary.

GitHub Issue #3479
Troubleshooting
Why does the web app hard reload when returning from background on Android PWA?

This is a known bug in versions before v0.51.254: the offline recovery logic triggers a full page reload after a transient connectivity loss when the app is backgrounded. Upgrade to v0.51.254 or later to get a soft reattach that reconnects without reloading the page.

GitHub Issue #3550
Troubleshooting
Why does my tool call history disappear when I interrupt the agent in Hermes WebUI?

This is a known bug in versions prior to v0.51.254. Interrupting the agent (e.g., clicking 'Stop Generation') could cause partial tool calls and response history to be lost, leaving only a generic 'Task cancelled' message. Update to v0.51.254 (Release HV) or later to preserve partial tool calls after cancellation.

GitHub Issue #3528
Troubleshooting
How to fix chat view snapping to bottom after manual scroll during streaming?

Update to v0.51.253 or later. This release includes a fix for streaming scroll-snap (#3529) that preserves your reading position after manually scrolling up.

GitHub Issue #3525