218c50d688aaab0aa7087826bc3743f39cb33bf3
M1 (gateway core loop / text round-trip): - WS server (ws_server.py): bind, hello auth (constant-time), hello.ack, heartbeat, connection registry - pairing.py: token generation, pairing store, QR payload - adapter.py: send() -> message frame; inbound message.send -> MessageEvent -> handle_message - app: Connect screen, GatewayClient (connect + reconnect), ChatScreen send/render, SecureStore (Android/Desktop) - tests/ws_probe.py: probe harness driving a real turn M2 (streaming + reasoning + tools + commentary): - protocol.py: M2 frame types (message.start/update/stop, tool.start/progress/end, commentary) - adapter.py: per-chat turn-state machine; classify outbound into frames; _split_reasoning; tool-line parsing - reasoning in streaming: capture via on_stream_delta hook (kind=reasoning, gated by plugins.stream_reasoning_deltas) with a FIFO barrier, attach to message.stop - app: live streaming bubble, ReasoningBlock (collapse + copy), ToolCard (Everything/Truncated/Nothing), dimmed commentary, typing - docs/14-milestones.md: M1/M2 marked done; reasoning note corrected
Iris × Hermes
A native Android + Desktop experience for hermes-agent, connected through a gateway platform plugin.
⚠️ HARD RULES
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.- 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.
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
- Phase: Planning complete → ready to implement (Milestone M0).
- Milestones: see
docs/14-milestones.md. - Locked decisions: see
docs/16-open-questions.md.
Quick orientation
- Architecture + rationale →
docs/01-architecture.md - Wire protocol →
docs/04-wire-protocol.md(+docs/protocol/frames.schema.json) - Gateway plugin design →
docs/03-gateway-plugin.md - hermes source cheat-sheet →
docs/15-hermes-reference.md - Toolchain setup →
docs/12-toolchain.md
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.
7.8 MiB
0 Stars
1 Watchers
0 Forks