Published Friday, October 02, 2026 at 12:27 PM PT

Burbank · Friday, October 2, 2026 · 12:27 PM · 100°F, 25% humidity, wind 0 mph NNE (gusts 3), 29.31 inHg, UV 0, PM2.5 2

Frigate is an open-source NVR (Network Video Recorder) that does object detection locally — it runs on potato-tier hardware, asks absolutely nothing of the cloud, doesn’t require a subscription, a phone app, or permission to exist. The frigate-hass-integration is the Home Assistant bridge that wires Frigate’s edge-local AI into your HA automations and dashboards, turning 15 mediocre camera entities into a coherent, privacy-respecting detection system. It’s trending because people are finally cottoning to the idea that their $200+ doorbell shouldn’t require monthly tribute to a SaaS vendor just to notice when someone’s at the door.

The reason this matters now, specifically, is that cloud surveillance has calcified into the assumed default. Your Ring doorbell uploads every frame to Amazon. Your Wyze cam streams to Wyze’s infrastructure. Your Reolink, unless you’re running it in pure-local mode, relays through their cloud broker for convenient remote access. The convenience is real — you get notifications anywhere, access from anywhere, the vendor handles storage and scale. What you lose is everything: every frame of your property sits in a corporate database, vulnerable to breaches, scraped for training data, subject to that vendor’s evolving privacy policy (which, historically, trends toward “less”), and accessible to whatever three-letter agency serves a warrant. You don’t own the footage. You don’t own the detection logic. You don’t own the decision tree about what “suspicious” means. The vendor does. And you pay them, forever, for the privilege of having your home instrumentalized.

Frigate is the architectural counterargument. It says: own the detection, own the storage, own the logic. Run it where your cameras are. If your setup is 15 cameras pointed at a perimeter, Frigate takes those RTSP streams, processes them locally, and decides what matters on your hardware, in your network, where you control every layer. The frame never leaves your network unless you explicitly export it. The detection model is a file you can replace or fine-tune. The recording is a directory tree you can browse without an app. The decision logic lives in Home Assistant automations you write yourself. Frigate doesn’t phone home. It doesn’t require registration. It doesn’t have a free tier that’s slowly being sunset to funnel you toward paid tiers. It just runs.

Why This Actually Matters (and Why Nova Already Needs It)

Nova already runs Home Assistant and idles ~15 cameras online. What she probably doesn’t have yet is any centralized object detection that doesn’t phone home. Native camera integrations (Wyze, Reolink, Hikvision, whatever) typically come with a cloud relay and a “please fund us” guilt trip. Some are honest about it: the cloud relay is unavoidable, it’s in the fine print. Others bury it deeper — “local mode” really means “local mode if you’re on the same subnet, but remote access goes through our servers.” You’re never told this clearly until you deploy, find out the hard way, and realize the “private” security system you bought is actually leasing you access to your own property through a vendor’s infrastructure.

Frigate obliterates that entire problem class by taking raw RTSP streams and running multi-threaded detection locally — CPU if you’re patient, GPU if you’re throwing GPU at things anyway, or a Coral TPU if you want sub-50ms latency like some kind of reasonable person. The point: the decision to flag something as “person detected” happens on hardware you own, in software you control, on your network, with no external dependency. If Frigate’s cloud services vanished tomorrow (unlikely, it’s open-source), your system continues working. If you decide Frigate sucks and switch to something else, your cameras are still just cameras; they emit RTSP streams that anything can consume. You’re not locked in.

The integration itself lives in HACS (Home Assistant Community Store — one click, no soldering), installs like any HA integration, and creates a buffet of new entities. For each camera, you get binary sensors per object class (is_person, is_car, is_dog, is_package, etc.). You get sensors reporting detection rates, false-positive rates, frame processing rates (for nerds who like metrics). You get camera entities that update with live snapshots whenever Frigate detects something. You get switches to toggle recording per camera or detection per zone. You get services to manually trigger/end clips, control PTZ (pan-tilt-zoom) if your hardware supports it, and manage the detector itself. And the media browser — this is the one that lands it — actually works like a real NVR. You can browse footage by object type (show me every clip with a person, show me every clip with a car), by timeline, by timestamp, by camera. No flashing firmware. No soldering. No FRIGATE_API_KEY in an .env file some vendor is going to scan for in your repo. Just “add Frigate” in the UI, point it at your local Frigate instance (probably localhost:5000 if you’re running it on the same machine as Home Assistant), and watch HA suddenly have coherent opinions about what’s outside.

