Blotten

designer, engineer, multimodal artist

daemon

A wearable voice assistant that runs on hardware you own — four models, one GPU, no cloud. Hold it, say the thing, and the answer turns up on a wall made of paper. Most of the work so far has gone into what it isn't allowed to do.

Speech is captured on a chest-worn ESP32-S3 and carried home. A machine in the house transcribes it and routes it across four local models; the answer comes back on an e-paper wall. It recalls and reasons, but the only thing it can change is the owner's calendar — and only after showing the exact write on the wall and hearing a spoken yes.

approach

Most AI hardware is opaque and seamless — an aesthetic of inscrutable competence that asks for trust by looking like it knows something. Daemon goes the other way: translucent cream plastic, a squircle screen, a physical click wheel, roughly the 1998–2004 vocabulary. A shell you can see into says there's a machine in here. A wheel says this is operated, not consulted.

Printed the length of the flank: be not afraid: this device is dumb. Luger and Sellen found user expectations of conversational agents "dramatically out of step with the operation of the systems" (CHI 2016). A screenless device has nowhere to say what it is, so the capability statement went on the enclosure, where it can't be lost.

The one piece of documentation you can't lose
The wheel — the only part with no inference in it

Hold to arm, hold to close; taps do nothing. The microphone is open exactly while you're holding it, so there's no state to infer.

process

Four models share one GPU behind a single routing seam: Whisper transcribes, a 7B handles strict JSON, a 20B does reasoning, a small one does embeddings. That file's docstring opens with "the scars this file encodes" — four production bugs now structurally impossible. The sharpest: the local runtime silently truncates context when it isn't set, so a long prompt doesn't error, it loses its tail and gets answered confidently.

The useful part is where the model gets removed. A calendar read is arithmetic, so a deliberately timid template gate answers it from the .ics files before anything else runs — 300 seconds to under a second by taking the model out of the path rather than shrinking it.

The assembly in elevation

The node is 8.2k lines of C and behaves like a courier rather than a client: audio encrypted per segment and queued to SD, so capture never depends on connectivity. Under 240 ms of voice is discarded on the device before the radio is used at all.

v1 — squeezed the board against the glass
v1b — polish on a design whose flaw was structural
v2 — mount, don't squeeze

The enclosure took four generations. v1 mounted by compression and failed three ways at once: pressure killed a column of display pixels, nothing located the board so the SD card walked out, and it read as a case. v2 screws the board down to its own rear tapped holes instead — located, and the glass touches nothing. The current body is one printed part, 42.0 × 51.0 × 12.25 mm, its footprint a superellipse of degree n ≈ 4.45 matched to the OEM case within 0.1 mm at the corners.

Section — thickness derived from the stack, not chosen
Cell and haptic side by side rather than stacked

context

  • Ongoing personal research build, used daily by one person. Not a product. The repo tracks every component as live, built, designed or missing — including the honest note that the firmware in the repo is not the firmware on the device in hand.
  • The constraints are the argument. The model can't act and never gets an acting toolset. It never resolves a date: asked to, it turned "thursday" into a Sunday. A yes needs two independent keys, and the model may only ever downgrade one.
  • Recurrence by voice is designed and deliberately unshipped — a live probe showed the model over-flagging repeats and reading a birthday as a one-off.
  • Framing, not evidence: nothing here has been through a user study. Luger & Sellen (CHI 2016); Klemmer, Hartmann & Takayama (DIS 2006); Dourish (2001); Ishii & Ullmer (CHI 1997).
  • Built under the studio name Distractions. Code MIT, docs CC BY 4.0.