Skip to content

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:

  • driveway2 is 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_overview has no camera mounted yet. ffmpeg "No route to host" errors and 0 fps from it are expected until it is installed.
  • prusa_mk4_1 watches 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 renamed front_sidewalk_1 (driveway2) and front_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 (zone objects; 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:

  1. Check record.enabled for that camera first. No recording means no review items.
  2. 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.
  3. Check that the label is in both objects.track and the zone's objects list.

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.