• v0.1.0 70282dfb65

    First stable working Android version (Desktop still unpolished)
    CI / Gateway plugin tests (push) Successful in 4m55s
    CI / Kotlin tests (android host + desktop) (push) Successful in 6m48s
    Stable

    ARIA released this 2026-08-23 18:20:48 +00:00 | 21 commits to master since this release

    Release 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 own hermes gateway over 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 hermes config.yml editing 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_message routing 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.ack reports 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_automation marks a channel read-only for
      cron/webhook output (composer hidden, message.send rejected, flag synced
      to all devices).
    • Official hermes-gateway status messages as a dedicated comment category.
    • MAX_MESSAGE_LENGTH raised 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 .deb with -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
      tappable chat_id pill 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 with 00-overview.md),
      frames.schema.json as the frame source of truth, security and setup docs.
    • User-facing README rewrite + Apache-2.0 LICENSE.

    Requirements

    • hermes-agent with the gateway (hermes gateway setup → hermes gateway).
    • Android: Android device + adb for 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