🏠 Apple Home · HomeKit

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.

If you have an Apple TV or HomePod

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.

If you already run Home Assistant

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

$ hap_bridge setup

[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.

SignalIn the Home appOn by default
MotionMotion sensoryes
OccupancyOccupancy sensoryes
ContactContact sensoryes
TamperStatus on each sensoralways — cannot be turned off
RespondingStatus on each sensoryes
Low batteryStatus on each sensoryes
Person / vehicle / animal / packageMotion sensorsno — 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.