Skip to content

About

A native desktop pet renderer for Hermes Agent via WebUI ๐Ÿ•ต๏ธ

Topics

Resources

Code of conduct

Contributing

Stars

4 stars

Watchers

0 watching

Forks

Latest commit

ย 

History

145 Commits

Folders and files

Repository files navigation

Hermes WebUI Companion

Hermes WebUI Companion

A native desktop pet renderer for Hermes Agent via WebUI
Animated ยท Transparent ยท Always-on-top

Features โ€ข Architecture โ€ข Installation โ€ข Usage โ€ข For Developers

Release CI status Rust version Tauri version


Hermes WebUI Companion brings your petdex pets to life on your desktop. It reads pets directly from your Hermes Agent installation and renders them as an animated, transparent, always-on-top window that reacts to your Hermes sessions via WebUI โ€” idle, running, waiting for approval, or celebrating a completed session.

โœจ Features

  • ๐Ÿพ Live Pet Rendering โ€” Your active Hermes pet comes to life on your desktop with CSS sprite animations โ€” no blink, no flicker, zero canvas.
  • ๐ŸŽญ State-Aware Animation โ€” The pet reacts to your Hermes sessions via WebUI: runs during processing, waits for approvals, reviews for clarifications, waves when a session completes.
  • ๐Ÿ’ฌ Bubble Notifications โ€” A sleek overlay window shows session attention items, approvals, and clarify requests.
  • ๐ŸŽฎ Switch Pets Instantly โ€” Native right-click context menu (Tauri popup_menu) lets you switch pets without touching the terminal.
  • ๐ŸชŸ Always-on-Top โ€” Transparent, draggable window that stays above everything else.
  • ๐Ÿชถ Optional Sidecar โ€” When Hermes runs in WSL, a tiny Rust HTTP server (axum) bridges the filesystem boundary. Not needed when Hermes and the renderer share the same host.
  • ๐Ÿ”„ Auto-Start โ€” When using WSL, the sidecar runs as a systemd user service and starts automatically with your system.

๐Ÿ—๏ธ Architecture

flowchart LR
    WEBUI["๐Ÿง  Hermes WebUI<br>:8787"] -->|"session snapshots"| BRIDGE

    subgraph COMPANION["๐Ÿฆ€ Hermes WebUI Companion"]
        BRIDGE["Bridge :17787"]
        ANIM["Animation Engine"]
        PROVIDER["PetDataProvider"]
        WINDOW["Desktop Pet<br>+ Bubbles + Menu"]
    end

    DIRECT["๐Ÿ“ ~/.hermes/<br>direct mode"] -->|"filesystem"| PROVIDER
    SIDECAR["๐Ÿ”— Sidecar :17888<br>sidecar mode"] -->|"HTTP"| PROVIDER

    BRIDGE --> ANIM
    PROVIDER --> ANIM
    ANIM --> WINDOW
Loading

Two Modes

Mode When How
Direct Hermes & renderer on same host Reads ~/.hermes/ directly via filesystem
Sidecar Hermes in WSL, renderer on host HTTP to sidecar at :17888 (bridges WSL boundary)

The renderer auto-detects the mode at startup and stays in it for the session lifetime.

Component Required? What it does
Renderer Always Renders the pet, shows bubbles, handles state
Sidecar WSL / remote only Bridges ~/.hermes/ from WSL to the host via HTTP

User Guide

Everything you need to install and run Hermes WebUI Companion.

๐Ÿ“ฆ Installation

Prerequisites

  • Hermes Agent installed with a petdex pet (hermes pets install <slug>)
  • Hermes WebUI running at localhost:8787 โ€” on the same host (direct mode) or inside WSL (sidecar mode)
  • Tauri runtime โ€” WebView2 on Windows, webkit2gtk on Linux, built-in WebKit on macOS

Step 1 โ€” Install the Sidecar (WSL / remote only)

If Hermes runs inside WSL or on a different machine, install the sidecar to bridge the filesystem boundary. Skip this step if Hermes and the renderer share the same host โ€” direct mode handles that automatically.

# Download the latest sidecar binary and service file
curl -LO https://github.com/latipun7/hermes-webui-companion/releases/latest/download/hermes-webui-companion-sidecar
curl -LO https://github.com/latipun7/hermes-webui-companion/releases/latest/download/hermes-webui-companion-sidecar.service

# Install
chmod +x hermes-webui-companion-sidecar
cp hermes-webui-companion-sidecar ~/.local/bin/
mkdir -p ~/.config/systemd/user/
cp hermes-webui-companion-sidecar.service ~/.config/systemd/user/
systemctl --user enable --now hermes-webui-companion-sidecar

Step 2 โ€” Install the Renderer

Download the latest binary for your platform from the Releases page:

  • Windows: hermes-webui-companion-gui-x86_64-pc-windows-msvc.exe
  • macOS: hermes-webui-companion-gui-x86_64-apple-darwin
  • Linux: hermes-webui-companion-gui-x86_64-unknown-linux-gnu

Step 3 โ€” Enable the WebUI Adapter

In your Hermes WebUI, make sure the Desktop Companion extension is enabled. It POSTs real-time session snapshots to the bridge server at :17787.

