Tired of paying monthly fees for Ring or Nest just to get "person detected" notifications? Frigate is a free, open-source NVR that runs AI object detection right on your own hardware. It tells the difference between a person walking up your driveway and a cat crossing the yard. No cloud. No subscriptions. No one watching your footage except you. Here is everything you need to set it up with Home Assistant.
Jump to a section
Frigate is an open-source NVR (network video recorder) built from the ground up for Home Assistant. Created by Blake Blackshear, it takes RTSP camera streams and runs real-time AI object detection on them. That means it can identify people, cars, dogs, cats, packages, and more, all processed locally on your hardware.
The magic is in how it handles detection. Instead of analyzing every single frame (which would melt your CPU), Frigate uses motion detection as a first pass. When motion is spotted, it sends those frames to an AI model for classification. If a Google Coral TPU is plugged in, detection takes under 10 milliseconds per frame. That is fast enough to track someone walking across your entire yard without missing a beat.
Runs object detection models on your hardware. Person, car, dog, cat, package. No cloud API calls, no latency, no privacy concerns.
No Ring Protect. No Nest Aware. Buy the hardware once and you are done. Frigate is completely free and open source.
Every frame stays on your network. No footage uploaded to Amazon or Google servers. Your cameras, your data, your control.
Native Home Assistant integration via HACS. Binary sensors, camera entities, event snapshots, and MQTT events. Automations work perfectly.
Frigate runs as a Docker container, so you need a machine that can handle video decoding and (optionally) AI inference. Here is what to expect at different budget levels.
A Google Coral TPU offloads all AI detection from your CPU. It processes detections in under 10ms and uses almost no power. Without one, your CPU handles both video decoding and detection, which limits you to a handful of cameras. With a Coral, the CPU only decodes video while the Coral handles all the smart stuff.
| Coral Type | Price | Connection | Best For |
|---|---|---|---|
| USB Accelerator | ~$25-35 | USB 3.0 | Most setups. Easy to add to any machine. |
| M.2 A+E Key | ~$25-30 | M.2 slot | Mini PCs with a spare M.2 slot. Cleaner install. |
| M.2 B+M Key (Dual) | ~$40-60 | M.2 slot | 15+ cameras. Two TPUs on one card for double throughput. |
Budget Tier
~$100-130 total
โญ Sweet Spot
~$150-200 total
Powerhouse
~$350-500 total
Frigate records continuously and keeps event clips. Expect roughly 10-15 GB per camera per day for continuous recording at standard quality. A 1 TB drive covers 4 cameras for about 2 weeks of continuous recording before it starts overwriting the oldest footage. For events only (just clips when something is detected), storage needs drop dramatically to about 1-2 GB per camera per day.
Frigate works with any camera that outputs an RTSP stream. That said, some cameras play nicer than others. You want good RTSP support, dual streams (high res for recording, low res for detection), and PoE if possible.
| Camera | Price | Resolution | PoE | Notes |
|---|---|---|---|---|
| Reolink RLC-810A | ~$55 | 4K (8MP) | โ | Community favorite. Excellent RTSP, great image quality, dirt cheap. |
| Reolink RLC-520A | ~$40 | 5MP | โ | Budget pick. Dome style, great for under eaves. |
| Amcrest IP5M-T1179EW | ~$50 | 5MP | โ | Solid RTSP, good night vision, turret style. |
| Hikvision DS-2CD2x46G2 | ~$80-120 | 4MP-4K | โ | Professional grade. AcuSense onboard. Excellent night vision. |
| UniFi G4 Bullet/Dome | ~$110-180 | 4MP | โ | Premium build. Needs RTSP enabled in UniFi settings. |
| ESP32-CAM (DIY) | ~$8 | 2MP | โ | Fun project, poor image quality. Only for indoor experiments. |
Power over Ethernet means one cable handles both power and data. No hunting for outdoor outlets, no Wi-Fi dropouts during storms, and much more reliable streams for Frigate. A basic PoE switch costs $30-50 and is worth every cent.
Frigate runs as a Docker container alongside Home Assistant (or as an add-on if you use HA OS). Here is the full walkthrough.
HA OS / Supervised: Add the Frigate add-on repository (https://github.com/blakeblackshear/frigate-hass-addons) in Settings > Add-ons > Add-on Store. Install "Frigate NVR" and start it.
Docker: Add Frigate to your Docker Compose file. You need to pass through your Coral device and mount a config file and storage directory.
version: "3.9"
services:
frigate:
container_name: frigate
restart: unless-stopped
image: ghcr.io/blakeblackshear/frigate:stable
shm_size: "256mb"
devices:
- /dev/bus/usb:/dev/bus/usb # Coral USB
volumes:
- /etc/localtime:/etc/localtime:ro
- ./frigate/config:/config
- ./frigate/storage:/media/frigate
ports:
- "5000:5000" # Web UI
- "8554:8554" # RTSP restream
- "8555:8555" # WebRTC
environment:
FRIGATE_RTSP_PASSWORD: "your_password"Create a config.yml file in your Frigate config directory. Here is a real-world example with a Reolink camera:
mqtt:
enabled: true
host: 192.168.1.100 # Your MQTT broker
detectors:
coral:
type: edgetpu
device: usb
cameras:
front_door:
ffmpeg:
inputs:
- path: rtsp://admin:password@192.168.1.50:554/h264Preview_01_main
roles: ["record"]
- path: rtsp://admin:password@192.168.1.50:554/h264Preview_01_sub
roles: ["detect"]
detect:
width: 640
height: 480
fps: 5
objects:
track: ["person", "car", "dog", "cat"]
record:
enabled: true
retain:
days: 14
events:
retain:
default: 30
backyard:
ffmpeg:
inputs:
- path: rtsp://admin:password@192.168.1.51:554/h264Preview_01_main
roles: ["record"]
- path: rtsp://admin:password@192.168.1.51:554/h264Preview_01_sub
roles: ["detect"]
detect:
width: 640
height: 480
fps: 5
objects:
track: ["person", "dog", "cat"]
record:
enabled: true
retain:
days: 7Install the Frigate integration via HACS (search "Frigate" in the HACS integration store). After installing, go to Settings > Integrations > Add Integration > Frigate. Point it to your Frigate instance URL (e.g., http://192.168.1.100:5000).
This creates camera entities, binary sensors for each object type, and event sensors. You will see entities like binary_sensor.front_door_person_occupancy that flip on when a person is detected.
Frigate communicates events to Home Assistant through MQTT. If you already have Mosquitto running (and you should), just point Frigate to it in the config. Every detection event fires an MQTT message with the object type, camera name, confidence score, and a snapshot URL.
Frigate uses a two-stage detection pipeline that is surprisingly efficient.
Stage 1
Frigate compares consecutive frames to find regions where pixels changed. This is CPU-cheap and filters out 95%+ of frames where nothing is happening. Only frames with motion get sent to the AI model.
Stage 2
Motion regions get cropped and sent to a TensorFlow Lite model running on your Coral TPU (or CPU). The model identifies what the object is: person, car, dog, etc. This takes under 10ms on a Coral.
Stage 3
Frigate tracks objects across frames so it knows "that is still the same person" as they move through the scene. This prevents duplicate alerts and gives you clean event clips with entry and exit points.
The default model detects: person, car, truck, bus, motorcycle, bicycle, dog, cat, horse, bear, bird. You can also use custom models for specific things like packages, license plates, or faces (though face recognition requires additional setup).
Zones let you define regions within a camera's view. Instead of "person detected on front door camera," you get "person detected in the driveway zone" vs "person detected on the porch zone." This is incredibly useful for filtering alerts. You probably do not care about people walking on the sidewalk, but you definitely care about someone on your porch.
cameras:
front_door:
zones:
porch:
coordinates: 0.2,0.4,0.8,0.4,0.8,0.9,0.2,0.9
objects: ["person", "dog", "cat"]
driveway:
coordinates: 0.0,0.3,0.3,0.3,0.3,1.0,0.0,1.0
objects: ["person", "car"]
sidewalk:
coordinates: 0.0,0.0,1.0,0.0,1.0,0.3,0.0,0.3
# No objects tracked here = ignoredThe real power of Frigate is what happens after detection. Here are five automations that go beyond basic "motion detected" alerts.
Get a push notification with a snapshot of the person when someone steps onto your porch. Way more useful than "motion detected."
automation:
- alias: "Frigate: Person on porch notification"
trigger:
- platform: state
entity_id: binary_sensor.front_door_person_occupancy
to: "on"
condition:
- condition: state
entity_id: group.family
state: "not_home"
action:
- delay: "00:00:02"
- service: notify.mobile_app_phone
data:
title: "Someone at the front door"
message: "Person detected on the porch"
data:
image: /api/frigate/notifications/{{trigger.to_state.attributes.event_id}}/thumbnail.jpg
actions:
- action: "VIEW_CAMERA"
title: "View Live"When Frigate detects a car entering your driveway after dark, light up the driveway and porch lights automatically.
automation:
- alias: "Frigate: Car in driveway lights"
trigger:
- platform: mqtt
topic: frigate/events
condition:
- condition: template
value_template: >-
{{ trigger.payload_json.after.label == 'car'
and trigger.payload_json.type == 'new'
and 'driveway' in trigger.payload_json.after.entered_zones }}
- condition: state
entity_id: sun.sun
state: "below_horizon"
action:
- service: light.turn_on
target:
entity_id:
- light.driveway
- light.porch
data:
brightness_pct: 100
- delay: "00:05:00"
- service: light.turn_off
target:
entity_id: light.drivewayIf Frigate spots your dog in the garden and the gate sensor shows open, get an urgent alert before your dog escapes.
automation:
- alias: "Frigate: Dog near open gate"
trigger:
- platform: state
entity_id: binary_sensor.backyard_dog_occupancy
to: "on"
condition:
- condition: state
entity_id: binary_sensor.garden_gate
state: "on"
action:
- service: notify.mobile_app_phone
data:
title: "๐ Dog alert!"
message: "Dog detected in garden and the gate is open!"
data:
priority: high
ttl: 0When everyone leaves, switch Frigate into "alert mode" by enabling notifications for all cameras after a grace period.
automation:
- alias: "Frigate: Arm when away"
trigger:
- platform: state
entity_id: group.family
to: "not_home"
for: "00:30:00"
action:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.frigate_alerts_armed
- service: notify.mobile_app_phone
data:
message: "Frigate alerts armed. All cameras monitoring."Get a daily summary of all detections. Useful for tracking patterns like delivery times or stray animals.
automation:
- alias: "Frigate: Daily summary"
trigger:
- platform: time
at: "21:00:00"
action:
- service: notify.mobile_app_phone
data:
title: "Frigate Daily Summary"
message: >-
Today: {{ states('sensor.front_door_person_count') }} people,
{{ states('sensor.driveway_car_count') }} cars,
{{ states('sensor.backyard_dog_count') }} dogs detected.Cloud cameras lock you into monthly subscriptions and send your footage to corporate servers. Here is how Frigate stacks up.
| Feature | Frigate | Ring | Nest | Eufy |
|---|---|---|---|---|
| Monthly cost | $0 | $3-20/mo | $8-15/mo | $0-3/mo |
| AI detection | Person, car, dog, cat, etc. | Person, package (paid) | Person, vehicle, animal (paid) | Person, vehicle (on-device) |
| Privacy | 100% local | Amazon servers | Google servers | Mostly local (some cloud) |
| Recording retention | Unlimited (your storage) | 30-180 days (paid) | 30-60 days (paid) | Local storage varies |
| HA integration | Native, deep | Limited | Limited | HACS/RTSP |
| Camera choice | Any RTSP camera | Ring cameras only | Nest cameras only | Eufy cameras only |
| Zones | Unlimited, per-object | Basic (paid) | Yes (paid) | Basic |
| Works offline | Yes, fully | No | No | Partially |
| 3-year cost (4 cams) | ~$350 one-time | ~$700+ (cams + sub) | ~$900+ (cams + sub) | ~$400-500 |
Frigate costs more upfront than a Ring starter kit, but pays for itself within 12 to 18 months through zero subscription fees. After that, you are saving $100-200 per year while getting better detection, more privacy, and deeper smart home integration. The only trade-off is the initial setup effort, which is a one-time weekend project.
You can go from zero to a working Frigate setup in a single weekend. Here is the plan.
Saturday Morning
Saturday Afternoon
Sunday
Run a free HomeShift scan to see which of your current smart home devices are compatible with Home Assistant and Frigate. Takes 2 minutes.
Start Free ScanFrigate is a free, open-source network video recorder (NVR) designed specifically for Home Assistant. It runs AI object detection locally on your hardware, meaning it can tell the difference between a person, a car, a dog, and a blowing tree branch. Unlike Ring or Nest, there are no monthly cloud subscriptions. All video processing and storage happens on your own machine.
At minimum you need a machine running Docker (a mini PC or NAS works great) and an IP camera with an RTSP stream. For AI detection, a Google Coral TPU ($25 to $60) is highly recommended as it handles object detection with almost zero CPU usage. Without a Coral, you can use CPU detection but are limited to about 2 to 3 cameras on an Intel N100.
With a Google Coral TPU, Frigate can handle 10 to 20+ cameras easily because the Coral processes detections in under 10ms. Without a Coral, an Intel N100 can handle about 2 to 3 cameras using CPU detection. A beefier i5 or Ryzen can do 5 to 8 cameras on CPU alone. The bottleneck is usually CPU for video decoding, not detection.
Yes, 100%. Frigate runs entirely on your local network. Object detection uses a local AI model. Video recording and playback happen on local storage. Even if your internet goes down completely, Frigate keeps recording, detecting, and sending notifications through Home Assistant on your LAN.
Absolutely. Frigate gives you continuous recording, AI person and vehicle detection, event clips, and live viewing, all for free after the initial hardware cost. You get better detection accuracy, no monthly fees, full privacy (nothing leaves your network), and deeper Home Assistant integration than any cloud camera system.
If your camera supports RTSP streams, yes. Many Wi-Fi cameras from Reolink, Amcrest, and Hikvision have RTSP built in. Ring and Nest cameras do not support RTSP and cannot be used directly with Frigate. Wyze cameras can work through the Docker Wyze Bridge project. For the best experience, PoE cameras are always recommended over Wi-Fi.
It takes a weekend if you are starting from scratch. The trickiest part is getting your camera RTSP URLs right (every brand has a different format). Once the cameras are streaming into Frigate, the rest is straightforward YAML configuration. The Frigate documentation is excellent, and the community on Discord and Reddit is very active and helpful.