DocsReference
How it works
Architecture: a Rust and Slint app, one click-through window, focus handling, agents over ACP, and a GPU-drawn office.
- Rust and Slint. Hover is one native app. The 2.x Windows app was .NET and WPF; 3.0 replaced it, and reads everything 2.x left behind: the data folder, the key,
settings.jsonand the sessions. - One window, one value. The notch is a single full-size, click-through window. Its shape grows from the resting size to the office by animating one openness value; the window itself never resizes, so it never blinks.
- A Swift app on the Mac. On macOS the notch, menu bar, Settings and voice are Swift (
macos/), around the same web office in a WKWebView, on the Rust backend (hover-backend), which the app starts over JSON lines on stdin and stdout. The Slint app is for Windows and Linux. - Never steals focus. At rest it can’t be activated, so brushing it doesn’t take your keyboard. That changes only while the office is open.
- Agents over ACP. Each tool is one hidden child speaking JSON-RPC over stdio (OpenCode: its own local HTTP server). A conversation is an ACP session; a reply goes to the same one.
- The office is drawn on the GPU, in its own crate, at one pixel per CSS pixel. It slows right down when nothing happens and pauses while hidden. With no GPU it draws at half size instead.