Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hermes Simple

A minimal, browser-based chat UI for Hermes Agent. Built for proper CJK (Chinese/Japanese/Korean) IME input support and lightweight local chat.

Why?

Terminal emulators like st, alacritty, and xterm struggle with IME composition for CJK languages. Browsers handle Fcitx/IBus/sogou input natively. This gives you a clean, minimal chat interface with full Hermes agent capabilities (tools, memory, session continuity) without needing the full dashboard.

Features

  • Full agent mode: Tools, memory, SOUL.md persona, session history — everything active
  • CJK IME support: Type Chinese, Japanese, Korean naturally in your browser
  • Session continuity: Conversations persist across page refreshes
  • Token usage display: See context window usage in real-time
  • Markdown rendering: Code blocks, tables, links, etc. all rendered properly
  • Streaming responses: Watch the bot type in real-time with SSE
  • Zero dependencies: Python stdlib only, no pip installs needed
  • Miasma dark theme: Warm green accent on dark background (customizable via CSS variables)

Requirements

  • Hermes Agent installed and configured (hermes command available)
  • Python 3.6+ (stdlib only — no external packages)
  • A modern browser (Chrome/Firefox/Safari)
  • Linux or macOS

Installation

git clone https://github.com/itsme-chugumi/hermes-simple.git
cd hermes-simple
chmod +x hermes-simple.sh

Usage

Option 1: Direct launcher

./hermes-simple.sh

Option 2: Start server manually

python3 server.py 8647
# Then open http://127.0.0.1:8647 in your browser

Option 3: Add shell alias (recommended for frequent use)

For Bash/Zsh — add to ~/.bashrc or ~/.zshrc:

alias hermes-simple='bash ~/hermes-simple/hermes-simple.sh'

For Fish — create ~/.config/fish/conf.d/hermes-simple.fish:

function hermes --wraps hermes
    if test "$argv[1]" = "simple"
        bash ~/hermes-simple/hermes-simple.sh
    else
        command hermes $argv
    end
end

Then just type hermes simple to launch.

How It Works

Browser (CJK IME works) → POST /chat {message, session_id}
    ↓  (same origin, no CORS)
Python server (stdlib http.server, port 8647)
    ↓  spawns `hermes chat -q "<msg>" -Q --cli [--resume <id>]`
    ↓  reads stdout line-by-line, extracts session_id, streams as SSE
Browser receives SSE events: {type: "delta", content} | {type: "done", session_id}
    ↓
Full agent runs: tools, file access, web, SOUL.md persona, memory

The server auto-starts hermes proxy if needed (probes port 8645 on startup).

Customization

Change theme colors — edit CSS variables in index.html:

:root {
  --bg: #222222;
  --fg: #c2c2b0;
  --accent: #5f875f;
  /* ... */
}

Change port — pass port as argument to server:

python3 server.py 9000
# Update hermes-simple.sh to match

Keyboard Shortcuts

  • Enter: Send message
  • Shift+Enter: New line in message
  • Ctrl/Cmd + /: Focus input (if not already focused)

Known Limitations

  • Single-user only (no auth, binds to localhost)
  • No file uploads (paste text/code directly)
  • Requires hermes to be in PATH
  • hermes proxy start can take 10+ seconds on first run

License

Public Domain (Unlicense) — do whatever you want with it.

Credits

Engineered by Nano — a witch of the abyss.

About

Minimal browser chat UI for Hermes Agent — CJK IME friendly, zero dependencies

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages