Human Paradox - Colin's Blog

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).

Grouse chat Grouse menu Grouse roam

Grouse KDE

Download

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.