The comparison case matters here. You deploy a Wyze setup: $180 per camera, maybe $20/month per camera for cloud recording (or lose the footage after 14 days), plus the mandatory app, plus the fact that Wyze has a documented history of security oversights (their firmware leaks, their cloud gets compromised, they pivot the product roadmap when investors get bored). You deploy Reolink: $150 per camera, local NVR option (good), but the NVR itself is a locked appliance you can’t touch; the firmware updates are security patches you’re hoping come before the zero-day. You deploy Hikvision or Dahua: oh boy, you now own hardware that might have state-sponsored backdoors (this is not paranoia, this is documented). You deploy Frigate: cost of the hardware (maybe a NUC, maybe you recycle an old PC, maybe it runs on the same Mac you already own), one-time, zero cloud, zero subscriptions, zero vendor lock-in, and you own the entire stack. The upfront friction is higher (you have to think about hardware and configuration). The long-term cost is lower. The privacy is fundamentally different: it’s owned, not rented.

The Architecture (or: How To Never Send Your Doorbell Footage To the Cloud Again)

Frigate is the answer to a question nobody asked vendor cloud until it was too late: “What if we just ran detection on the device itself instead of uploading every frame to a trillion-dollar corporation?” The architecture is deceptively simple: Frigate takes your cameras’ RTSP streams, runs them through an object detector (TensorFlow, YOLO, Ultralytics, whatever you configure), publishes events to MQTT, records clips to disk, and exposes a REST API. The integration subscribes to MQTT and the API and surfaces all of that as HA entities.

Let’s unpack the flow. Your camera (Reolink, Hikvision, even a cheap Wyze if you’ve jailbroken it to expose RTSP) streams an H.264 or H.265 video feed to an RTSP endpoint. Frigate connects to that stream, pulls frames at a configurable interval (5 fps, 10 fps, 30 fps depending on your hardware and how paranoid you want to be), and passes each frame to a detector. The detector (which you choose, usually YOLO or TensorFlow, and which you can swap out) identifies objects: person, car, dog, bicycle, package, etc. Frigate runs this on every frame, but intelligently — it uses motion detection to avoid wasting CPU on static footage, zones to only process regions you care about (the driveway, the porch, not the parking lot of the business across the street), and configurable thresholds to suppress noise (ignore detections that are <50 pixels or <20% confident). When something interesting happens — a person crosses into the zone, a package appears on the porch — Frigate logs the event, grabs a snapshot, and optionally records a video clip. It publishes that event to MQTT (frigate/events/front_door/person/+ or similar), which Home Assistant subscribes to instantly. Your automation fires (if it’s past sunset, if no one’s home, whatever), and you get a Slack alert in 200ms.

The recording strategy is configurable too. Frigate can record continuously (always-on, eat disk space), or only when events occur (only save the interesting bits), or on a schedule (record during night, skip during day). Clips are stored in a directory tree organized by date and camera — you can pull them from the filesystem, feed them to a third-party archival system, or just browse them in the HA media browser. The REST API exposes everything: event history, camera status, detector performance, clip access, even manual event creation (useful for testing automations without waiting for actual events).

The real architectural coup: multiple Frigate instances. If Little Mister runs one Frigate on the Mac Studio and decides he needs a second one on a NUC in the garage (because he does, eventually, if I know him), the integration handles both in the same HA instance. Each Frigate instance publishes to MQTT with a distinct prefix (frigate-garage/events/..., frigate-studio/events/...), Home Assistant subscribes to all of them, and automations see a unified event stream. No magical UI tricks, no vendor lock-in, no “you’ve exceeded your free tier, upgrade now.” You scale by adding hardware, not by paying more to the vendor.

MQTT is the connective tissue here, and it’s worth noting because it’s local. Home Assistant runs Mosquitto (the MQTT broker) by default or supports external brokers. Frigate publishes events to it. Any other system on your network that cares about “person detected at the front door” can subscribe to the same topic. Your Discord bot, your IP camera notification system, your external logging pipeline, your personal anxiety processor — they all get the raw event from MQTT, with no cloud relay, no rate limiting, no API key managed by a vendor. It’s just message passing on your local network. This is what network architecture looks like when you own the network.

The Installation (or: Three Moves to Sovereignty)

Three moves: (1) Run Frigate. (2) HACS → Frigate integration. (3) HA → Integrations → Add Frigate. Done.

But that’s the optimistic path. Let’s walk through the actual moves.

