FR
live

Frigate 0.18 buries the YAML file and pushes configuration into the UI, at the cost of a real migration

On September 12, 2026, Frigate 0.18, the self-hosted AI object-detection NVR, replaced its YAML-first workflow with full UI-based configuration and added profiles and multi-provider GenAI. Back up your config and frigate.db, review the breaking changes, then migrate if you want UI configuration.

A single CCTV surveillance camera fixed to a dark concrete wall, one amber status LED lit.

September 12, 2026. Frigate ships version 0.18.0, a major release of its self-hosted AI object-detection NVR. 36,000 GitHub stars. The measure of the community running it, often alongside Home Assistant. August 2026. The shutdown of DeGirum, whose detector is removed in this release. Why it matters: Frigate is moving from a “YAML-first” world to full UI-based configuration, and the move is not free — this is a migration, not a routine update.

Frigate is one of the most-installed self-hosted projects for local video surveillance: it detects people, vehicles, and animals with AI models running on the CPU, GPU, or a dedicated accelerator, without sending a single frame to the cloud. Its strength has long rested on a single, precise but demanding config.yml file. 0.18 changes that contract.

UI configuration becomes the primary path

The foundational change is a complete UI-based configuration experience called Settings. It covers every section of the file — cameras, detectors, motion, recording, review, GenAI, semantic search, face recognition, license-plate reading, networking, authentication — with per-field validation, inline descriptions, and links back to the documentation.

The UI distinguishes global configuration from per-camera configuration, lets you override a global value on a camera, and reset to defaults at any time. It highlights unsaved changes, offers a “Save All” button that summarizes pending edits, and flags which fields require a restart — with a one-click restart prompt.

The crucial point for teams that automate: manual YAML remains fully supported. Frigate is not abandoning users who version their configuration, but it is making the UI the recommended path. It is the same turn other self-hosted projects are taking — Dynacat, mentioned the same week by selfh.st, made the same step toward configuration without YAML.

Profiles, or how to change behavior without a restart

The second structural addition is profiles. They let you define named overrides on top of a camera’s base configuration and switch between them without restarting — detection, motion, recording, notifications, zones, objects, face recognition, license-plate reading, audio, birdseye.

The real-world use is immediate. A garden camera can move from a “night” profile to a “vacation” profile with a single command, the active profile being persisted across restarts and controllable from the UI or via the MQTT topic frigate/profile/set. For a home already wired into Home Assistant, this means automations can change surveillance behavior based on time of day, presence, or an alarm.

GenAI goes multi-provider, and storage changes format

The GenAI section is restructured in depth. Where a single provider was configured globally, Frigate 0.18 accepts a map of providers, each with a defined role — object descriptions, review summaries, embeddings, chat. A dedicated llama.cpp provider arrives, with automatic model probing, opening the door to a fully local GenAI.

Migration of existing setups is automatic for simple configurations, but the snapshot format change is final. Frigate stops saving annotated JPEG files to disk in favor of a single clean WebP. Users who relied on those annotated .jpg files must switch to the /api/events/<id>/snapshot.jpg endpoint, which now honors timestamp, bounding_box, and crop parameters.

The breaking changes to check before migrating

0.18 is one of the heaviest releases for breaking changes in a long time. The list deserves careful reading before any docker pull:

  • GenAI: the global genai key becomes a map of providers with a roles field; existing configs are migrated automatically.
  • Snapshots: no more annotated JPEG, the clean_copy option is removed, and the default quality drops from 70 to 60.
  • Zones and masks: the format adds enabled and friendly_name fields, with automatic migration.
  • Intel GPU: statistics no longer go through intel_gpu_top but read kernel DRM counters — no more CAP_PERFMON, privileged mode, or perf_event_paranoid, but a Linux kernel 6.5 or newer is required.
  • FFmpeg 8: go2rtc hardware transcoding needs a small config adjustment; FFmpeg 5 is deprecated.
  • Detectors: DeGirum is removed (the vendor ceased operations on August 1, 2026), DeepStack is deprecated and will disappear in 0.19.
bash
# Back up configuration and database before migrating to Frigate 0.18
docker stop frigate
cp /path/to/config/config.yml /path/to/config/config.yml.bak
cp /path/to/config/frigate.db  /path/to/config/frigate.db.bak

# Pull the new image and restart (simple configs are migrated automatically)
docker pull ghcr.io/blakeblackshear/frigate:0.18.0
docker start frigate
docker logs -f frigate   # watch for migration failures

The rule is simple: back up config.yml and frigate.db first, then let the migrator run on a copy, not on your production instance.

What 0.18 says about self-hosting

Frigate 0.18 illustrates a broader movement. Self-hosted applications that grew up with a technical audience are discovering a second generation of users who no longer want to write YAML, but who demand the same level of control. The answer is not abandoning the file, but coexistence: the UI for the majority, the file for automation.

That maturity has a corollary. The more a project becomes “configurable from the UI,” the more its migrations resemble commercial software — with format changes, deprecations, and end-of-support dates. Maintaining a Frigate instance now demands the same backup and version-log discipline as a production service.

Verdict

Frigate 0.18 is a good release, but it is a migration, not an update. If your current setup depends on annotated JPEGs, an Intel GPU on an older kernel, or the DeepStack detector, stay on 0.17 while you plan. If you want UI configuration, profiles, and multi-provider GenAI, back up config.yml and frigate.db, review the breaking-changes list, then migrate on a test environment before production. Either way, do not let a 0.17 instance age too long: DeepStack and FFmpeg 5 will disappear in 0.19, and the leap will only get heavier.

References

The cyber brief, every Tuesday

The flaws that matter and the patches to apply, in a ten-minute read.

No spam. One-click unsubscribe.
read next

On the same topic

Navidrome 0.64 opens its API to Jellyfin clients and migrates IDs to 128 bits

Navidrome 0.64, released September 12, 2026, adds an experimental Jellyfin Music API that lets clients like Finamp and Jellify connect, and re-encodes all internal IDs to a canonical 128-bit format. Back up the database before upgrading and re-sync clients that cache IDs.

← Back to the feed

Type at least two characters.

navigate open esc dismiss