A browser gives an interface a generous rectangle. A 1.85-inch round display does not.
The ESP32 Claude Desktop Buddy adapts Anthropic’s maker firmware to a Waveshare ESP32-S3 Touch LCD. It connects to Claude Desktop over Bluetooth and shows status, recent messages and approval prompts.
Design inside the circle
The physical panel is 360 by 360 pixels, but the useful interface sits on a 300 by 300 logical canvas. That inset keeps controls away from the curved bezel and the corners which do not really exist.
The board combines a CST816 touch controller, a BOOT button and a latching side switch. Each input has to remain useful across normal, pet, information and approval screens.
A quick BOOT press advances or approves. Holding it opens the menu. The side switch scrolls, changes pages or denies an approval. Touch supports direct selection, including large answer targets for question prompts.
The controls overlap intentionally, but their meaning stays consistent with the current task.
State should feel visible
The buddy has distinct animated states for sleep, idle, busy, attention, celebration, motion and quick approval. Eighteen ASCII species are included, and custom GIF character packs can be streamed over BLE.
This personality is functional. A red attention state signals a pending decision. Slow breathing shows disconnection or sleep. Celebration marks a usage milestone without needing another dashboard.
Optional widgets show session and weekly usage when the desktop bridge supplies real data. The firmware does not pretend it can estimate quota from token counts alone.
Hardware changes the edge cases
The reset button is wired directly to the ESP32 reset line, so firmware cannot use it as an application control. The side switch latches, which means it has to be returned before it can trigger again. Battery use changes sleep timing, while an approval prompt keeps the screen awake.
Pairing also needs a recovery path. The settings screen can clear stored BLE bonds, after which the old device is forgotten on the computer before pairing again.
These constraints made the project enjoyable. Every interaction has a physical consequence, and every assumption can be tested by holding the device.
I like having the little thing on my desk. Building it also made the constraints impossible to ignore: a round screen has no corners, a latching switch behaves differently from a button, batteries run down and Bluetooth drops. The interface had to be designed around those facts, not squeezed down from a browser.