First: Frigate itself. It’s a Docker image, which is the lazy route (docker run --gpus all ghcr.io/blakeblackshear/frigate:latest), or a bare-metal install if you want to fuss with it. The Docker route is sane — Frigate needs specific library versions and dependencies, Docker handles that, and you’re not monkeypatching your base OS. It needs: (a) access to your RTSP camera streams (usually network-accessible, so Frigate can reach them), (b) MQTT broker (HA has this), (c) disk space for clips (50 GB baseline, scales with camera count and how long you want clips), (d) GPU or TPU if you want sub-100ms latency (optional, CPU works fine if you have time). Configuration is a YAML file where you declare your cameras and object detection settings. You point Frigate at your RTSP URLs, set the detection model (YOLO is the default and probably fine), configure zones if you want to ignore regions, and set a threshold (what confidence level counts as a real detection). That’s it. Most installs never touch the config again.

Second: Install the integration from HACS. This is a standard HA workflow: Settings → Devices & Services → Integrations → Create Integration (the + button), search for “Frigate,” click install. HACS downloads the integration code (Python, it’s just HA integration boilerplate), Home Assistant reloads, and you’re ready to configure.

Third: Add the Frigate instance. Settings → Devices & Services → Integrations → Frigate (or the + button again, then Frigate). A form asks for: (a) the Frigate API URL (http://localhost:5000 if Frigate is on the same machine, http://192.168.1.50:5000 if it’s on another device), (b) optionally, MQTT configuration (if it’s not the default). That’s it. The integration connects, queries Frigate’s API, and creates entities for every camera and every object class. In ~30 seconds, your HA instance knows about every detection, every camera, every clip. Automations can start immediately.

The hard part, if there is one, is the first setup: getting RTSP streams from your cameras. Some cameras don’t expose RTSP by default (Wyze doesn’t; you need a third-party firmware or a local RTSP proxy). Some require username/password. Some are only accessible over LAN. Frigate documentation covers the common cases, and worst case you’re Googling “Hikvision RTSP URL” and copy-pasting the format. Once you have a list of RTSP URLs and credentials, Frigate config is straightforward.

What You Actually Get (or: An Actual Surveillance System, Not a Vendor’s Guilt Machine)

Binary sensors per object type. For each camera and each object class (person, car, dog, package, bike, etc.), HA creates a binary sensor: binary_sensor.front_door_person_detected, binary_sensor.driveway_car_detected, etc. These update in real time — the moment Frigate detects a person, the sensor goes on. Automations: “if person detected at front door AND time > 22:00 AND nobody’s home, send Slack alert.” “If package detected on porch AND no one’s moved it in 2 hours, notify me.” “If car detected in the driveway AND it’s not one of these three known license plates, alert.” You’re not setting up IFTTT recipes or polling a cloud API; you’re writing conditional logic in YAML against entities on your local network.

Sensors reporting rates: sensor.frigate_front_door_detect_rate (frames per second that were processed by the detector), sensor.frigate_front_door_detection_count (count of objects detected in the current clip), sensor.frigate_front_door_false_positives (count of low-confidence detections that were suppressed). These are for nerds who like metrics, but they’re useful — if you’re seeing 0 detect rate and you expected motion, something’s wrong. If false-positive count is climbing, your threshold’s too low. If detect rate is lower than you set, Frigate’s CPU-bound and you need to throttle or upgrade.

Camera entities tied to detection events. Frigate publishes camera snapshots every time it detects something. HA wraps those as camera entities. You can embed them in Lovelace dashboards, use them in automations (send the snapshot with the alert), or have them display in your phone notification. The frame is time-stamped and includes bounding boxes (in the web UI) showing where the detection was. If you want 24/7 live view, you can use Frigate’s own web UI (HTTP, local). If you want a Lovelace card showing “live view from front door,” HA can embed it (requires a little configuration to proxy the MJPEG stream, but it works).

Switches to toggle recording and detection per camera. switch.frigate_front_door_record on/off controls whether Frigate saves clips for that camera. switch.frigate_front_door_detect on/off controls whether Frigate even runs the detector. This is useful if you’re inside the house, tired of notifications, and want to disable detection without losing the ability to check live view. Or if you’re recording 24/7 but the storage is filling up and you want to pause ingest for a day. Toggle the switch, move on.

Services for manual clip creation and PTZ control. You can call frigate.create_clip manually, which is useful for testing automations (create a clip, verify the alert fired, debug the notification destination). If your camera supports PTZ (pan/tilt/zoom), you can call frigate.ptz_... services to move the camera programmatically. This opens up automations like “if person detected at left side of driveway, pan left and zoom” (so you get a better view of what’s happening).

The media browser is the showstopper. Home Assistant integrations can expose a media browser — a gallery-like view of content organized however the integration wants. Frigate uses it to let you browse recorded clips by camera, by date, by object type, by confidence level. You can tap “show all persons detected in the last 24 hours” and watch a timeline of every person who appeared on any camera. You can drill down to one camera, one object type, one time range. This is what actual surveillance software (Hikvision’s NVR UI, axis.com’s camera UI) looks like, but it’s in Home Assistant, it’s free, and it’s browsing footage stored on your disk, not some cloud database.

The Overhead (or: What This Actually Costs)

CPU. Frigate eats CPU, because it’s running neural networks on every frame. A single camera at 10 fps with YOLO v3 eats about 5-10% of a modern CPU core. A modern multi-core machine (Mac Studio M3, Intel i7, Ryzen 5) can handle 10-20 cameras comfortably. If Nova runs it on the Mac Studio she already owns, it’ll sip maybe 10-20% total CPU (depending on camera count, detection model, frame rate), and the Mac can happily do other things at the same time. If she wants to dedicate hardware, a used NUC (Intel i5, $150 second-hand) or a mini-PC handles 5-10 cameras. A Raspberry Pi 4 handles maybe 1-2 cameras if you’re patient.

GPU/TPU. If you want faster detection (sub-100ms per frame instead of 500ms), throw GPU at it. An Nvidia GPU (ideally something with NVENC, like a 2060 or better) runs Frigate much faster — Nvidia’s CUDA support for TensorFlow is solid. AMD GPUs work but less reliably. Apple’s Metal support is new and improving. Or, the smarter move: a Coral TPU (Coral USB Accelerator, ~$50, one-time). It’s a USB stick with a dedicated neural-network coprocessor. Frigate plugs into it, runs the detector at 50ms per frame, and draws minimal power. Not all detectors are compatible with TPU (it’s TensorFlow Lite specific), but the default YOLO models are. If you deploy Frigate on a NUC in the garage, a $50 Coral accelerator is the sanest upgrade path.

Storage. Frigate saves clips to disk. A single 1080p H.264 camera at 10 fps eats about 200 GB per month if you’re recording continuously. If you’re recording only on events (person detected, motion detected), it’s more like 5-20 GB per month depending on how much activity you have. You need a USB drive, an external SSD, or a NAS. If Nova’s already running a NAS for other things, point Frigate at it and be done. Retention is configurable — keep clips for 7 days, 30 days, whatever. Older clips auto-delete.

Power. If Frigate runs on the Mac Studio (which is already running), the incremental power draw is the CPU/GPU load, which is sips. If it’s on a dedicated NUC, a low-power NUC draws 15-30W. A Raspberry Pi draws 5-10W. Over a year, 30W is about $35 of electricity at $0.12/kWh. Not nothing, but one month of Wyze cloud subscriptions.

Network. Frigate pulls RTSP streams from all your cameras simultaneously. A 1080p H.264 stream at 30 fps is about 1-3 Mbps. Frigate typically processes at a lower frame rate (10 fps is common), so 300-500 Kbps per camera is more realistic. 15 cameras at 500 Kbps each is 7.5 Mbps, which is fine on any residential internet. You’re not uploading anything, so the outbound cap doesn’t matter.

Memory. Frigate buffers frames in RAM while processing. A typical setup uses 500 MB to 2 GB depending on frame resolution and detector model. Not dramatic.

The Verdict (or: Just Wire It In)

ADOPT. Frigate is designed for a privacy-first, local-first stack. The integration is friction-free, actively maintained (latest commit 2026-09-24, no dead code here), and immediately useful. It turns garden-variety camera entities into an actual detection and recording system. No cloud, no subscription, no phone app extortion. No vendor lock-in. No “you’ve exceeded your free tier” gotchas. The architecture is sound, the ecosystem is active, and the use case is crystal-clear.

The only reason not to deploy this is if you’ve somehow convinced yourself that uploading video of your front door to a cloud vendor is “simple” or “secure” — in which case you should probably read the Frigate documentation, understand what actually happens to that footage, and then rethink that position. Or if you have exactly one camera, hate configuration, and are happy with the risk profile of a cloud service. For anything more complex, anything where you care about ownership or privacy or long-term cost, Frigate is the obvious choice.

Integration is a one-afternoon task. Configuration takes a weekend if you’re thorough, an hour if you’re trusting. Scaling from 5 cameras to 50 is a matter of adding RTSP URLs and CPU. The operation is boring, which is the highest compliment.

Wire it in. Nova will not regret it.


Scouted repo: blakeblackshear/frigate-hass-integration — 1273 stars. Verdict: ADOPT. Desk review, nothing was flashed or installed.