Repository navigation
Releases: robbyczgw-cla/hermes-ui-plus
Release list
Hermes UI+ 0.1.0-alpha.1
First public alpha – unofficial interactive client for your self-hosted Hermes Agent. Expect rough edges.
Downloads: Android APK (hermes-ui-plus-0.1.0-alpha.1.apk, also on Obtainium), web app bundle for your bridge (hermes-ui-plus-web-0.1.0-alpha.1.tar.gz, see docs/WEB-APP.md), macOS app (Apple silicon, signed and notarized). Linux AppImage and .deb (x86_64, alpha). Verify with sha256sum -c <file>.sha256.
Bridge: npx hermes-ui-plus-bridge setup – see docs/SELF-HOSTING.md.
Android: installing outside the Play Store shows the usual one-time "unknown app" prompt; the APK is signed with the same key as the Play build.
First public alpha of Hermes Interactive UI+ ("Hermes UI+" on the home screen): interactive chat for Hermes Agent and an unofficial community client, not affiliated with Nous Research. Requires Hermes Agent v0.21 or newer; tested with Hermes v0.22.0 (see Known limitations for two upstream Hermes issues). Expect rough edges and changes between alphas.
Added
- Chat with streaming answers, progressive Markdown, a tool-call timeline, multiple conversations stored on the device, and light and dark themes. The default look is "Bote" (ink, ivory and brass); further themes include Graphit, Papier, Wald, OLED, Nord, Solarized and Rose, with a colour-blind-checked chart palette and at least 4.5:1 contrast for text in every theme.
- Interactive answer components (48 native node types, layout and text nodes included): tables, charts (bar, line, area, pie, donut, radar, gauge, heatmap, waterfall, scatter and more), stats, comparisons, steps, timelines, forms, choices, checklists, calculators, maps, recipes, quizzes, flashcards, timers, polls, agendas, decisions, rankings, scales, translations, weather, places, products, guides, workouts, study plans, vocabulary, mind maps and the two newest, paths and blocks (below). Your interaction is sent back to Hermes as the next message and state is kept per conversation.
- The
hermes-uiskill for Hermes Agent, loaded only for sessions from the app, so other Hermes clients are unaffected. - UI-Bridge (Node 22,
npx hermes-ui-plus-bridgeor Docker) with a guidedsetupwizard: presentation router (rule-based), streaming pass-through, uploads with size and type limits, push, and serving of the web app. By default the bridge is a pure pass-through to Hermes: it calls no model or search provider itself, the wizard asks for no provider keys, and the startup log saysdirect providers: none (pure Hermes pass-through). Optional direct-provider extras are opt-in withsetup --extras(or a "y" to the wizard's extras question): LLM router (Claude, Jev), generated titles and follow-ups, image search (Serper, Brave) and voice (Groq, OpenAI, Deepgram, ElevenLabs). These call providers from the bridge, outside Hermes; the startup log names each active one. A provider key alone switches nothing on: the model router needsROUTER_BACKEND, titles and follow-ups needBRIDGE_META=on, so anANTHROPIC_API_KEYexported in your shell is never used by accident. The Docker image contains the skill's bootstrap message (build it afternpm run bundle-skill), and the bridge warns at startup if that message is missing. The npm package ships the MIT license. A later version will move these extras into a Hermes plugin. Re-runningsetupkeeps all existing keys andROUTER_BACKEND. - Pairing and device tokens: pairing by QR code or link, a revocable token per device, one-time codes for remote pairing, and
devices list/add/revoke. - Approvals: answer Hermes approval requests in the app, in the web app also from a Web Push notification. When Hermes smart approval auto-approves a flagged command, the tool timeline says so.
- Hermes profiles (bots): pick a Hermes profile (own model, memory and skills) per chat in the model menu's "Bot" section. The chat talks to
/p/<profile>/…, the drawer marks non-default bots, session sync, approvals and push open the right bot. The UI-Bridge forwards the same allow-list under/p/<profile>/, lists bots atGET /bridge/profiles(BRIDGE_PROFILES:auto, a list oroff); direct connections enter their bots in the connection settings. Without profiles nothing changes: no "Bot" section, and an older bridge withoutGET /bridge/profilessimply has no bots. The offline demo shows a second sample bot. - Schnellfrage (quick questions, ⚡): with the optional Hermes plugin
hermes-ui-plusand the bridge, a fast model of your Hermes answers one-off questions in about two seconds, without the agent (no memory, tools or live data). ⚡ in the composer switches to one local quick thread per connection (kept on the device for 24 hours, not in your Hermes history); long-press on Send sends a question there directly. Answers render interactive cards and show "⚡ model · time". "Mit Hermes weitermachen" opens a normal Hermes chat with the question and answer as context. Settings → Schnellfrage: model from Hermes' catalog, limits, the ⚡ switch. Without the plugin nothing changes: no ⚡, no extra requests. The plugin is experimental: it uses one internal Hermes function for the model call (docs/HERMES-PLUGIN.md). The offline demo has prepared quick answers. - Slash commands with a searchable palette:
/new,/model,/reasoning,/fast,/retry,/stop,/approve,/deny,/title,/search,/skills,/branch,/usage,/status,/export,/delete,/help. - Voice: dictation and read-aloud, on the device, through the bridge, or with your own provider key in the app.
- Images and attachments: photos and documents in messages, image lookups with source credit, and tap-to-load for images from unknown hosts.
- Image privacy setting: "Images from unknown sites" has three honest options: Via bridge (recommended) (the default: product and place photos load at once through the bridge's image proxy, so the site sees the bridge instead of your phone, other unknown images wait for a tap), Only after tap (every image from an answer waits for a tap, and still loads through the bridge afterwards) and Always load.
- Product, place and event photos without provider keys: the
hermes-uiskill asks Hermes' extract tool for page images (web_extract_plusinclude_images) and puts the page's main image (og:image) into the card. The app loads it through the bridge's new image proxy (GET /bridge/img, no keys,BRIDGE_IMAGE_PROXY=offto disable), so it shows at once and the image host never sees your phone's IP address. If it fails, the card shows a calm fallback; products, compare columns and web-sourced images never fall back to a Wikipedia / Wikimedia guess by name (only places and other encyclopedic subjects use that lookup). With image loading switched off nothing is loaded. See docs/BRIDGE.md. - Sandboxed HTML widgets for custom visuals, with no access to your data or device.
- Push notifications: Web Push for the web app (PWA), including the iPhone/iPad home-screen app; message previews off by default. FCM / APNs only for self-built apps.
- Tables on phones: a table that cannot fit the phone width turns into one card per row; on Android the layout (fill the width, row cards or horizontal scroll) is decided before rendering, with hyphenation for long words.
- First turn follows the skill: the app's first message makes Hermes load the
hermes-uiskill on the first real question and lead with the result instead of a wall of Markdown. With the bridge, the skill's core text comes inline right after that message on every app turn (cached, about 2k tokens;BRIDGE_SKILL_INLINE=offto disable), so models that skip loading the skill (seen with Claude Sonnet) still render components and follow the router hint. See docs/BRIDGE.md. - Compare cards: pros and cons are marked only when the answer says so explicitly (check for a pro, minus for a con); everything else stays a neutral fact.
- Follow-up suggestions: the
hermes-uiskill ends informative answers with up to three follow-up questions, shown as a vertical list. The setting "Follow-up suggestions" turns them off; Hermes is then told to skip them. - Events and "what's on" questions route to place cards with photos.
- Live-data answers search first: for product, place and weather questions the router tells Hermes the answer needs live data, and the
hermes-uiskill no longer lets it answer from memory without searching first. pathsanswer component: 2-6 ways, variants or architectures ("where do the files live", "how does a request travel") as one card: title, verdict badge (neutral, good, warn, bad), a chain of node pills joined by arrows, one note line. Optionally a single choice that sends your pick back. The router recognises these questions and thehermes-uiskill documents the format.blocksanswer component: an architecture or setup at a glance: one card with up to three columns (variants or tiers) of labelled boxes, an optional shared base layer and a caption. Columns sit side by side on tablets and desktop and stack on a phone. Display-only; router format and skill reference included.- Typed component fences (for example
```suggestions) render as cards. - Platforms: Android APK (64-bit ARM, Android 7.0+), web app (PWA, installable to the home screen, see docs/WEB-APP.md), macOS app and Linux AppImage / .deb (below). German, English and Spanish UI; the web app's
<html lang>follows the UI language. The iOS app is prepared for TestFlight / App Store (release configuration, numeric marketing version) but not distributed yet. - macOS app (Tauri, Apple Silicon, macOS 13+; Developer ID signed and notarized): native look with a translucent sidebar, unified tit...