Desk buddies: tiny ESP32 faces that live next to your laptop

Why makers kept putting little faces next to their laptops in 2026, from a pet that asks before Claude runs a command to a busy light for your door.

Published

Desk buddies: tiny ESP32 faces that live next to your laptop
On this page

Claude Code is halfway through a task on your laptop when it stops to ask if it can run a command. Next to your keyboard, a stick-sized screen has been sweating along with the session. Then the request arrives, and the pixel pet turns impatient while its LED blinks at you.

You press the front button (button A). That click approves the prompt on your computer, and because you answered in under 5 seconds, floating hearts drift up the screen.

That's a desk buddy: a tiny screen with a face and one job. Anthropic published one for Claude in April 2026, and makers on Schematik have shared more than 20 designs since.

A pet that asks before Claude acts

Anthropic's Claude Desktop Buddy turns permissions into a thumb game. Claude for macOS and Windows connects Claude Cowork and Claude Code to maker devices over BLE (low-power Bluetooth, the kind watches and fitness bands use), so desk hardware can show permission prompts, recent messages and other interactions.

The screen goes dark after 30 seconds of inactivity, but stays on while a prompt waits. Press button A to advance screens or approve a prompt, and press button B to scroll text or deny it.

Claude on your computer Claude wants to run a command Claude Code or Cowork asks for permission BLE M5StickC Plus on your desk Attention The pet looks impatient, the LED blinks and the screen stays on You answer A · approve B · deny BLE Claude on your computer Prompt answered M5StickC Plus on your desk Under 5 s Heart Floating hearts if you approved fast
When Claude needs permission, the pet turns impatient and its LED blinks. Press A to approve or B to deny, and if you approve in under 5 seconds, hearts float up.

The companion moves through seven states during your coding session:

  1. Sleep when disconnected from Claude.
  2. Idle when the session is quiet.
  3. Busy with drops of sweat when sessions run.
  4. Attention with a blinking LED when a prompt waits.
  5. Celebrate with confetti when you level up every 50,000 tokens (the chunks of text Claude reads and writes).
  6. Dizzy when you shake the board.
  7. Heart with floating hearts when you approve a prompt in under 5 seconds.

Place it face-down and it naps to refill its energy.

The firmware includes 18 pets, each with seven animations. To use your own character, drag a folder of custom GIFs onto the Hardware Buddy window in the desktop app to stream them over BLE to the board. Keep each GIF 96 pixels wide, and keep the folder under 1.8 MB alongside a manifest.json file that maps each GIF to a state.

To pair your board, open Claude on your computer and click Help, Troubleshooting, then Enable Developer Mode. Open the Developer menu, click Open Hardware Buddy, press Connect and pick your board. Anthropic calls this a developer mode maker feature, and the menus or Bluetooth behavior may move in a future update.

Can I run it on my board?

The M5StickC Plus runs Anthropic's code as written because the sketch depends on the M5StickCPlus library (the code that drives that stick's screen, buttons and motion sensor), so you can't flash the default project straight onto another board. Espressif wrote about the Claude Hardware Interface on May 14, 2026 and pointed ESP-IDF developers (using Espressif's software framework for ESP32 chips) to its ESP Desktop Buddy SDK with examples for the M5Stack Chain DualKey and ESP32-S3-BOX-3, while LilyGO maintains Claude Desktop Buddy firmware for the T-Keyboard S3 Pro (an ESP32-S3 with 4 tiny 128×128 screens) and a second guide for the T-LoRa Pager. Although Anthropic's Build with Claude event showcased the M5Stack Cardputer for AI agent interfaces, if you're holding a Cardputer, M5Stack StickS3 or Cheap Yellow Display, you'll need a fork with display and button drivers written against the protocol in REFERENCE.md (the file listing every message Claude and the board exchange).

One face, more than 20 designs

One pair of tall white eyes shows up in more than 20 desk buddy designs on Schematik, and you can spot it in our 2027 ESP32 project roundup.

The original Tiny ESP DeskBuddy build guide runs on a Waveshare ESP32-C6-Touch-LCD-1.47, one board with no loose wires. Do not pinch or puncture the LiPo (a flat rechargeable lithium-polymer battery) when closing the printed shell, because a damaged lithium pouch can overheat or catch fire.

