Frigate NVR
Status: Production
Last verified: 20 October 2026, against the live Frigate API (read-only)
Maintainer notes: Wadsworth keeps this page in step with the running configuration. Re-check the live API before relying on any value here.
Overview
Frigate is the network video recorder for the house cameras. It decodes the camera streams, runs object detection on Google Coral accelerators, records alert and detection clips, and publishes events to MQTT for Home Assistant.
| Property | Value |
|---|---|
| Host | 192.168.10.16 (internal name sentinel) |
| Version | 0.17.2 (0.17.2-3d4dd3a) |
| API / UI | http://192.168.10.16:5000 (internal, unauthenticated) and :8971 (authenticated) |
| Detectors | 2 × Google Coral Edge TPU (coral1, coral2), 320×320 model, ~6.2 ms inference each |
| Hardware decode | Intel VAAPI (ffmpeg.hwaccel_args: preset-vaapi) |
| MQTT | Broker mqtt.barnesbears.xyz, topic prefix frigate |
| Default detect rate | 5 fps |
Use the IP, not sentinel.barnesbears.xyz
sentinel.barnesbears.xyz resolves to the Proxmox router, not to Frigate. Use 192.168.10.16.
Recording model
Recording is off globally (record.enabled: false) and switched on per camera. Recording cameras keep alert and detection clips for 10 days, motion-based, with no continuous (24/7) recording (continuous.days: 0).
No recording means no alerts
In Frigate 0.17, review items (alerts and detections) are produced by the recording pipeline. A camera with record.enabled: false still detects and tracks objects but never creates a review item or an alert, however good its zones are.
The record button in the Frigate camera view is a runtime override. It will not engage, or persist, for a camera with record.enabled: false in config.yml. Enable recording in the config file.
Cameras
| Camera | State | Detect stream | Records | Tracks | Zones | Alert gate (required zones) |
|---|---|---|---|---|---|---|
driveway1 |
Disabled | 1280×720 @ 10 | Yes (when enabled) | People, vehicles, animals, bins, delivery vans | Concrete, Driveway-Sidewalk, Mailbox, Driveway_Skirt, Garage_Door_-_Driveway, Road1 |
None set |
driveway2 |
Live | 1536×432 @ 5 | Yes | Person | driveway, front_sidewalk_1 |
driveway, front_sidewalk_1 |
garage1 |
Live | 704×480 @ 5 | Yes | Person, car, waste bin | Mini_Cooper_Parking, Ford_Escape_Parking, garage_area |
All three zones |
hottub1 |
Live | 1280×720 @ 5 | Yes | Person, animals | Patio, Shed_and_Firepit |
Both zones (person alerts only) |
doorbell_front |
Live | 640×480 @ 5 | Yes | Person, animals | front_approach, front_sidewalk_2, Front_Door_Animal_Trail |
All three zones |
doorbell_rear |
Live | 640×480 @ 5 | Yes | Person, animals | None | Ungated by design (any person) |
backyard1 |
Live | 640×360 @ 5 | Yes | Person, animals | None | Ungated |
back_yard_overview |
Configured, not yet installed | 1280×720 @ 5 | No | Person | None | — |
prusa_mk4_1 |
Live, detection off | 640×360 @ 5 | No | — | None | — |
"Animals" means cat, dog, deer, bird, raccoon, fox, squirrel and rabbit. driveway1 also tracks Amazon, USPS, UPS, FedEx and DHL vehicles.
Camera notes:
driveway2is a 180° fisheye. That explains the 1536×432 letterbox detect stream. Zones must follow the ground plane near the house; fisheye warp pushes approaching people higher up the frame than intuition suggests.- The doorbells' detect resolution is 640×480, the camera sub-stream, reduced from 2560×1920 in September 2026. The Coral model runs at 320×320 anyway, so the full-resolution stream only cost decode time.
back_yard_overviewhas no camera mounted yet.ffmpeg"No route to host" errors and 0 fps from it are expected until it is installed.prusa_mk4_1watches the 3D printer and has detection deliberately disabled.
Zone and alert conventions
- Zone names must be unique ignoring case. Zone names feed MQTT topics, Home Assistant sensors and event
entered_zones, and case handling is not consistent across them. The two sidewalk zones were renamedfront_sidewalk_1(driveway2) andfront_sidewalk_2(doorbell_front) for this reason. - The sidewalks are on the property. There are no public sidewalks in the neighbourhood, so a person on a sidewalk zone is approaching or leaving the house. Sidewalk zones belong in the alert gate.
- An object only registers in a zone if the camera tracks its label (
objects.track) and the zone accepts it (zoneobjects; an empty list accepts every tracked label). - Zones key off the bottom-centre of an object's bounding box, i.e. where feet or wheels touch the ground.
Zones that register animals: Road1 (driveway1), Patio and Shed_and_Firepit (hottub1) and Front_Door_Animal_Trail (doorbell_front). doorbell_rear and backyard1 detect animals across the whole frame.
Tuning: pick the right lever
| Failure mode | Tool | Why |
|---|---|---|
| False positive that recurs in the same spot with no motion (parked car, clutter) | Object mask (objects.filters.<label>.mask) |
Discards that label at that location without affecting detections elsewhere |
| Swaying trees, flags, moving shadows | Motion mask (motion.mask) |
Stops motion in that area waking the detector; useless against a static false positive |
| Low-confidence noise everywhere | Threshold (objects.filters.<label>.threshold) |
Last resort: it also suppresses real low-confidence detections |
When masking vegetation, cover the moving foliage and stop above the ground line. Masking the near ground plane blinds the camera to real people. garage1 (person and car object masks) and doorbell_front (five motion masks, including the front tree) are working examples.
Troubleshooting
A camera detects but never alerts:
- Check
record.enabledfor that camera first. No recording means no review items. - Check whether the detections' bottom-centre points fall inside the zones in
review.alerts.required_zones. On fisheye cameras, test this point-in-polygon rather than by eye. - Check that the label is in both
objects.trackand the zone'sobjectslist.
Camera shows 0 fps: check whether it is disabled (driveway1), not yet installed (back_yard_overview) or has detection off (prusa_mk4_1) before treating it as a fault. Then check docker logs for ffmpeg errors.
Read-only health checks
curl -s http://192.168.10.16:5000/api/version
curl -s http://192.168.10.16:5000/api/stats # detector inference speed, per-camera fps
curl -s http://192.168.10.16:5000/api/config # running configuration
curl -s http://192.168.10.16:5000/api/logs/frigate
Healthy reference values: Coral inference around 6 ms each; live cameras around 5 fps camera_fps.
Upgrades
A Frigate 0.18 upgrade has been assessed as low risk for this configuration. Before upgrading, back up frigate.db (the database migration may be one-way). Afterwards, verify that every zone and mask survived: 0.18 changes the zone and mask format, and this install has many hand-tuned ones. Use the GitHub release notes as the authoritative upgrade reference.