Your phone shouldn't buzz when you take out the trash

Frigate's face recognition can veto push alerts for people you've enrolled. Here's the hold-and-veto pattern that makes it work, why it must fail open, and how to turn it on.

Published August 12, 2026

The most common person alert on a home camera install is you. You walk the trash to the curb — buzz. You get the mail — buzz. Your spouse leaves for work, your kid gets off the bus, you mow the lawn — buzz, buzz, buzz. The notification that’s supposed to mean someone is at your house mostly fires because you are at your house.

And alert fatigue isn’t a comfort problem, it’s a security problem. After the fortieth buzz that turns out to be your own household, you stop looking. Some people mute the app. Some turn off person notifications entirely. Either way, the one alert that actually mattered — the stranger in the driveway at 2 a.m. — lands on a phone that’s been trained to ignore it.

Frigate can fix this now, and ViewPane’s push relay is built to take advantage of it.

Frigate’s face recognition gives events a name

Recent Frigate builds ship built-in face recognition (we run 0.17 on our install). You enable it in the config, enroll your household in the Face Library, and when Frigate recognizes an enrolled face on a person detection, it attaches the name to the event as a sub_label. The event stops being “person on driveway camera” and becomes “ken on driveway camera.”

Enrollment is low-ceremony. We seeded our library with a single clear photo per person, then let the Train tab do the rest: Frigate collects recognition attempts as they happen, you label the ones it got right, and accuracy sharpens over a few days of ordinary coming and going. You don’t need a photo shoot — you need a week of living at your house.

So the data exists: events carry names. The interesting problem is what your notification pipeline does with them.

The timing problem nobody mentions

Here’s the catch. Frigate fires the person event the moment detection happens — that’s the whole point, alerts should be fast. But face recognition takes another beat: the person has to get close enough, face the camera, hold still enough for a usable crop. The name lands on the event after the event starts, sometimes several seconds after.

That breaks both naive approaches:

  • Push immediately on detection and the name hasn’t arrived yet. You buzz for everyone, enrolled or not, and the face library does nothing for you.
  • Wait for the event to end and you know exactly who it was — but a Frigate event can run for minutes while someone stands in frame. A burglary alert that arrives after the burglar leaves is a recording, not an alert.

Hold, then veto

The pattern that works is a short hold with a veto window. When a person event starts, ViewPane’s relay doesn’t push immediately — it holds the push for a few seconds (configurable via FACE_GRACE_SEC; the default is 10 seconds, we run 5 on our own install). If Frigate recognizes an enrolled face during that window, the held push is cancelled and you never hear about it. If the window expires with no recognized name, the push fires.

In practice, on our ten-camera install:

  • Family member walks to the car → recognition lands inside the window → silence. The relay logs known face (ken) — suppressed driveway/person and moves on.
  • Delivery driver walks up → no enrolled face matches → push arrives about 5 seconds after detection.
  • Car, dog, cat events → unaffected. Face identity only applies to people, so everything else still fires instantly.

The cost is honest and worth stating plainly: alerts about strangers now arrive 5 seconds later than they used to. That’s the entire trade — 5 seconds of latency in exchange for your phone only buzzing about people it doesn’t recognize.

Fail open or don’t ship it

A suppression feature is a feature that deliberately drops security alerts, which means the failure modes matter more than the happy path. The rule we built to: every failure degrades to an extra push, never a missing one.

  • The relay refreshes its known-name list from Frigate’s /api/faces every 10 minutes, so newly enrolled people take effect without a restart. If that refresh fails — Frigate rebooting, network blip — it keeps the last good list and keeps working.
  • If there’s no list at all, nothing is suppressed and every person event pushes, exactly like before the feature existed.
  • If recognition simply doesn’t happen in time — bad angle, hoodie, dark — the push fires when the window expires. A missed recognition costs you one unnecessary buzz.

The system is allowed to annoy you. It is not allowed to stay silent about a stranger. If you’re wiring up your own suppression logic in Home Assistant or Node-RED instead, steal that rule — it’s the part that matters.

Turning it on

If you run ViewPane’s push relay, the feature is already in the container:

  1. Enable face recognition in Frigate and enroll your household in the Face Library (one good photo each is enough to start).
  2. That’s it, honestly. The relay picks up enrolled names from /api/faces automatically. FACE_GRACE_SEC tunes the hold window, and a KNOWN_FACES env var lets you add extra names on top of the library if you want.
  3. Spend a few days labeling attempts in the Train tab as they accumulate. Recognition gets noticeably better fast.

Then take the trash out and enjoy the silence.