Grouse is a native chat client for a self hosted goose agent - a phone and desktop ACP frontend. Grouse is deliberately thin, implementing only the stable (and unstable) goose ACP spec using GDK (Grouse Development Kit, not GNOME) and hand-rolled where there is not GDK coverage (yet).

Download
- Android (Kotlin/Jetpack Compose) - APK
- Linux (Qt6 + Kirigami) - Flatpak
- MacOS - Planned
- iOS - Not currently planned
Current release: v0.1, September 2026.
How it works
Grouse speaks ACP - JSON-RPC 2.0 over WebSocket, using the official goose SDK. A second transport, roam, carries the same protocol over an iroh peer-to-peer connection that can tunnel through network boundaries. I use it to access HPCs that otherwise need complicated firewalls.
Client logic is implemented once in Rust, under core/. It uses uniffi to generate Kotlin bindings, and a C ABI for the desktop app, so the protocol lives in one place only.
Source
Code, architecture notes, and build instructions are at https://github.com/ccgauvin94/grouse. AGPL-3.0. Contributions very welcome.