Global and Camera-Level Configuration
Most of Frigate's configuration can be set once for all cameras and then adjusted for individual cameras. The global value acts as the default for every camera, and any camera can override it.
This page explains how that inheritance works. For a tour of the Settings UI itself, see Frigate Configuration.
The basicsâ
Set a value globally and every camera uses it. Set the same value on a camera and that camera uses its own value instead.
- Frigate UI
- YAML
- Navigate to SettingsâGlobal configurationâObject detection and set Detect FPS to
5. Every camera now detects at 5 fps. - Navigate to SettingsâCamera configurationâObject detection, select the
drivewaycamera, and set Detect FPS to10.
The driveway camera now detects at 10 fps. Every other camera still uses the global value of 5.
detect:
fps: 5 # every camera detects at 5 fps
cameras:
front_door:
ffmpeg: ...
driveway:
ffmpeg: ...
detect:
fps: 10 # except this one
front_door inherits fps: 5, and driveway uses 10.
Overrides apply per value, not per sectionâ
Overriding one value in a section does not detach the rest of that section. Everything you don't set on the camera still comes from the global configuration.
- Frigate UI
- YAML
If you set a camera's Motion threshold but leave Contour area alone, only the threshold is overridden. The contour area continues to follow SettingsâGlobal configurationâMotion detection, and changing it there still affects that camera.
Open a section to see which values are overridden: the section header indicates how many fields differ from the global configuration.
motion:
threshold: 30
contour_area: 10
cameras:
driveway:
motion:
threshold: 40
The driveway camera ends up with threshold: 40 and contour_area: 10. Only the value you wrote was overridden.
Returning a camera to the global valueâ
- Frigate UI
- YAML
A camera section that has its own values shows an Overridden badge. To remove the override and go back to inheriting, use the Reset to Global button at the bottom of the section.
Frigate treats a camera value as an override because it is written in the config file, not because it differs from the global value. Repeating the global value under a camera still creates an override:
snapshots:
enabled: true
cameras:
driveway:
snapshots:
enabled: true # this is an override, even though it matches
If you later change the global snapshots.enabled to false, driveway keeps saving snapshots, because it has its own value. To make a camera follow the global value again, delete the key from the camera rather than setting it to match.
Lists replace, maps mergeâ
This is the distinction that surprises people most.
Lists are replaced entirely. A camera's list does not add to the global list, it takes its place.
- Frigate UI
- YAML
The camera page shows the objects the camera is currently tracking, starting from the global list. Changing that selection under SettingsâCamera configurationâObjects replaces the list for that camera, so make sure every object you want tracked is selected, not just the ones you are adding.
objects:
track:
- person
- car
cameras:
backyard:
objects:
track:
- dog # backyard tracks ONLY dog, not person or car
To track dog in addition to the global objects, list all of them on the camera.
An empty list is a valid override, and is the normal way to opt a camera out of something:
review:
alerts:
labels:
- person
cameras:
street:
review:
alerts:
labels: [] # this camera never creates alerts
Maps are merged key by key. A camera can add an entry without redeclaring the others.
- Frigate UI
- YAML
Adding a filter for one object under SettingsâCamera configurationâObjects does not remove the filters inherited from SettingsâGlobal configurationâObjects. The camera keeps both.
objects:
filters:
person:
min_area: 5000
cameras:
driveway:
objects:
filters:
car:
min_area: 10000
The driveway camera ends up with both the car filter it defined and the person filter from the global configuration.
Which settings can be overriddenâ
Most, but not all. The full reference config is the authoritative source: sections that support camera-level overrides are marked with the comment # NOTE: Can be overridden at the camera level. In the UI, a setting can be overridden if it appears under both SettingsâGlobal configuration and SettingsâCamera configuration.
A few things worth knowing beyond that:
- Some sections are global only and have no camera-level equivalent, including
go2rtc,genaiproviders,classification,telemetry,camera_groups, andui. - Some sections exist only at the camera level, such as
zonesandonvif. - Some sections are partially overridable, meaning a camera accepts only a few of the keys available globally.
face_recognition,lpr, andaudio_transcriptionwork this way, and the reference config notes which keys apply.
Enrichments that must be enabled globally firstâ
License plate recognition and face recognition are special: the global setting is not just a default, it is a switch that must be on before any camera can use the feature. Enabling one on a camera while it is disabled globally is a configuration error, and Frigate will refuse to start:
Camera driveway has lpr enabled but lpr is disabled at the global level of the config. You must enable lpr at the global level.
Enable the feature globally, then turn it off on the cameras that don't need it.
- Frigate UI
- YAML
- Navigate to Settings