experiment · build log
a wrist-worn voice companion. zameel (زميل) is arabic for companion.
Thoughts don't arrive on a schedule. Mine show up on storage-facility walkthroughs, on trails, in the car; by the time I'm at a keyboard, half of them are gone. The phone is the obvious capture device and the worst one: I go in to save one thought and surface twenty minutes later, having saved nothing.
So: a screenless button on my right wrist (the watch keeps the left). Tap, say the thing, move on. Behind it, an agent with access to my real tools, calendar, email, messages, and todos, turns the words into actions and texts me a confirmation. The interesting problems are not the recording; they are trust, permission, and what happens when the transcription mishears you.
The spark was a Plaud voice recorder and a simple wish: the moment a transcript exists, fire a webhook. Capture, transcribe, act. No app open, no screen involved.
Built Plaud bridge, the software precursor that still runs every five minutes today: a pure-Python poller that turns recordings into clean iMessage notes, and treats anything starting with “Claude, …” as a command, with approval over iMessage reply.
The reframe that named the project: this is not a recorder, it is a voice-command surface for an agent. Wrist puck → cloud receiver (transcribe, durable queue) → Mac daemon → Claude Agent SDK with my real tools → a confirmation text back to my wrist.
The safety model became the design center. Three tiers: free (notes, drafts, my own calendar: execute and confirm), confirm-first (anything that reaches another human), never (deletions, payments, credentials). A mishear of “send” always resolves to “draft.”
Hardware direction: a Seeed XIAO ESP32-S3 Sense with a Blues Notecard for LTE, a physical record button, and a 1,000 mAh battery. Press, record, store, upload over WiFi, queue over cellular otherwise. The first build will be a brick; the roadmap collapses it onto a custom PCB, roughly 42 × 30 × 10 mm.
Evaluated the Mudra gesture band as a trigger. Rejected as the capture device: no microphone, no radio of its own. A good lesson in checking the spec sheet before falling for the demo.
Software scaffold shipped: a headless fork of Plaud’s official iOS template that background-syncs over BLE and uploads the second I tap stop, plus a zero-dependency Node receiver and daemon that runs the Claude agent per transcript. Ten of ten unit tests green, one live round-trip through the real agent.
Hardware on the wrist and real speech-to-text. Then the bigger move: off my Mac entirely, onto a hosted console, so Zameel works even when my laptop is asleep and, eventually, for people who are not me.
plaud notepin + official sdk (headless ios fork) · seeed xiao esp32-s3 sense · blues notecard cellular · zero-dep node receiver + daemon (launchd) · whisper-class stt · claude agent sdk · imessage for confirmations
Prototype. The software pipeline is tested end to end in dry runs; the hardware is not on my wrist yet. This page is the build log, and it will change as the project does.