ARIA 60ec2b44a7 Auto-threading, history pagination, streaming toggle + tool/reasoning display settings
- Auto-threading (Telegram topic-mode workflow): message.send {auto_thread}
  mints a fresh AI-named thread (instant derived title, LLM upgrade via
  channel.renamed); channel.created {auto:true}; the app jumps into the new
  thread and relocates the optimistic pending bubble.
- history frame: paged full message history for initial channel open /
  scroll-up pagination (reconstructed from the outbox log).
- Streaming on/off: gateway side (display.platforms.android.streaming) plus a
  per-device app toggle (Settings → Streaming); reasoning/model/tokens carried
  on message frames.
- Context menu: long-press (touch) / right-click (desktop) thread affordances
  via a KMP rightClick expect/actual.
- Settings → Reasoning: auto-collapse long reasoning blocks (default on).
- Tool detail: the gateway now always supplies full tool data — it forces
  verbose tool progress (full args → tool.start.args) and captures each
  completed call via the post_tool_call hook (output/duration/ok → tool.end).
  The app reveals the full call + output on expand (Truncated) and
  auto-expands cards in Everything mode.
2026-08-20 16:26:52 +02:00

Iris × Hermes

A native Android + Desktop experience for hermes-agent, connected through a gateway platform plugin.

⚠️ HARD RULES

  1. hermes-agent/ is a read-only research reference. It is git-ignored and must NEVER be committed, pushed, or shipped. We only install our plugin into a live hermes home (~/.hermes/plugins/android); we never modify hermes core.
  2. ADB is installed and a device is connected (a5ca2a4b, Xiaomi MIX 2S, Android 10 / API 29). Use it to install/launch/debug the app on-device.

Start here

📚 The full implementation reference library is in docs/. Read docs/00-overview.md first, then follow the numbered docs.

Quickstart

Full walkthrough: docs/setup.md.

  1. Gateway: install the plugin (ln -s "$PWD/gateway-plugin" ~/.hermes/plugins/android), run hermes gateway setup (generates the pairing token, prints the server URL), then hermes gateway.
  2. App: cd app && ./gradlew :androidApp:installDebug (Android; ADB device connected) or ./gradlew :desktopApp:run (desktop).
  3. Pair: on the app's Connect screen, enter the server URL (ws://<gateway-ip>:8790/ws) + pairing token, then Test & Connect.
  4. Chat.

Pairing notes

  • Token location: ~/.hermes/.env on the gateway host (ANDROID_TOKEN), or the hermes gateway setup output (printed once, at generation).
  • Manual entry only: the app has no QR scanner yet — the server prints a QR payload, but you type the URL + token.
  • Default bind is 127.0.0.1: for a phone on the LAN, set ANDROID_WS_HOST to the gateway's LAN IP.

The three deliverables (this monorepo)

Path What
gateway-plugin/ Python hermes platform plugin (android). Runs in the hermes gateway process; opens a WebSocket server the apps connect to. Zero new Python deps, zero hermes-core changes.
app/androidApp Native Kotlin + Jetpack Compose client.
app/desktopApp Kotlin + Compose Multiplatform client — the Android app, tweaked for a big screen (shares app/shared).

The Android and Desktop clients live in one Compose Multiplatform Gradle project (app/) with a shared KMP module (app/shared).

Status

Quick orientation

S
Description
Iris × Hermes — native Android + Desktop client for hermes-agent via a gateway platform plugin. Compose Multiplatform app (Kotlin) + Python WebSocket gateway adapter. See docs/ for the full reference library.
Readme Apache-2.0
7.8 MiB
0 Stars 1 Watchers 0 Forks
Latest
2026-08-31 21:44:41 +00:00
Languages
Kotlin 52.2%
Python 47.4%
Shell 0.4%