The DeskBuddy face blinks, then the screen switches to a large segmented clock and then to a date page.
Every 8 seconds the DeskBuddy flips from its face to the clock and then the date. Filmed on a real Waveshare ESP32-C6-Touch-LCD-1.47.

Want the exact firmware on your own board? Open the Tiny ESP DeskBuddy in Schematik to get your own copy of the project, with the code, wiring and printable case. Type your Wi-Fi name and password into WIFI_SSID and WIFI_PASSWORD before you press Deploy.

Community members soon moved it to other boards. In an AI-generated design on Schematik by elcid33 for the M5Stack StickS3, press button A to step through Face, Clock, Date, Weather, Moon, AAPL and GitHub, and press button B on the Face page to pick a mood. Do not solder a second LiPo to it. The stick has its own 250 mAh battery and charger inside.

Another AI-generated design by James Blank (Jiffybytes) ports the dashboard to a Cheap Yellow Display, drops the MPU-6050 motion sensor and wires a DHT11 (a temperature and humidity sensor) with DATA on GPIO27 and VCC on 3V3. Its indoor page displays Fahrenheit and relative humidity (%RH). Keep the DHT11 away from the display or a sealed pocket, because trapped heat skews its temperature reading high.

Cheap Yellow Display DHT11 3V3 GND GPIO27 3V3 only VCC GND DATA
The CYD desk buddy adds a DHT11 with 3 wires. Don't power the DHT11 from 5V, because the ESP32's pins only handle 3.3V. A bare 4-pin DHT11 also needs a 4.7 to 10 kΩ resistor from DATA to 3.3V.

A pet that needs you

Claude's buddy waits for your laptop before it reacts. For a companion you play with by hand, try the Cosmic Critter pet guide.

This 40-minute beginner build wires a Raspberry Pi Pico to an MPU6050 motion sensor, a 0.96-inch OLED screen (a tiny screen that lights each pixel on its own), a WS2812B RGB LED ring and a piezo buzzer (a tiny speaker component that clicks and beeps when voltage pulses through it). It chirps every 3 seconds while idle. Tilt it to shift its face between HAPPY, SLEEPY, DIZZY and HYPER, or press a button on GP14 to cycle the 4 moods without tilting.

Lying flat HAPPY Tipped one way SLEEPY Tipped sideways DIZZY Tipped the other way HYPER
Tip the Cosmic Critter one way and it gets sleepy, tip it the other way and it goes hyper, and roll it sideways to make it dizzy. Lay it flat and it's happy again. The button on GP14 steps through the same 4 moods in this order.

When you plug the Pico in, watch the Serial Monitor (the text window in your code editor) for Cosmic Critter ready. If that line doesn't appear within 2 seconds of power-on, the MPU6050 initialization failed, so check your GP4 and GP5 wiring first. Prefer buttons over tilt sensors? Wire up the ClawdBot tamagotchi, a pixel lobster on an ESP32 with 3 buttons that gets grumpy when unfed.

Eyes with feelings

Some desk buddies drop status pages and put every pixel into expressive eyes. On Schematik, Duy Hoàng shared a photo of Cozmo Robot Eyes on an ES3C28P board, which includes a built-in 2.8-inch ILI9341 (the color screen built into the board). Because the screen is pre-attached, the project takes 2 steps and a USB-C cable.

Once you press Deploy, each blink lasts 130 ms while the eyes glance around and switch through emotion presets. If you expand the board later, do not connect an SSD1306 module (a small monochrome OLED screen) or extra wires to GPIO10, GPIO11, GPIO12, GPIO13, GPIO45 or GPIO46. The built-in screen uses those pins inside the board.

Want a face that reacts when you talk? Try the voice-controlled robot face guide, an intermediate 50-minute project connecting an ESP32-S3 to a 128×128 ST7735 (a small color screen) and an INMP441 digital microphone. The mouth opens wider the louder you speak, and you can switch its mood between idle, happy, sad and surprised by visiting /mood?set=happy in your browser.

