anubhavmalhotra / vibing / ring-homekit-secure-video.md

Bringing our Ring doorbell into the Apple Home app

2026-11-02 · 5 min read · anubhavmalhotra/ring-homekit-secure-video

If you've ever tried to keep a smart home in one place, you know how it goes. You start out wanting one app for the whole house, and a few years later there's a folder on your phone full of apps that each run one corner of it.

We're an Apple household, and pretty deep in. The Home app has been the center of our home for years. A lot of what we've brought home works with it, like lights, sensors and locks, and it's nice having all of that together, with the same scenes, the same automations and the same notifications.

And then there's the Ring doorbell.

The one that never fit

Ring was a decision we made a long time ago, and it's been a good doorbell. But it has never played nicely with the Home app. Ring doesn't support HomeKit, so the front door has always lived in its own little world, with its own app, its own notifications and its own subscription. Every ring of the bell was a reminder that "one place for the house" came with an asterisk.

That was the motivation to go looking for a way to bring it in.

The subscription was the other part. Keeping recorded video from Ring means paying for Ring Protect. But we already pay for iCloud+, and iCloud+ includes HomeKit Secure Video, which records camera clips without counting against iCloud storage. Paying a second company to store the same kind of footage felt redundant.

Why now

What changed wasn't Ring or Apple. It was how code gets written.

A project like this used to be the kind of thing that gets bookmarked and never started. It touches HomeKit's accessory protocol, live video streaming, the encryption Apple uses for live view, and a very particular video format Apple expects for recordings. Each of those is a rabbit hole of its own.

AI coding tools made those rabbit holes a lot shallower: describe what you want, read and question what comes back, keep moving. So it turned into a weekend project with one simple question: can our Ring doorbell live in the Home app, recordings and all, without paying for Ring Protect?

Attempt one: leave Amazon out entirely

The first idea was the ambitious one. Could the doorbell work with no connection to Amazon at all? Talk to it directly on the home network, pull the video off it, and hand that straight to HomeKit.

That didn't get far. Amazon has locked the device down well enough that reverse engineering it isn't easy, and it didn't seem worth going much deeper for a weekend project. The README covers what's in the way, and how the bridge works around it.

Attempt two: meet Ring halfway

So the plan became a compromise. The doorbell still talks to Ring's cloud the way it always has. When there's motion or someone presses the button, Ring sends a push notification. The bridge hears it, opens a live stream from the doorbell, and hands the video to Apple Home.

To the Home app, it looks like an ordinary HomeKit video doorbell, with recordings, live view and two-way talk. Behind that, it's a small Node.js service that turns Ring's live stream into what HomeKit Secure Video expects. It can also save a copy of each clip to local disk, but that's off by default, so recordings are kept in iCloud only. The README has the full feature list.

It runs on our NVIDIA DGX Spark, the same box behind R2D2, which has quietly become the heart of our home setup. A doorbell bridge is a small job next to everything else it does, but it fits the idea: the house runs from one place, and that place is ours.

The trade-off

To be clear: the video still goes through Amazon. When the bridge wants a stream, it asks Ring for one, and that stream comes through Ring's servers. A Ring account is still needed, and the bridge holds a sign-in token for it.

What's no longer needed is Ring's storage. Ring isn't keeping our clip history. Apple is.

It's not the fully local, Amazon-free setup from the first idea. But it's a real step in the right direction, and one that could actually be finished in a weekend.

What we got

This is the part that made it worth it.

Built to be careful

The bridge sits on the home network holding a Ring login and video of the front door, so it was built to be careful: it runs without root, keeps its files locked down, and respects the Home app's privacy switches the moment they're flipped, even mid-recording. There's also an end-to-end test suite that runs against a synthetic video source, which meant the recording format could be checked without walking out to the front door after every change.

Standing on shoulders

This wouldn't have been a weekend project without two open-source libraries doing a lot of the heavy lifting: ring-client-api, which handles talking to Ring, and HAP-NodeJS from the Homebridge project, which handles being a HomeKit accessory. The bridge is the glue: the recording pipeline, live view, and making the whole thing behave like a well-mannered appliance.

It's a weekend project, so bring weekend-project expectations. But for us it did exactly what it needed to: the front door finally lives in the same place as the rest of the house.

The source is at github.com/anubhavmalhotra/ring-homekit-secure-video (MIT), and the README walks through setup. Questions or ideas? The contact links are on the front page.