frigate/docs/docs/configuration/index.md
Josh Hawkins 7413ce08d4
Merge detector and model in settings UI (#23216)
* add embedded mode to BaseSection so parents can host the save action

* add optional action slot to current Frigate+ model summary

* add w-full to action slot flex wrapper for explicit width contract

* i18n

* merged detectors and model settings view

* fix document title

* Embed detector form in merged settings view

* add detection model card with tabs and custom model embed

* add Frigate+ model selector with filter popover to merged page

* Add mismatch banner and gate save on detector and model compatibility

* Wire atomic save, restart toast, and undo on detectors and model page

* Clear child pending data on undo

* route merged detectors and model view in settings

* trim Frigate+ page to account-only and remove old detection model view

* basic e2e

* Fix unsaved-changes guard, custom path leak, and post-failure cache resync

* Rename to Detectors and model, float Modified badge, use ConfigMessageBanner for mismatch

* Hide Plus/Custom tabs when Frigate+ is not enabled

* Detect active Plus model via model.plus.id instead of path prefix

* Sync state back to snapshot when child form un-modifies and remount on undo

* Always require restart on save since model changes also need one

* Wrap Frigate+ model selector in SplitCardRow with label and description

* rename tab

* update docs

* sync top-level model with default detector's resolved model

when the user doesn't define a top-level `model:` block, `FrigateConfig.model` stayed at pydantic field defaults (320×320, /labelmap.txt) while the per-detector model picked up `DEFAULT_MODEL` for openvino on cpu (300×300, coco_91cl_bkgr.txt introduced in #23127), causing `RemoteObjectDetector` to fail with "buffer is too small for requested array" because the SHM was sized from the per-detector model but mapped using the top-level one. After the detector loop, copy the first detector's resolved model up to `self.model` so both sides agree on dimensions and labelmap

* revert to cpu detector by default

use openvino cpu for new configs only

* add defaults
2026-05-17 11:54:21 -06:00

12 KiB

id title
index Frigate Configuration

import ConfigTabs from "@site/src/components/ConfigTabs"; import TabItem from "@theme/TabItem"; import NavPath from "@site/src/components/NavPath";

Frigate can be configured through the Settings UI or by editing the YAML configuration file directly. The Settings UI is the recommended approach — it provides validation and a guided experience for all configuration options.

It is recommended to start with a minimal configuration and add to it as described in the getting started guide.

Configuration File Location

For users who prefer to edit the YAML configuration file directly:

  • Home Assistant App: /addon_configs/<addon_directory>/config.yml — see directory list
  • All other installations: Map to /config/config.yml inside the container

It can be named config.yml or config.yaml, but if both files exist config.yml will be preferred and config.yaml will be ignored.

A minimal starting configuration:

mqtt:
  enabled: False

cameras:
  dummy_camera: # <--- this will be changed to your actual camera later
    enabled: False
    ffmpeg:
      inputs:
        - path: rtsp://127.0.0.1:554/rtsp
          roles:
            - detect

Accessing the Home Assistant App configuration directory

When running Frigate through the HA App, the Frigate /config directory is mapped to /addon_configs/<addon_directory> in the host, where <addon_directory> is specific to the variant of the Frigate App you are running.

App Variant Configuration directory
Frigate /addon_configs/ccab4aaf_frigate
Frigate (Full Access) /addon_configs/ccab4aaf_frigate-fa
Frigate Beta /addon_configs/ccab4aaf_frigate-beta
Frigate Beta (Full Access) /addon_configs/ccab4aaf_frigate-fa-beta

Whenever you see /config in the documentation, it refers to this directory.

If for example you are running the standard App variant and use the VS Code App to browse your files, you can click File > Open folder... and navigate to /addon_configs/ccab4aaf_frigate to access the Frigate /config directory and edit the config.yaml file. You can also use the built-in config editor in the Frigate UI.

VS Code Configuration Schema

VS Code supports JSON schemas for automatically validating configuration files. You can enable this feature by adding # yaml-language-server: $schema=http://frigate_host:5000/api/config/schema.json to the beginning of the configuration file. Replace frigate_host with the IP address or hostname of your Frigate server. If you're using both VS Code and Frigate as an App, you should use ccab4aaf-frigate instead. Make sure to expose the internal unauthenticated port 5000 when accessing the config from VS Code on another machine.

Environment Variable Substitution

Frigate supports the use of environment variables starting with FRIGATE_ only where specifically indicated in the reference config. For example, the following values can be replaced at runtime by using environment variables:

mqtt:
  host: "{FRIGATE_MQTT_HOST}"
  user: "{FRIGATE_MQTT_USER}"
  password: "{FRIGATE_MQTT_PASSWORD}"
- path: rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@10.0.10.10:8554/unicast
onvif:
  host: "192.168.1.12"
  port: 8000
  user: "{FRIGATE_RTSP_USER}"
  password: "{FRIGATE_RTSP_PASSWORD}"
go2rtc:
  rtsp:
    username: "{FRIGATE_GO2RTC_RTSP_USERNAME}"
    password: "{FRIGATE_GO2RTC_RTSP_PASSWORD}"
genai:
  api_key: "{FRIGATE_GENAI_API_KEY}"

Common configuration examples

Here are some common starter configuration examples. These can be configured through the Settings UI or via YAML. Refer to the reference config for detailed information about all config values.

Raspberry Pi Home Assistant App with USB Coral

  • Single camera with 720p, 5fps stream for detect
  • MQTT connected to the Home Assistant Mosquitto App
  • Hardware acceleration for decoding video
  • USB Coral detector
  • Save all video with any detectable motion for 7 days regardless of whether any objects were detected or not
  • Continue to keep all video if it qualified as an alert or detection for 30 days
  • Save snapshots for 30 days
  • Motion mask for the camera timestamp
  1. Navigate to and configure the MQTT connection to your Home Assistant Mosquitto broker
  2. Navigate to and set Hardware acceleration arguments to Raspberry Pi (H.264)
  3. Navigate to and add a detector with Type EdgeTPU and Device usb
  4. Navigate to and set Enable recording to on, Motion retention > Retention days to 7, Alert retention > Event retention > Retention days to 30, Alert retention > Event retention > Retention mode to motion, Detection retention > Event retention > Retention days to 30, Detection retention > Event retention > Retention mode to motion
  5. Navigate to and set Enable snapshots to on, Snapshot retention > Default retention to 30
  6. Navigate to and add your camera with the appropriate RTSP stream URL
  7. Navigate to to add a motion mask for the camera timestamp
mqtt:
  host: core-mosquitto
  user: mqtt-user
  password: xxxxxxxxxx

ffmpeg:
  hwaccel_args: preset-rpi-64-h264

detectors:
  coral:
    type: edgetpu
    device: usb

record:
  enabled: True
  motion:
    days: 7
  alerts:
    retain:
      days: 30
      mode: motion
  detections:
    retain:
      days: 30
      mode: motion

snapshots:
  enabled: True
  retain:
    default: 30

cameras:
  name_of_your_camera:
    detect:
      width: 1280
      height: 720
      fps: 5
    ffmpeg:
      inputs:
        - path: rtsp://10.0.10.10:554/rtsp
          roles:
            - detect
    motion:
      mask:
        timestamp:
          friendly_name: "Camera timestamp"
          enabled: true
          coordinates: "0.000,0.427,0.002,0.000,0.999,0.000,0.999,0.781,0.885,0.456,0.700,0.424,0.701,0.311,0.507,0.294,0.453,0.347,0.451,0.400"

Standalone Intel Mini PC with USB Coral

  • Single camera with 720p, 5fps stream for detect
  • MQTT disabled (not integrated with Home Assistant)
  • VAAPI hardware acceleration for decoding video
  • USB Coral detector
  • Save all video with any detectable motion for 7 days regardless of whether any objects were detected or not
  • Continue to keep all video if it qualified as an alert or detection for 30 days
  • Save snapshots for 30 days
  • Motion mask for the camera timestamp
  1. Navigate to and set Enable MQTT to off
  2. Navigate to and set Hardware acceleration arguments to VAAPI (Intel/AMD GPU)
  3. Navigate to and add a detector with Type EdgeTPU and Device usb
  4. Navigate to and set Enable recording to on, Motion retention > Retention days to 7, Alert retention > Event retention > Retention days to 30, Alert retention > Event retention > Retention mode to motion, Detection retention > Event retention > Retention days to 30, Detection retention > Event retention > Retention mode to motion
  5. Navigate to and set Enable snapshots to on, Snapshot retention > Default retention to 30
  6. Navigate to and add your camera with the appropriate RTSP stream URL
  7. Navigate to to add a motion mask for the camera timestamp
mqtt:
  enabled: False

ffmpeg:
  hwaccel_args: preset-vaapi

detectors:
  coral:
    type: edgetpu
    device: usb

record:
  enabled: True
  motion:
    days: 7
  alerts:
    retain:
      days: 30
      mode: motion
  detections:
    retain:
      days: 30
      mode: motion

snapshots:
  enabled: True
  retain:
    default: 30

cameras:
  name_of_your_camera:
    detect:
      width: 1280
      height: 720
      fps: 5
    ffmpeg:
      inputs:
        - path: rtsp://10.0.10.10:554/rtsp
          roles:
            - detect
    motion:
      mask:
        timestamp:
          friendly_name: "Camera timestamp"
          enabled: true
          coordinates: "0.000,0.427,0.002,0.000,0.999,0.000,0.999,0.781,0.885,0.456,0.700,0.424,0.701,0.311,0.507,0.294,0.453,0.347,0.451,0.400"

Home Assistant integrated Intel Mini PC with OpenVINO

  • Single camera with 720p, 5fps stream for detect
  • MQTT connected to same MQTT server as Home Assistant
  • VAAPI hardware acceleration for decoding video
  • OpenVINO detector
  • Save all video with any detectable motion for 7 days regardless of whether any objects were detected or not
  • Continue to keep all video if it qualified as an alert or detection for 30 days
  • Save snapshots for 30 days
  • Motion mask for the camera timestamp
  1. Navigate to and configure the connection to your MQTT broker
  2. Navigate to and set Hardware acceleration arguments to VAAPI (Intel/AMD GPU)
  3. Navigate to and add a detector with Type openvino and Device AUTO
  4. On the same page, in the Custom Model tab, configure the OpenVINO model path and settings
  5. Navigate to and set Enable recording to on, Motion retention > Retention days to 7, Alert retention > Event retention > Retention days to 30, Alert retention > Event retention > Retention mode to motion, Detection retention > Event retention > Retention days to 30, Detection retention > Event retention > Retention mode to motion
  6. Navigate to and set Enable snapshots to on, Snapshot retention > Default retention to 30
  7. Navigate to and add your camera with the appropriate RTSP stream URL
  8. Navigate to to add a motion mask for the camera timestamp
mqtt:
  host: 192.168.X.X # <---- same mqtt broker that home assistant uses
  user: mqtt-user
  password: xxxxxxxxxx

ffmpeg:
  hwaccel_args: preset-vaapi

detectors:
  ov:
    type: openvino
    device: AUTO

model:
  width: 300
  height: 300
  input_tensor: nhwc
  input_pixel_format: bgr
  path: /openvino-model/ssdlite_mobilenet_v2.xml
  labelmap_path: /openvino-model/coco_91cl_bkgr.txt

record:
  enabled: True
  motion:
    days: 7
  alerts:
    retain:
      days: 30
      mode: motion
  detections:
    retain:
      days: 30
      mode: motion

snapshots:
  enabled: True
  retain:
    default: 30

cameras:
  name_of_your_camera:
    detect:
      width: 1280
      height: 720
      fps: 5
    ffmpeg:
      inputs:
        - path: rtsp://10.0.10.10:554/rtsp
          roles:
            - detect
    motion:
      mask:
        timestamp:
          friendly_name: "Camera timestamp"
          enabled: true
          coordinates: "0.000,0.427,0.002,0.000,0.999,0.000,0.999,0.781,0.885,0.456,0.700,0.424,0.701,0.311,0.507,0.294,0.453,0.347,0.451,0.400"