Tie the microphone's L/R pin to GND (ground) so it stays on the left audio channel. Test by speaking normally from 30 cm away; if the mouth barely moves, set RMS_MIN (the quietest sound the mouth reacts to) in the firmware to 500.

A buddy that guards your focus

A desk buddy can also face away from you to signal the rest of the house. The ESP32 desk presence busy light is a 35-minute beginner build combining an HC-SR501 PIR sensor (a passive infrared sensor that detects moving body heat), a push button, an SSD1306 OLED screen and a WS2812B LED ring. With no Wi-Fi credentials to enter, it runs anywhere with USB power.

When your desk is empty, the screen shows FREE and the ring glows green. Walk up and it flips to HERE in orange for 120 seconds after your last movement (set by occupiedHoldMs in the code), or press the button during a call to lock onto BUSY in red. After plugging it in, wait before waving at the dome: the HC-SR501 needs a 30 to 60 second warm-up before its readings settle.

FREE Ring glows green You walk up HERE Ring turns orange and stays for 120 s after your last movement Press the button BUSY Ring turns red until you press again
The busy light shows FREE in green, turns orange and shows HERE when the motion sensor sees you, and switches to red BUSY when you press the button. Give the HC-SR501 sensor 30 to 60 seconds to warm up after you plug it in.
An OLED reads FREE next to a green ring, switches to HERE with an orange ring, then BUSY with a red ring, then back to HERE.
The busy light starts on FREE, flips to HERE when the motion sensor fires, and locks to BUSY when you press the button. A second press drops it back to HERE. Captured in the Schematik simulator.

The ESP32 focus timer is a 45-minute beginner build with an SSD1306 screen, KY-040 rotary encoder knob, piezo buzzer and LED ring. Press the knob to start a 25:00 countdown where the screen reads Focus and the ring glows sky blue (DeepSkyBlue in the code), turning green at break time. Beside it, the 30-minute beginner tiny OLED desk command centre shows time and weather, and lets any phone on your Wi-Fi push a message to your screen for 8 seconds.

An OLED labeled Focus shows 25:00, then counts down 24:59, 24:58 and onward next to a sky blue ring.
Press the knob and the focus timer starts counting down from 25:00 while the ring glows sky blue. Captured in the Schematik simulator.

Desk buddies for your AI

Community members also design AI companions on Schematik. The AI Desk Companion Approval Console, an AI-generated design by Parthiv Nair, combines an OLED face, MPU-6050 motion sensor and TTP223 capacitive touch pad. It connects over Wi-Fi, and tapping the pad sends an attention ping to a small Windows PC program.

The Cloud LLM Usage Monitor by Austin Terry uses a 2.0-inch ST7789 (a small high-resolution color screen) to display API usage for DeepSeek, OpenAI, Anthropic and OpenCode. Do not use ESP32 GPIO1 or GPIO3 for the screen, because those pins connect to the CH340G USB serial interface that talks to your computer. When sharing any AI monitor on Schematik, keep your personal API keys out of published code; Austin's project leaves all key constants as empty strings.

Which buddy should you build?

Compare the parts and time for each companion below, then grab the one that fits the board on your mat today.

BuddyBoardLevel and timeWhat you wire
Claude's desk petM5StickC PlusNot listedNothing
Tiny ESP DeskBuddyWaveshare ESP32-C6-Touch-LCD-1.47Intermediate, 45 minNothing, plus a battery plug
Cosmic CritterRaspberry Pi PicoBeginner, 40 minMotion sensor, OLED, LED ring, buzzer, button
Cozmo Robot EyesES3C28PNot listedNothing
Voice robot faceESP32-S3Intermediate, 50 minScreen, mic, amp, speaker
Busy lightESP32Beginner, 35 minMotion sensor, button, OLED, LED ring
Focus timerESP32Beginner, 45 minOLED, knob, buzzer, LED ring

Give it a new job

Once your buddy is blinking on your cutting mat, try drawing your own pet. Make seven GIFs (one per state), keep each 96 pixels wide and under 1.8 MB total, and drop the folder onto the Hardware Buddy window, or describe a buddy for your board in the Schematik app. What does your custom pet look like while sweating through a long task?

Keep building from here

Jump into a step-by-step build, or open Schematik and turn your own idea into code, wiring, and assembly instructions.