# [REDACTED_PHONE]

## HomePod But Not Retarded — Smart Speaker Project

Sam is building an open-source smart speaker: **homepodbutnotretarded.com**

### Hardware (All Parts Status)
- **Pi Zero 2 W** ($15) — ✅ Sam bought
- **2x Adafruit I2S MEMS Mic (SPH0645)** ($14) — ✅ Sam bought
- **MAX98357A I2S Amp** ($6, Adafruit #3006) — ✅ Sam bought
- **40mm 4Ω 5W Speaker** ($5, Adafruit #3968) — ✅ Sam bought
- **5V/2.5A USB-C PSU** ($6) — ✅ Sam bought
- **Micro-USB to USB-C adapter** — ✅ Sam bought
- **WS2812B NeoPixel breakout** (~$3) — 🔲 recommended adafruit.com/product/1312
- **28 AWG + 22 AWG silicone wire** — 🔲 buy from Amazon
- **32GB microSD** — 🔲 need to buy
- **Biden bust STL** (~$5) — 🔲 buy from MyMiniFactory, modify in Blender/Meshmixer
- Direct-wire I2S (no HAT stacking) — solder 9 points on unpopulated GPIO header
- BOM ~$65 total

### Architecture: Cloud-Everything (Dumb Pipe)
Device runs ONLY: OpenWakeWord + WebSocket audio bridge + LED controller
Everything else on Merit's cloud server (Craig's Hetzner box):
- **Wake word**: OpenWakeWord — **"Hey Craig"** (start with built-in, train custom later ~500 samples)
- **STT**: Deepgram cloud (~$0.004/min, ~300ms)
- **Intelligence**: Claude API via Merit cloud server
- **TTS**: **ElevenLabs** cloud (Biden voice clone, ~200ms streaming)
- **Streaming**: WebSocket bidirectional audio
- **Auth**: Device token provisioned during USB setup (user never touches API keys)
- **Hosting**: **Merit-hosted only** — no self-hosted option
- **LED**: Single WS2812B RGB — blue=listening, yellow=thinking, green=speaking, red=error
- **USB port**: Live with micro-USB — cosmetic fix not worth it, port hidden after setup
- Smart home: Home Assistant REST API (separate device)
- Music: Spotify Connect (spotifyd)
- Setup: USB gadget mode → Tauri desktop app (3-screen wizard)

### Key Decisions
- No HATs — direct-wire eliminates 11mm air gap
- Cloud STT over local Whisper (512MB RAM constraint)
- Adafruit over Amazon/AliExpress (knockoff risk ~30% DOA)
- No combo amp+speaker units (all use HAT form factor)
- ElevenLabs over OpenAI TTS (lower latency, voice cloning for Biden)
- Dropped local Piper TTS entirely — device is dumb pipe
- No local agent SDK — all intelligence in cloud
- Case: Biden bust from MyMiniFactory (~$5 STL), hollowed in Blender

### 3D Case: Biden Bust
- Source STL: MyMiniFactory (~$4.99, best starting mesh)
- Modification needed in Blender/Meshmixer:
  - Hollow out (~3mm walls)
  - Flat bottom with snap-fit or screw mount
  - Mic holes on top of head
  - Speaker port in back/bottom
  - Internal cavity ≥72x38x30mm for components
- Target dimensions: ~72x38x30mm internal

### Docs Updated
- `docs/homepod-but-not-retarded.md` — full architecture rewrite, decisions log, cloud-everything
- `docs/hpbnr-setup-architecture.md` — updated for device token auth, "Hey Craig", no API keys
- `docs/hpbnr-compact-form-factor.md` — simplified RAM budget, resolved questions

### Next Steps
1. Sam buys wire from Amazon (28 AWG + 22 AWG)
2. Sam buys Biden bust STL from MyMiniFactory, modifies for enclosure
3. Buy WS2812B NeoPixel breakout (adafruit.com/product/1312, $2.95)
4. Create GitHub repo (Merit-Systems/homepod-but-not-retarded)
5. Build cloud bounce server on Hetzner (WebSocket: Deepgram → Claude → ElevenLabs)
6. Clone Biden voice on ElevenLabs
7. Build pre-flashed SD card image
8. Prototype audio pipeline end-to-end
9. Build Tauri desktop setup app

## Proactive Work Session (5:18 PM ET)

### Research
- the-stables: Sam shipping StableDomains rapidly (PRs #83-90 in 2 days)
- poncho: Homepage redesign, v44, subprocess fix all merged
- x402scan: Resource registry API (#661), v2 schema fixes merged

### Decision: x402scan #663 — Add escrow scheme
Unassigned bug blocking external contributor (onchainexpat.com) from registering 36 x402r escrow endpoints. Clean 4-file fix, clearly specified.

### Execution
- Created PR #667: adds `escrow` to AcceptsScheme in Prisma enum, Zod schema, normalization schema, and type cast
- tsc passes cleanly