Anthropic has opened its Claude Hardware Interface (Bluetooth API) to developers, enabling an ESP32-S3-based desk companion to connect directly to the Claude desktop app over Bluetooth Low Energy (BLE).
To demonstrate this new feature, the company released an open-source reference project called Claude Desktop Buddy. It currently runs on the M5StickC Plus (an ESP32-based board from M5Stack, about $30 on AliExpress and Amazon) and works as a small interactive hardware companion for Claude. Also, during the recent “Build with Claude” event, the company recommended the ESP32-S3-based M5Stack Cardputer as one of the best hardware options for developers who want to build physical devices that interact with AI agents.
Designed as a physical companion device for Claude Cowork and Claude Code on macOS and Windows, it stays on your desk and provides real-time updates on the AI agent’s activity. It also lets you respond to permission requests directly using its buttons, so you can approve or deny actions without going back to the desktop app, making interaction with the AI faster and more convenient.
The “Buddy” feature started as a hidden Easter egg and April Fools’ joke inside the Claude Code CLI. It was planned for April 1st, 2026, but it got leaked a day early through an accidental npm source map. Developers could summon it with a simple command to display a reactive ASCII character whose energy and mood changed based on their coding activity. The goal was to make long terminal coding sessions more fun and less boring. But over time, as it got popular, Anthropic decided to expand the concept beyond software. By late April 2026, the company open-sourced the Claude Desktop Buddy project and released a local Bluetooth Low Energy (BLE) API for its desktop apps. You’ll find the code and documentation on GitHub.
This hardware interface solves a key problem of frequent user approvals that similar AI systems like StackChan, Loona Deskmate, and Espressif’s EchoEar voice chatbot do not address. Instead of constantly switching back to your computer screen, you can now receive prompts and approve or deny actions directly on the ESP32 device using physical buttons over BLE. The interaction stays local, fast, and private, and no API keys or internet connection are needed. The firmware also keeps the fun “desk pet” personality with animated visual feedback, while the open BLE standard makes it easy for makers to build their own custom versions.

The firmware turns the device into a cute Tamagotchi-style desk pet that reacts to your interactions with Claude. It sleeps when nothing is happening, wakes up as soon as a Claude session starts, and gets visibly impatient when an approval prompt is waiting.
The built-in states include:
- Sleep – Bridge not connected (eyes closed, slow breathing)
- Idle – Connected, nothing urgent (blinking, looking around)
- Busy – Sessions actively running (sweating, working)
- Attention – Approval pending (alert, LED blinks)
- Celebrate – Level up—triggers every 50K tokens processed (confetti, bouncing)
- Dizzy – Triggered by shaking the stick via IMU (spiral eyes, wobbling)
- Heart – Approved a prompt in under 5 seconds (floating hearts)
If you want a custom animated character instead of the built-in ASCII pets, it’s very easy, and Anthropic provides an official example called Bufo, where you can find custom GIFs. You can also create your own custom GIF character using the included prep_character.py tool. Simply prepare 96-pixel-wide GIFs for each of the seven animation states, create a simple manifest.json file, and put everything in one folder. Then just drag the whole folder into the Hardware Buddy window on your computer. The files are streamed over BLE, and your new character appears on the device instantly. Note: the entire character pack folder (manifest + GIFs) must fit under 1.8MB to be successfully streamed and stored in the ESP32’s flash memory.
The project is built for ESP32 and ESP32-S3 boards using the Arduino framework and is compiled and flashed with PlatformIO. It currently depends on the M5StickC Plus library for the display, buttons, and motion sensor. If you want to use it on other ESP32 or ESP32-S3 boards, you will need to fork the code and change the drivers to match your board’s pin layout.

On the M5StickC Plus, the front button (A) approves prompts or opens the menu, while the right button (B) scrolls or denies prompts. The power button toggles the screen or turns the device off. Shaking the device triggers a “dizzy” animation, and placing it face down puts the pet to sleep. To pair it with Claude, enable Developer Mode in the desktop app, open the Hardware Buddy window, and connect over Bluetooth. It will auto-reconnect afterward. Espressif also provides support through its ESP-IDF SDK and ESP Desktop Buddy library for developers who prefer not to use Arduino.

As a side note, we just wrote about the Clawdmeter project, an ESP32-S3-powered Claude Code token usage monitor, which may seem similar at first. However, while both are BLE-based desk companions for Claude, Clawdmeter is a community project for monitoring stats and alerts, and the Claude Desktop Buddy is Anthropic’s official open-source interactive companion with physical button approvals and Tamagotchi-style pet feedback.
Debashis Das is a technical content writer and embedded engineer with over five years of experience in the industry. With expertise in Embedded C, PCB Design, and SEO optimization, he effectively blends difficult technical topics with clear communication
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress. We also use affiliate links in articles to earn commissions if you make a purchase after clicking on those links.






xiao zhi can make similar but with audio and sound reply ;(
antropic please make better protocol for audio
I can see a port of Claude Desktop Buddy to several Waveshare ESP32 AMOLED devkits.
https://github.com/vthinkxie/claude-desktop-buddy-esp32