Build
Claude Control Pad
A desk buddy that chirps when a Claude Code session needs you.
These parts on their own: $179. The 3D-printed parts are not included, but the Big Kit comes with a free 3D print voucher (the Chunky Kit with three), a custom casing included. Design yours with our free, open-source AI CAD tool, or email [email protected] and we will help you print it.
- 14-Port Motherboard×1
- USB-C×1
- Screen×2
- Speaker×1
- Microphone×1
- Distance Sensor×1
- Button×1
- Knob×1
Smart Home · Wi-Fi · Bluetooth
What it does
- 1It sits on the desk next to your laptop. When a Claude Code session needs you, it chirps and its eyes look up.
- 2Two screens are the eyes, the speaker its voice, the microphone its ears, and the distance sensor in its nose knows when you lean in.
- 3A printed shell around the 14-port board. The modules sit behind the face and reach the board with short ribbon cables.
How to build it
- 1Connect the microphone to ports 1 and 2 with a ribbon cable.
- 2Connect the right-eye screen to ports 3 and 4.
- 3Connect the speaker to ports 5 and 6.
- 4Connect the button to port 7.
- 5Connect the left-eye screen to ports 9 and 10.
- 6Connect the distance sensor to port 11.
- 7Connect the knob to ports 13 and 14.
- 8Slide the USB-C into port 8 and plug the cable into your computer.
- 9Plug it in and press Upload to board.
Uploading works from Chrome or Edge on a computer. Open this page there with the board plugged in.
On the board
- 1+2MicrophoneIts ears
- 3+4ScreenThe right eye
- 5+6SpeakerIts voice
- 7ButtonBoop: a chirp and a happy face
- 9+10ScreenThe left eye
- 11Distance SensorThe nose: wakes it when you come close
- 13+14KnobVolume; press to talk
- 8USB-CPower and programming
The code
clawd.cpp · 246 linesDownload
/*
* Clawd: Claude Code desk buddy firmware (Atech 14-port board, ESP32-S3)
*
* What it does on its own:
* - two portrait screens are the eyes: a terminal-cursor pupil that blinks, glances around, and shows a mood
* (idle / thinking / listening / talking / happy / alert / sleepy)
* - the distance sensor wakes it when someone comes close and sends it to sleep when they leave
* - the boop button chirps + a happy face; the knob is the volume (ring shows the level), knob press = push-to-talk
* - the mic level is posted so the host can see when you speak
*
* What the host (host/clawd.py) adds over USB serial, Atech JSON protocol (software/talking-to-your-device.md):
* actions set_state <name> | look {"x":-1..1,"y":-1..1} | blink | say_level 0..1 | set_volume 0..1 |
* play_tone {"frequency","duration"} | play_rtttl <str> | play_pcm <b64 16 kHz mono s16> | stop |
* listen 0|1 (stream mic PCM as "pcm" events, base64, 512 samples per chunk) | mood_hold ms
* events button_press/button_release (boop), knob {"pos","dir"}, ptt 1/0, presence 1/0, distance mm,
* sound_level, pcm <b64>, state <name>
*
* Structure follows software/program-structure.md: everything runs in FreeRTOS tasks, loop() parks.
*/
#include <Arduino.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_task_wdt.h"
#include <Wire.h>
…




