Your Canaries, in the Home app. Without the camera roll.
Motion, occupancy, contact — as ordinary HomeKit sensors Siri and automations already understand. "Hey Siri, is anyone at the back door?" Lights that come on before you do. No video leaves. Ever. Not because we switched it off, but because there is no field in the vocabulary to put it in.
Two ways in. Both end in the Home app.
Straight in — one command
The bridge speaks HomeKit directly. No Home Assistant, no cloud, no account. It finds your Apple TVs, finds your Canaries, and prints a QR code in your terminal for you to scan.
Zero new code
Home Assistant's own HomeKit Bridge already does the pairing. Add your Canaries to its include-list and they appear. About five minutes of YAML.
Either way you need one Apple TV or HomePod signed in — that is what makes it a Home Hub. Without one, HomeKit works only while your phone is on the same Wi-Fi and automations do not run at all.
Setup is one command and a QR code
[1/4] Looking for an Apple TV or HomePod…
✓ Found 2 hubs: Living Room (Apple TV), Kitchen (HomePod)
[2/4] Looking for Canaries…
✓ Found 2: porch-canary, garage-canary
Name for porch-canary: [Porch Canary]
[3/4] How much should Apple Home be told?
[4/4] How quickly should it react?
Setup code 830-87-934
It looks instead of asking: your hubs and your Canaries are both found on the network, and the names are guessed from the device ids so you only have to correct them. Then you point your phone at your own terminal and the Home app takes it.
What Apple Home is told
A closed list of coarse true/false facts — roughly what a hardware PIR sensor publishes, and nothing more.
| Signal | In the Home app | On by default |
|---|---|---|
| Motion | Motion sensor | yes |
| Occupancy | Occupancy sensor | yes |
| Contact | Contact sensor | yes |
| Tamper | Status on each sensor | always — cannot be turned off |
| Responding | Status on each sensor | yes |
| Low battery | Status on each sensor | yes |
| Person / vehicle / animal / package | Motion sensors | no — you must ask for it |
The last row is the only step past a dumb sensor: the kind of thing that moved. Still not identity — no face, no plate, no name, and no field for one. It stays off until a person turns it on.
Tamper is the opposite: it cannot be switched off at all. A device reporting that someone interfered with it must not be able to go quiet about that in a home you already chose to publish into.
The traffic itself says nothing
Most integrations send a packet the instant something happens — so the arrival time becomes the timestamp the payload was careful not to include. This one publishes on a metronome: on a fixed cadence whether or not anything happened.
Two things follow. Nothing downstream can place an event more precisely than one tick. And the fact that a packet went out carries no information, because one always does. The cadence is yours to choose — a second reads as instant; thirty seconds blurs the timing further.
What it never sends
- No video. Not here, not through HomeKit Secure Video. That was decided on the record, with the conditions that would reopen it written down.
- No identity. No faces, no plates, no names, no re-identification. There is no field for any of it.
- No location, no zone, no counts, no confidence. Apple Home learns what kind of thing is true now, and nothing else.
- Nothing inbound. Every signal is read-only. The Home app is an audience for what a Canary witnessed, never a control surface for it.
Where this actually stands
The pairing protocol is implemented and tested end to end against an independently written controller, and verified over a real network socket. It has not yet been paired with a physical Apple TV. Until it has, that sentence stays on this page.
The Home Assistant lane is the older, better-travelled path — with one honest caveat: Home Assistant publishes on change, so on that route the payload is still coarse but the timing is not blurred the way the metronome blurs it. Both are documented in the integration guides.