๐ŸŽฎ Usage

  • Watch the pet โ€” it moves and reacts based on your sessions: idle, running, waiting for approval, reviewing, waving
  • Right-click the pet window for Restart, Close, or Switch pet
  • Notifications appear as bubble cards above the pet
  • Click the bubble to navigate directly to the session in WebUI
  • Drag the pet window anywhere on your screen

๐Ÿ”ง Configuration

Environment Variable Default Description
HERMES_HOME (auto) Override Hermes installation path (direct mode)
HERMES_WEBUI_PORT 8787 WebUI health check port
HERMES_COMPANION_DEBUG โ€” Set to 1 for verbose logging

Debug logging gives you scoped prefixes:

  • [companion:bridge] โ€” HTTP bridge activity
  • [companion:cmd] โ€” Tauri IPC commands
  • [companion:health] โ€” Service health state
  • [companion:bubble] โ€” Bubble window visibility

๐Ÿ“ฆ Release Artifacts

Each GitHub Release ships:

File Platform Description
hermes-webui-companion-sidecar Linux Sidecar binary
hermes-webui-companion-sidecar.service Linux systemd unit file
hermes-webui-companion-gui-x86_64-unknown-linux-gnu Linux Renderer binary
hermes-webui-companion-gui-x86_64-apple-darwin macOS Renderer binary
hermes-webui-companion-gui-x86_64-pc-windows-msvc.exe Windows Renderer binary

For Developers

Everything you need to set up the project locally, build from source, and contribute.

๐Ÿš€ Quick Start

git clone https://github.com/latipun7/hermes-webui-companion.git
cd hermes-webui-companion
mise install

Assume you have mise installed already, this installs the Rust toolchain, prek (git hooks), and cocogitto โ€” all in one command.

System Dependencies (Linux only)

sudo apt-get install libwebkit2gtk-4.1-dev libgtk-3-dev \
  libayatana-appindicator3-dev librsvg2-dev

๐Ÿ“‚ Project Structure

webui-companion/
โ”œโ”€โ”€ Cargo.toml               # Workspace root
โ”œโ”€โ”€ .pre-commit-config.yaml  # prek hooks: fmt, clippy, prettier, markdownlint-cli2
โ”œโ”€โ”€ rustfmt.toml             # Formatting rules
โ”œโ”€โ”€ mise.toml                # Task runner + tool manager
โ”œโ”€โ”€ context.md               # Domain glossary (canonical terminology)
โ”œโ”€โ”€ crates/
โ”‚   โ”œโ”€โ”€ common/              # Shared types + ConfigReader
โ”‚   โ”œโ”€โ”€ sidecar/             # WSL HTTP server (axum)
โ”‚   โ””โ”€โ”€ renderer/            # Desktop app (Tauri v2)
โ”‚       โ”œโ”€โ”€ src/             # Rust modules
โ”‚       โ”œโ”€โ”€ gui/             # HTML/CSS/JS frontend
โ”‚       โ””โ”€โ”€ tauri.conf.json  # Tauri configuration
โ””โ”€โ”€ docs/
    โ”œโ”€โ”€ prd.md               # Product requirements
    โ””โ”€โ”€ adr/                 # Architecture decisions

๐Ÿ”จ Building

Sidecar

cargo build --locked --release -p hermes-webui-companion-sidecar

Renderer (target platform)

cargo tauri build --features gui

๐Ÿงช Running in Dev Mode

export HERMES_COMPANION_DEBUG=1
cargo tauri dev --features gui

โœ… Code Quality

This project enforces:

  • Rustfmt โ€” consistent formatting (mise run fmt)
  • Clippy โ€” lint with -D warnings (mise run check)
  • Prettier โ€” code formatting for JS/CSS/JSON/YAML/MD (mise run prettier)
  • markdownlint โ€” consistent markdown (mise run markdownlint)
  • Conventional Commits โ€” enforced by cog verify commit-msg hook
  • Pre-commit hook โ€” runs fmt, clippy, prettier, markdownlint before every commit (installed by mise install)
  • CI โ€” runs the full mise run ci-check gate on every push/PR

Commands

Command Description
mise run check Check Rust formatting and clippy (read-only)
mise run test Run all tests
mise run lint Fix formatting and linting issues
mise run fmt Format Rust code
mise run build Build release binary
mise run ci-check Full CI gate (prettier, markdownlint, fmt, clippy, tests)
mise run release Auto-bump version + changelog + tag
mise run changelog Generate changelog from commit history

๐Ÿ“ Commit Convention

This project follows Conventional Commits. Commit messages are linted automatically via cocogitto.

# With cocogitto (recommended)
cog commit feat "add awesome feature"

# With git (enforced by commit-msg hook)
git commit -m "feat: add awesome feature"

๐Ÿ“ฌ Before Opening a PR

Run the full CI gate locally:

mise run ci-check

This runs prettier, markdownlint, fmt (check), clippy, and tests โ€” everything CI will verify.

๐Ÿ“„ License

MIT ยฉ 2026 latipun7


Built with ๐Ÿฆ€ Rust & โค๏ธ for the Hermes ecosystem
Pets powered by petdex.dev โ€” 3000+ open-source sprites

About

A native desktop pet renderer for Hermes Agent via WebUI ๐Ÿ•ต๏ธ

Topics

Resources

Code of conduct

Contributing

Stars

4 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages