← All work

Shipped · iOS · Sonos, Echo, Chromecast

HomeComms Live

You hold a button on your phone and your voice plays out of the speakers anywhere in the house. It's replacing yelling up the stairs, which is a much stronger incumbent than it sounds.

View on the App Store →
Home screen: hold-to-talk button, target speaker, quick messages Speaker picker showing Sonos rooms and Amazon Echo devices Type-to-speak compose sheet

What it is

It's a one-way broadcast intercom for households that have speakers in more than one room. Amazon and Google both ship something like this, but only inside their own walled gardens, so there was nothing equivalent for Sonos, which is exactly the gap I went after.

I built all of it myself: the FastAPI backend on Fly, the Sonos OAuth and the audio pipeline, the web UI, the Capacitor iOS shell, the home-screen widget, and the App Store submission.

The decision

I built live audio streaming first, and then I deleted it.

Streaming was the obvious architecture and I'd picked it for exactly one reason, which was two-way intercom. Then the spike came back: Sonos buffers playback for 1 to 2 seconds, against the 400 milliseconds a natural conversation needs, and that buffer isn't reducible because Sonos engineered it for gapless music. So two-way was dead, and the reason I'd chosen streaming died with it.

What actually forced the rewrite was multi-tenancy. Both of my test households were remote, so I needed self-serve sign-up, and streaming wants a per-user always-on relay, where recorded clips through Sonos's audioClip API don't need one at all.

Then the measurement surprised me. Clips came in at 1 second end to end, where streaming was 5. The 5-second floor I'd spent weeks designing around applied to stream buffering and not to audioClip, which Sonos built for low-latency notifications, so the cheaper and more scalable path turned out to be the fast one too. The way I'd put it is that I'd been carrying a number from the wrong context and never went back to check it.

What it cost

There's no two-way intercom, and there won't be one on this architecture. I want to be clear that's a real ceiling on the product and not a phase-two item, because two-way is a different product on different hardware.

I also pre-registered the trial's decision rule before I ran it, and I excluded my own household from the read, because my family using something I built isn't evidence that a market exists. That rule is why I still won't claim demand is proven. The honest status is shipped and unvalidated.

Status & next

Apple approved version 1.1 on 2026-06-29, and it's live in 175 territories at $0.99, with an in-app ratings prompt that fires after someone's third successful broadcast. Sonos, Amazon Echo and Google Cast all work end to end for any household. Ring talk-back works too, but I've kept it gated to my own household, because it leans on an unofficial path I'm not willing to ship to strangers.

The open lever now is demand and not distribution, so the next step is recruiting external households and reading the pre-registered 14-day rule. If that fails, this stays a thing my family uses every day, which I'd already decided counts as a success.