Atech 14-port · 7 modules · all 12 slots

Clawd bot

Two screens for eyes that show what Claude Code is doing right now. Hold the button to talk to a Claude Code session; Clawd answers through its speaker. The knob sets the volume and its press cancels.

Mood Idle
led · port 11
knob · vol 40%

The eyes run the firmware's animation logic, ported line for line: same shapes, timings, colours and captions, at the screens' real resolution, mounted portrait (80×160). The autoplay walks through one voice turn. Click a mood to hold it.

Build one

Get started

You need an Atech 14-port board, the seven modules below, a printed case, and Python 3.10 or newer. Voice also needs an OpenAI API key for speech-to-text and text-to-speech.

pip install -r bridge/requirements.txt          # atech, openai, pyserial
atech validate firmware && atech upload firmware  # check the UP arrow on each eye at boot

python bridge/clawd_bridge.py install-hooks       # once; backs up ~/.claude/settings.json
python bridge/clawd_bridge.py demo                # cycle every mood
export OPENAI_API_KEY=...
python bridge/clawd_bridge.py run --workdir ~/code/my-project

Print case/Clawd_Case_v2.stl as one piece, as it comes, with no rotation; settings are in case/PRINT_ME.md.

Inside

The seven parts

Wiring

Ports and data path

Mirroring Claude Code

Claude Code hook→ curl POSTbridge :8765→ USB serialmood + captions

Global hooks in ~/.claude/settings.json, so every session on this PC drives the face. With the bridge stopped, a hook fails in milliseconds and never blocks Claude.

Talking to it

hold button→mic 16 kHz stream→OpenAI transcribe→claude -p --resume→OpenAI TTS→speaker

Voice prompts go to one dedicated session per project folder, so follow-ups keep context. The tool calls it makes show on the eyes like any other session.

{"action":"mood","value":"tool"}
{"action":"label","value":"Bash"}
{"action":"detail","value":"npm test"}
{"action":"spk_play_pcm","value":"<base64, 512 samples>"}
Status

What is proven and what isn't

built

Firmware compiles for the 14-port (RAM 8.6%, flash 9.7%). Bridge tested offline against a mock board: hook mapping, caption sanitising, resampling and hook install/uninstall.

on hardware

Eye pairs 1+2 and 5+6 drive the screens. The generator emits the same constructor pins as the confirmed clawd_eyes build.

untested

Pairs 3+4 (mic), 9+10 (knob) and 13+14 (speaker) have never been the primary of a tested pair on this board. Audio over USB in both directions has not run on a real board yet.

case

The printed case has eye openings only. The button, knob and LED need holes. The speaker doesn't fit inside: CAD notes measure an 11 mm shortfall, so it hangs on a cable.