Your Desk Pet Can Now Approve Claude Prompts — Yes, Really
You've probably had this moment: you're deep in a Claude Code session, an approval prompt pops up, and you have to alt-tab back to your terminal just to click "yes." It's a tiny friction, but it adds up. What if that approval could live on a physical device sitting on your desk—something that gets visibly impatient when it's waiting on you? That's exactly what the claude-desktop-buddy project from Anthropic enables, and it's as delightful as it sounds.
This is an open-source firmware and reference implementation for building a "desk pet" on an ESP32 that connects to Claude over Bluetooth Low Energy (BLE). It's not just a toy—it's a full two-way bridge that displays permission prompts, shows recent messages, and even lets you approve or deny actions right from the device's buttons.
What It Does
At its core, this project is Anthropic's way of opening up Claude's desktop apps (macOS and Windows) to maker hardware. They've published a lightweight, opt-in API that lets devices like an ESP32 communicate with Claude Cowork and Claude Code over BLE. The actual wire protocol is documented separately in REFERENCE.md—Nordic UART Service UUIDs, JSON schemas, and the folder push transport—so you don't need this specific codebase to build your own device. This repo is just their example.
That example is a desk pet running on an M5StickC Plus (an ESP32 board with a small display, IMU, and buttons). The firmware is written for the Arduino framework and depends on the M5StickCPlus library for display, motion sensing, and input. The pet has a personality: it sleeps when nothing's happening, wakes when Claude sessions start, gets visibly impatient when an approval prompt is waiting, and lets you tap a button to approve or deny.
Beyond the core approval flow, the device supports multiple screens—a transcript view, a "pet" mode with animations, an info screen, and an approval screen. You can shake it to make it dizzy, put it face-down to nap (which refills its energy, apparently), and toggle the screen off with the power button. There are eighteen ASCII pets built in, each with seven animations (sleep, idle, busy, attention, celebrate, dizzy, heart). You can also drag a custom GIF character pack onto a drop target in the Hardware Buddy desktop window, and it streams the pack over BLE to switch the device into GIF mode live.
Why It's Cool
This project is interesting on several levels, and not just because it's adorable.
-
It turns a notification into a physical presence. Instead of a popup you might ignore, you get a device that literally gets impatient. That's a clever nudge mechanism—it's harder to ignore a physical thing staring at you than a toast notification.
-
The approval flow is genuinely practical. Approving or denying from the device's A and B buttons means you don't have to switch contexts. For developers who live in Claude Code all day, that's a real workflow improvement, not just a gimmick.
-
The architecture is refreshingly open. Anthropic didn't just build a closed gadget. They published the wire protocol so anyone can build their own compatible hardware. The README explicitly says you don't need any of this code to build your own device—just read
REFERENCE.md. -
The attention to detail is charming. The device auto-powers-off after 30 seconds of no interaction, but stays on while an approval prompt is pending. It auto-reconnects over BLE whenever both sides are awake. You can wipe everything from the device itself via a factory reset in the settings menu. These are the kinds of decisions that show someone actually used this thing.
-
The GIF character pack system is a nice touch. Being able to drag a folder onto a desktop window and have it stream to the device live—with a settings option to revert to ASCII mode—makes the pet customizable without needing to reflash firmware.
How to Try It
If you want to try this yourself, you'll need an M5StickC Plus (or a fork that swaps the display/IMU/button drivers for your own hardware). Here's the path:
-
Install PlatformIO Core if you don't have it already. It's the build system used for flashing.
-
Clone the repository from github.com/anthropics/claude-desktop-buddy.
-
Flash the firmware:
pio run -t upload
If you're reflashing a previously-used device, erase it first:
pio run -t erase && pio run -t upload
-
Pair with Claude: In the Claude desktop app, enable developer mode via Help → Troubleshooting → Enable Developer Mode. Then open the Hardware Buddy window under Developer → Open Hardware Buddy…, click Connect, and pick your device. macOS will ask for Bluetooth permission on first connect.
-
If discovery fails: Make sure the device is awake (press any button) and check that Bluetooth is enabled in the stick's settings menu.
Once paired, the bridge auto-reconnects whenever both sides are awake, so you don't need to re-pair every session.
Final Thoughts
This project is best for two kinds of people: developers who want a fun, physical companion for their Claude workflow, and makers who want a reference implementation for building BLE-connected hardware that talks to Claude. The fact that Anthropic open-sourced the wire protocol alongside the example firmware is a genuinely thoughtful move—it lowers the barrier for the maker community to experiment.
Is a desk pet that approves prompts going to change your life? Probably not. But it's a great example of what happens when you give developers an opt-in API to a tool they already use daily—they'll build things that make the experience more tangible, more fun, and occasionally more efficient. If you've got an M5StickC Plus lying around, this is a fun weekend project. If not, it's still worth a look at how they structured the BLE protocol and the pet's state machine.
Follow @githubprojects for more developer tools and open source projects.