2021-01-21 03:26:49 +03:00
---
id: index
2024-01-30 15:14:16 +03:00
title: Frigate Configuration
2021-01-21 03:26:49 +03:00
---
2026-03-30 19:36:45 +03:00
import ConfigTabs from "@site/src/components/ConfigTabs";
import TabItem from "@theme/TabItem";
import NavPath from "@site/src/components/NavPath";
2021-04-07 21:38:20 +03:00
2026-03-30 19:36:45 +03:00
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 ](../guides/getting_started.md ).
## 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 ](#accessing-app-config-dir )
- **All other installations:** Map to `/config/config.yml` inside the container
2021-01-21 03:26:49 +03:00
2025-03-24 17:05:59 +03:00
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.
2026-03-30 19:36:45 +03:00
A minimal starting configuration:
2021-01-21 03:26:49 +03:00
```yaml
mqtt:
2024-01-30 15:14:16 +03:00
enabled: False
2021-01-21 03:26:49 +03:00
cameras:
2024-01-30 15:14:16 +03:00
dummy_camera: # < --- this will be changed to your actual camera later
enabled: False
2021-01-21 03:26:49 +03:00
ffmpeg:
inputs:
2024-01-30 15:14:16 +03:00
- path: rtsp://127.0.0.1:554/rtsp
2021-01-21 03:26:49 +03:00
roles:
- detect
```
2026-03-06 02:20:02 +03:00
## Accessing the Home Assistant App configuration directory {#accessing-app-config-dir}
2025-03-24 17:05:59 +03:00
2026-03-06 02:20:02 +03:00
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.
2025-03-24 17:05:59 +03:00
2026-03-06 02:20:02 +03:00
| App Variant | Configuration directory |
2026-02-26 20:57:33 +03:00
| -------------------------- | ----------------------------------------- |
| 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` |
2025-03-24 17:05:59 +03:00
**Whenever you see `/config` in the documentation, it refers to this directory.**
2026-03-30 19:36:45 +03:00
If for example you are running the standard App variant and use the [VS Code App ](https://github.com/hassio-addons/addon-vscode ) 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.
2025-03-24 17:05:59 +03:00
## VS Code Configuration Schema
2022-05-29 17:48:55 +03:00
2026-03-06 02:20:02 +03:00
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.
2022-05-29 17:48:55 +03:00
2024-01-30 15:14:16 +03:00
## Environment Variable Substitution
2021-01-21 03:26:49 +03:00
2024-01-30 15:14:16 +03:00
Frigate supports the use of environment variables starting with `FRIGATE_` **only** where specifically indicated in the [reference config ](./reference.md ). For example, the following values can be replaced at runtime by using environment variables:
2023-03-14 16:51:09 +03:00
2023-03-07 15:28:51 +03:00
```yaml
mqtt:
2026-03-09 00:08:40 +03:00
host: "{FRIGATE_MQTT_HOST}"
2023-03-07 15:28:51 +03:00
user: "{FRIGATE_MQTT_USER}"
password: "{FRIGATE_MQTT_PASSWORD}"
```
2023-03-14 16:51:09 +03:00
2023-03-07 15:28:51 +03:00
```yaml
- path: rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@10.0.10.10:8554/unicast
```
2023-04-26 14:08:53 +03:00
```yaml
onvif:
2026-03-18 17:54:26 +03:00
host: "192.168.1.12"
2023-04-26 14:08:53 +03:00
port: 8000
user: "{FRIGATE_RTSP_USER}"
password: "{FRIGATE_RTSP_PASSWORD}"
```
2024-01-04 02:39:51 +03:00
```yaml
go2rtc:
rtsp:
username: "{FRIGATE_GO2RTC_RTSP_USERNAME}"
password: "{FRIGATE_GO2RTC_RTSP_PASSWORD}"
```
2024-06-22 00:30:19 +03:00
```yaml
genai:
api_key: "{FRIGATE_GENAI_API_KEY}"
```
2024-01-30 15:14:16 +03:00
## Common configuration examples
2023-11-18 17:04:43 +03:00
2026-03-30 19:36:45 +03:00
Here are some common starter configuration examples. These can be configured through the Settings UI or via YAML. Refer to the [reference config ](./reference.md ) for detailed information about all config values.
2023-11-18 17:04:43 +03:00
2026-03-06 02:20:02 +03:00
### Raspberry Pi Home Assistant App with USB Coral
2023-11-18 17:04:43 +03:00
2024-01-30 15:14:16 +03:00
- Single camera with 720p, 5fps stream for detect
2026-03-06 02:20:02 +03:00
- MQTT connected to the Home Assistant Mosquitto App
2024-01-30 15:14:16 +03:00
- 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
2024-09-12 03:53:58 +03:00
- Continue to keep all video if it qualified as an alert or detection for 30 days
2024-01-30 15:14:16 +03:00
- Save snapshots for 30 days
- Motion mask for the camera timestamp
2023-11-18 17:04:43 +03:00
2026-03-30 19:36:45 +03:00
< ConfigTabs >
< TabItem value = "ui" >
1. Navigate to < NavPath path = "Settings > System > MQTT" /> and configure the MQTT connection to your Home Assistant Mosquitto broker
2. Navigate to < NavPath path = "Settings > Global configuration > FFmpeg" /> and set **Hardware acceleration arguments** to `Raspberry Pi (H.264)`
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 20:54:21 +03:00
3. Navigate to < NavPath path = "Settings > System > Detectors and model" /> and add a detector with **Type** `EdgeTPU` and **Device** `usb`
2026-03-30 19:36:45 +03:00
4. Navigate to < NavPath path = "Settings > Global configuration > Recording" /> 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 < NavPath path = "Settings > Global configuration > Snapshots" /> and set **Enable snapshots** to on, **Snapshot retention > Default retention** to `30`
6. Navigate to < NavPath path = "Settings > Camera configuration > Management" /> and add your camera with the appropriate RTSP stream URL
7. Navigate to < NavPath path = "Settings > Camera configuration > Masks / Zones" /> to add a motion mask for the camera timestamp
< / TabItem >
< TabItem value = "yaml" >
2021-01-21 03:26:49 +03:00
```yaml
mqtt:
2024-01-30 15:14:16 +03:00
host: core-mosquitto
user: mqtt-user
password: xxxxxxxxxx
ffmpeg:
hwaccel_args: preset-rpi-64-h264
2021-09-12 22:48:21 +03:00
detectors:
2024-01-30 15:14:16 +03:00
coral:
type: edgetpu
device: usb
record:
2021-09-12 22:48:21 +03:00
enabled: True
2026-02-26 20:57:33 +03:00
motion:
2024-01-30 15:14:16 +03:00
days: 7
2024-09-12 03:53:58 +03:00
alerts:
2024-01-30 15:14:16 +03:00
retain:
2024-09-12 03:53:58 +03:00
days: 30
2026-02-26 20:57:33 +03:00
mode: motion
2024-09-12 03:53:58 +03:00
detections:
retain:
days: 30
2026-02-26 20:57:33 +03:00
mode: motion
2024-01-30 15:14:16 +03:00
snapshots:
2021-09-12 22:48:21 +03:00
enabled: True
2024-01-30 15:14:16 +03:00
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:
2026-02-28 17:04:43 +03:00
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"
2024-01-30 15:14:16 +03:00
```
2026-03-30 19:36:45 +03:00
< / TabItem >
< / ConfigTabs >
2024-01-30 15:14:16 +03:00
### Standalone Intel Mini PC with USB Coral
- Single camera with 720p, 5fps stream for detect
2026-03-30 19:36:45 +03:00
- MQTT disabled (not integrated with Home Assistant)
2024-01-30 15:14:16 +03:00
- 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
2024-09-12 03:53:58 +03:00
- Continue to keep all video if it qualified as an alert or detection for 30 days
2024-01-30 15:14:16 +03:00
- Save snapshots for 30 days
- Motion mask for the camera timestamp
2026-03-30 19:36:45 +03:00
< ConfigTabs >
< TabItem value = "ui" >
1. Navigate to < NavPath path = "Settings > System > MQTT" /> and set **Enable MQTT** to off
2. Navigate to < NavPath path = "Settings > Global configuration > FFmpeg" /> and set **Hardware acceleration arguments** to `VAAPI (Intel/AMD GPU)`
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 20:54:21 +03:00
3. Navigate to < NavPath path = "Settings > System > Detectors and model" /> and add a detector with **Type** `EdgeTPU` and **Device** `usb`
2026-03-30 19:36:45 +03:00
4. Navigate to < NavPath path = "Settings > Global configuration > Recording" /> 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 < NavPath path = "Settings > Global configuration > Snapshots" /> and set **Enable snapshots** to on, **Snapshot retention > Default retention** to `30`
6. Navigate to < NavPath path = "Settings > Camera configuration > Management" /> and add your camera with the appropriate RTSP stream URL
7. Navigate to < NavPath path = "Settings > Camera configuration > Masks / Zones" /> to add a motion mask for the camera timestamp
< / TabItem >
< TabItem value = "yaml" >
2024-01-30 15:14:16 +03:00
```yaml
mqtt:
2021-09-12 22:48:21 +03:00
enabled: False
2024-01-30 15:14:16 +03:00
ffmpeg:
hwaccel_args: preset-vaapi
detectors:
coral:
type: edgetpu
device: usb
record:
enabled: True
2026-02-26 20:57:33 +03:00
motion:
2024-01-30 15:14:16 +03:00
days: 7
2024-09-12 03:53:58 +03:00
alerts:
retain:
days: 30
2026-02-26 20:57:33 +03:00
mode: motion
2024-09-12 03:53:58 +03:00
detections:
2021-09-12 22:48:21 +03:00
retain:
2024-09-12 03:53:58 +03:00
days: 30
2026-02-26 20:57:33 +03:00
mode: motion
2021-09-03 15:03:36 +03:00
2021-09-12 22:48:21 +03:00
snapshots:
2024-01-30 15:14:16 +03:00
enabled: True
2021-09-12 22:48:21 +03:00
retain:
2024-01-30 15:14:16 +03:00
default: 30
2021-09-03 15:03:36 +03:00
2024-01-30 15:14:16 +03:00
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:
2026-02-28 17:04:43 +03:00
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"
2024-01-30 15:14:16 +03:00
```
2026-03-30 19:36:45 +03:00
< / TabItem >
< / ConfigTabs >
### Home Assistant integrated Intel Mini PC with OpenVINO
2024-01-30 15:14:16 +03:00
- Single camera with 720p, 5fps stream for detect
2026-03-30 19:36:45 +03:00
- MQTT connected to same MQTT server as Home Assistant
2024-01-30 15:14:16 +03:00
- VAAPI hardware acceleration for decoding video
2026-03-30 19:36:45 +03:00
- OpenVINO detector
2024-01-30 15:14:16 +03:00
- Save all video with any detectable motion for 7 days regardless of whether any objects were detected or not
2024-09-12 03:53:58 +03:00
- Continue to keep all video if it qualified as an alert or detection for 30 days
2024-01-30 15:14:16 +03:00
- Save snapshots for 30 days
- Motion mask for the camera timestamp
2026-03-30 19:36:45 +03:00
< ConfigTabs >
< TabItem value = "ui" >
1. Navigate to < NavPath path = "Settings > System > MQTT" /> and configure the connection to your MQTT broker
2. Navigate to < NavPath path = "Settings > Global configuration > FFmpeg" /> and set **Hardware acceleration arguments** to `VAAPI (Intel/AMD GPU)`
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 20:54:21 +03:00
3. Navigate to < NavPath path = "Settings > System > Detectors and model" /> 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
2026-03-30 19:36:45 +03:00
5. Navigate to < NavPath path = "Settings > Global configuration > Recording" /> 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 < NavPath path = "Settings > Global configuration > Snapshots" /> and set **Enable snapshots** to on, **Snapshot retention > Default retention** to `30`
7. Navigate to < NavPath path = "Settings > Camera configuration > Management" /> and add your camera with the appropriate RTSP stream URL
8. Navigate to < NavPath path = "Settings > Camera configuration > Masks / Zones" /> to add a motion mask for the camera timestamp
< / TabItem >
< TabItem value = "yaml" >
2024-01-30 15:14:16 +03:00
```yaml
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
2025-01-08 06:59:37 +03:00
path: /openvino-model/ssdlite_mobilenet_v2.xml
2024-01-30 15:14:16 +03:00
labelmap_path: /openvino-model/coco_91cl_bkgr.txt
record:
enabled: True
2026-02-26 20:57:33 +03:00
motion:
2024-01-30 15:14:16 +03:00
days: 7
2024-09-12 03:53:58 +03:00
alerts:
retain:
days: 30
2026-02-26 20:57:33 +03:00
mode: motion
2024-09-12 03:53:58 +03:00
detections:
2024-01-30 15:14:16 +03:00
retain:
2024-09-12 03:53:58 +03:00
days: 30
2026-02-26 20:57:33 +03:00
mode: motion
2024-01-30 15:14:16 +03:00
snapshots:
enabled: True
retain:
default: 30
2023-01-17 02:50:35 +03:00
2021-09-12 22:48:21 +03:00
cameras:
2024-01-30 15:14:16 +03:00
name_of_your_camera:
detect:
width: 1280
height: 720
fps: 5
2021-09-12 22:48:21 +03:00
ffmpeg:
inputs:
2024-01-30 15:14:16 +03:00
- path: rtsp://10.0.10.10:554/rtsp
2021-09-12 22:48:21 +03:00
roles:
- detect
2024-01-30 15:14:16 +03:00
motion:
mask:
2026-02-28 17:04:43 +03:00
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"
2021-09-12 22:48:21 +03:00
```
2026-03-30 19:36:45 +03:00
< / TabItem >
< / ConfigTabs >