← all posts
// security · logging

Log smart-home AI without logging the household

A Raspberry Pi wired into your smart-home stack has one microphone, one camera, and no spare thermal headroom for a debugging habit. Left alone, it will happily keep a transcript of everything said near it. Debug visibility and intimate data collection get bundled together because it's easier to build them that way, not because they must be. Mixing them up is how a cheap board ends up holding more detail than the company that made your thermostat.

Four lines before you touch a board

Write the job in four lines before you shop for hardware: event, input, output, deadline. "Add AI to the camera" is a wish, not a job. "When a parcel sits in the porch zone for twenty seconds, send one local notification with a thumbnail" is testable, and shows what never needed a model at all.

The first experiment is boring on purpose: log timing, model version, outcome, and error codes, and sample audio or video only under explicit, temporary consent. Use the real microphone, angle, and network, the one that drops when the microwave runs.

Keep a short field record instead of a vibe:

FieldWhat it tells you
Board, OS, power, coolingbaseline per run
Model artifact, runtimewhat shipped
Real inputs, expected actionyour four-line job
Latency, temperature, poweracceptance, not trivia

Accuracy on a bench isn't reliability in a kitchen. Does it survive a reboot, does it duplicate a notification. Anything other people depend on needs a visible state and a manual fallback.

The model doesn't get near the lock

The failure I see most is keeping raw prompts forever, because storage is local and nobody feels watched by their own SD card. Local doesn't mean private. A leak just happens in your hallway instead of a data center you'll never see.

A model can interpret a request or rank which door needs attention. It should never be the only thing standing between a request and your lock, your valve, or a person. Put limits and timeouts in deterministic code that doesn't care how the prompt was phrased; treat what the model reads as data, never instructions, the same discipline as output validation and guardrails elsewhere.

Privacy is a full-path problem too. Local inference stops one upload, but recordings and backups still hold your kid's voice, the same tradeoff any meeting-notes-privacy debate runs into. Decide up front what gets kept.

Minimal by default, verbose by exception

Run this like an appliance, not a weekend demo: a service manager or pinned container, config kept apart from the model file, a health check proving the feature works, not that a process squats on a port. Keep a known-good storage image for any node parked somewhere inconvenient.

Power and heat belong in the acceptance test. Run until the enclosure reaches equilibrium and measure at the wall with normal peripherals attached. A board that throttles or corrupts its own storage isn't finished, however good that demo inference looked.

Proving a cheap board can run a model was never the point. One small capability, still working once the benchmark numbers are forgotten, is the actual target: a layer above sensors you trust and below a policy you wrote down, dumber when the model goes offline, never dead.

Keep the metadata. Drop the moment.

#logging#privacy#smart-home