-
released this
2026-08-23 18:20:48 +00:00 | 21 commits to master since this releaseRelease Notes — Iris × Hermes 0.1.0
First public release. Iris is a native Android + desktop chat app for
hermes-agent, built with Compose
Multiplatform and paired with your ownhermes gatewayover a private WebSocket.
Everything stays on your own infrastructure.Highlights
- One codebase, two apps — native Android app and desktop app (Linux, macOS,
Windows) sharing a single Kotlin/Compose codebase. - Telegram-quality chat experience — streaming replies, markdown rendering
(tables, syntax-highlighted code, tap-to-copy), reasoning and tool activity
shown in the bubble, media in both directions, search from everywhere. - Channels & threads — organize reports, cron jobs, and webhook output into
channels; create threads manually or let the agent auto-thread topics. - Push notifications — FCM (primary) or ntfy (fallback), with offline
catch-up and deduplication. - HTML artifact preview — agent-sent HTML/CSS/JS rendered in an in-app
WebView (Android WebView / desktop JCEF). - Fully in-app settings — appearance, font size, streaming, tool/reasoning
verbosity, and more; no hermesconfig.ymlediting required.
Gateway plugin (
gateway-plugin/)- New hermes platform plugin (
iris) with zero new Python dependencies and
zero hermes-core changes; the app is a first-class hermes messaging platform
(slash commands, cron delivery,send_messagerouting all work). - http SSE server with token pairing, outbox sync, and full channel/thread
management (create/rename/favorite/icon/delete, hard deletes). - Push backends: FCM and ntfy;
hello.ackreports the active backend so the
app only runs its ntfy listener when needed. - Push dedupe: gateway tracks the highest outbox cursor delivered per device
via push (devices.last_pushed_cursor); replayed frames at/below the
watermark are not re-notified. 5s per-chat push coalescing. - Channel automation:
channel.set_automationmarks a channel read-only for
cron/webhook output (composer hidden,message.sendrejected, flag synced
to all devices). - Official hermes-gateway status messages as a dedicated comment category.
MAX_MESSAGE_LENGTHraised to 1 MB so long replies and complete HTML
artifacts are no longer chunked.- History frames omit null media (schema-conformant).
Android app
- Pairing flow (manual URL + token or QR Code), connection status bubble in the header.
- Chat: streaming with toggle, markdown bubbles, single-newline preservation,
timestamps + delivery checkmarks, back-to-bottom FAB, history pagination,
long-press message selection and delete (synced to all devices). - Media upload/download/playback in both directions.
- HTML artifact cards with full-screen WebView preview (DOM storage enabled).
- Push: FCM handler + ntfy foreground listener (started/stopped based on the
gateway's backend), background notifications. - Local message cache (SQLDelight) for instant start and offline reading.
- Settings: appearance (bubble colors, background color/image), app-wide font
scale (0.8x–1.5x), streaming and tool/reasoning display options. - Winged-bubble adaptive app icon.
Desktop app
- Two-pane layout, system tray, keyboard shortcuts, inspector, window icon.
- Packaged via
jpackage(app-image, or.debwith-PjpackageType=deb).
Channels, threads & search
- Channels: create, rename, favorite, change color/icon, delete (default
channel is rename-only); flat Material star/heart badges; context menu on
long-press/right-click; favorites and icons synced across devices. - Threading: topic switcher, Ctrl+T, auto-threading (default channel only).
- Global message search.
- Cron delivery to channels, including automation (read-only) channels with a
tappablechat_idpill for delivery targeting.
Quality, tooling & docs
- Lint/LSP cleanup across gateway, Android, and desktop (alpha → stable).
- Gitea CI + release workflows (builds APK and AAB; keystore guidance in
CI-SETUP.md). - E2E test driver (
gateway-plugin/tests/e2e.py) and WS probe; Python test
suite for the gateway plugin; Kotlin host-side tests. - Numbered reference library in
docs/(start with00-overview.md),
frames.schema.jsonas the frame source of truth, security and setup docs. - User-facing README rewrite + Apache-2.0 LICENSE.
Requirements
hermes-agentwith the gateway (hermes gateway setup→hermes gateway).- Android: Android device +
adbfor development; JDK 17 for builds. - Desktop: Linux, macOS, or Windows.
- Push: FCM requires
google-services.json(optional — without it, ntfy is
the push path; self-hosting ntfy is recommended).
Downloads
- One codebase, two apps — native Android app and desktop app (Linux, macOS,