blakeblackshear/frigate
47.0
Weak · 28 September 2026
208.8k
lines of production code
TypeScript
with Python
5
measurements over time
What this system is
This system is a comprehensive, containerized video surveillance platform that ingests camera streams to perform real-time object detection, tracking, and motion analysis. It leverages a modular architecture to support hardware-accelerated inference across diverse AI accelerators, including NPUs, GPUs, and TPUs, while managing recordings, events, and user interactions via a robust API and web interface. The platform integrates generative AI capabilities for semantic search, face recognition, and automated event summarization, providing a unified dashboard for live viewing, historical review, and system configuration.
How it got here
2019–2024 — Architecture modernization and frontend rewrite
84 changes.
This period focused on a comprehensive architectural overhaul of the Frigate backend, replacing monolithic structures with modular, plugin-based systems for detection, recording, and inter-process communication. Simultaneously, the project executed a complete rewrite of the web frontend using Vite, React, and shadcn/ui, introducing a modern, role-based interface with advanced review and search capabilities.
2025–2026 — GenAI integration and UI overhaul
44 changes.
This period focused on integrating Generative AI capabilities, including a plugin architecture for multiple providers, audio transcription, and semantic search, alongside a major refactoring of the data processing pipeline. The web interface underwent a comprehensive overhaul with a new dynamic configuration framework, guided setup wizards, and enhanced chat and health monitoring features. Concurrently, the project expanded hardware support for various NPUs and improved container security by switching to non-root execution.
Features
Add Camera Wizard for guided camera setup
A new multi-step Camera Wizard has been added to the settings interface to guide users through adding and configuring IP cameras. The wizard begins with Step 1, where users enter camera details such as name, host, and credentials, supporting both ONVIF probing and manual RTSP/RTSPS URL entry. Step 2 handles device discovery and stream testing, displaying ONVIF probe results (manufacturer, model, PTZ support) and validating stream properties like resolution and codecs. Step 3 allows users to configure multiple streams with specific roles (e.g., recording, sub-stream) and manage ONVIF/PTZ settings. Finally, Step 4 provides validation of all configured streams, including bandwidth measurement and backchannel audio checks, before saving the configuration.
web/src/components/settings/wizard · high confidence
Add Frigate+ model summary component
A new UI component has been added to the settings view to display the current status of a Frigate+ detection model. When a model is loaded, this card presents key details including the base model type (whether it is a default or user-provided model), the training date, the specific model name and resolution, and a list of supported detectors. If no model is currently active, the component displays a message indicating that no model is loaded.
web/src/views/settings/components · high confidence
Add ROCm Docker image build infrastructure
This change introduces the build infrastructure for the ROCm (Radeon Open Compute) Docker image, enabling GPU acceleration on AMD hardware. It adds a new Dockerfile that installs ROCm version 7.2.3, configures Debian backports for Mesa drivers to support RDNA4 GPUs, and sets up specific environment variables and library paths for MIOpen and HIP. Additionally, it includes HCL and Makefile configurations to streamline the build and push processes for the ROCm-specific image variant.
docker/rocm · high confidence
Add Raspberry Pi (arm64) Docker build support
Users can now build and run Frigate on Raspberry Pi 4/5 (arm64) devices. This change introduces a new Docker build configuration that installs Raspberry Pi-specific dependencies, including a custom ffmpeg binary linked from the Raspberry Pi repository, and sets up the environment to support hardware-accelerated video processing on this architecture.
docker/rpi · high confidence
Add audio level visualization component
A new AudioLevelGraph component has been added to the web interface, providing a real-time line chart that displays RMS and dBFS audio levels for a specific camera. The graph updates via WebSocket streams and formats timestamps according to the user's configured locale and time format settings.
web/src/components/audio · high confidence
Added AI-generated code review summary chip and dialog
Introduced the GenAISummaryChip component, which displays a visual indicator when AI analysis metadata is available for a code review segment. Clicking this indicator opens a GenAISummaryDialog that presents the AI-generated summary details, including the analysis title, scene description, confidence score, and specific threat levels or concerns identified by the AI.
web/src/components/overlay/chip · high confidence
Added DEEPX NPU host installation script
A new installation script (user\_installation.sh) has been added to the DEEPX Docker configuration to set up the NPU kernel driver and DX-RT runtime on the host machine. This script handles building and loading the specific driver modules, installing the runtime package with integrity verification, and configuring the systemd service to expose the NPU device nodes to containers, enabling hardware-accelerated inference for DEEPX NPUs.
docker/deepx · high confidence
Added Hailo8L user installation script
A new user installation script (user\_installation.sh) has been added to the Hailo8L Docker context, automating the setup of the HailoRT driver version 4.21.0. The script handles dependency installation, clones the driver repository, builds and installs the kernel module, loads the firmware, and configures udev rules, with specific logic to support both aarch64 and amd64 architectures and handle OS codename detection for Debian Trixie.
docker/hailo8l · high confidence
Added MemryX SDK 2.1 installation script
A new user installation script (user\_installation.sh) has been added to the MemryX Docker configuration. This script automates the setup process by purging previous installations, adding the MemryX repository, and installing specific SDK 2.1 packages (memx-drivers, memx-accl, mxa-manager) while holding them to prevent automatic upgrades. It also handles architecture-specific setup for ARM64 systems and instructs users to restart their computers upon completion.
docker/memryx · high confidence
Added YOLO-NAS pretrained export notebook with Colab runtime fix
A new Google Colab notebook (YOLO\_NAS\_Pretrained\_Export.ipynb) and its documentation (README.md) are provided to help users build and download YOLO-NAS models with pre-trained weights for use with Frigate. The notebook includes a specific fix to patch the \super-gradients\ library at runtime, replacing weight download hosts (\sghub.deci.ai\ and \sg-hub-nv.s3.amazonaws.com\) with a CloudFront endpoint to ensure successful weight retrieval. It also instructs users to set the Colab runtime to Python 3.11 (2025.07) to avoid compatibility issues with the \super-gradients\ package, and exports the model in a format compatible with Frigate using a 320x320 input size by default.
notebooks · high confidence
Added example configuration for Frigate with MQTT and camera settings
A new example configuration file (config/config.yml.example) has been added to help users set up the application, specifically demonstrating an MQTT connection and a sample camera configuration for Frigate with detection and RTMP roles.
config · high confidence
Added web push notification worker and robots.txt
A new service worker (notifications-worker.js) has been added to handle web push notifications, including displaying alerts with actions like 'Mark as Reviewed' and handling click events to open links or update review status. Additionally, a robots.txt file has been created to disallow all web crawlers from indexing the site.
web/public · high confidence
Initial repository scaffolding and contributor guidelines
The repository has been initialized with essential project infrastructure, including a .gitignore file to exclude build artifacts and local configurations, a Makefile for building and running the application, and a docker-compose.yml for setting up a local development environment with MQTT. To guide new contributors, the project now includes AGENTS.md (coding standards for Python and React/TypeScript), CONTRIBUTING.md (workflow and PR guidelines), AI\_POLICY.md (rules for using AI tools in contributions), TRADEMARK.md (brand usage policy), and CODEOWNERS (review assignments for specific hardware integrations). Additionally, a cspell.json file is provided to configure spell-checking for the repository.
(repo-wide) · high confidence
Initial support for Rockchip boards with RKNN model conversion
This change introduces the initial Docker build infrastructure for Rockchip hardware, including a new Dockerfile that bundles Rockchip-specific FFmpeg builds (versions 6.0 and 7.1) and the rknn-toolkit2 runtime. It adds a Python utility (conv2rknn.py) and configuration files to allow users to convert ONNX models to the RKNN format for hardware-accelerated inference on Rockchip SoCs, along with build scripts (rk.hcl, rk.mk) to facilitate building and pushing the specialized Rockchip image.
docker/rockchip · high confidence
Initial support for Synaptics SL1680 NPU hardware acceleration
Added a new Docker build configuration for the Synaptics SL1680 NPU, enabling hardware-accelerated object detection on ARM64 platforms. The setup includes the Synaptics Astra SDK v1.5.0, the synap-python library (v0.0.4-preview), and the MobileNet224 COCO object detection model, integrated into the Frigate image via a dedicated Dockerfile and build targets.
docker/synaptics · high confidence
Introduce GenAI provider plugin architecture
Users can now configure Generative AI integrations via a new plugin system located in \frigate/genai/plugins\. This change adds dedicated client implementations for OpenAI, Azure OpenAI, Gemini, Ollama, and llama.cpp, enabling Frigate to leverage these providers for tasks such as image analysis, audio transcription, and tool calling. The plugins handle provider-specific requirements, including Azure's API version parsing, Gemini's inline data limits, and Ollama's multimodal content formatting.
frigate/genai/plugins · high confidence
Introduce PTZ autotracking and async ONVIF controller
Adds a new autotracking system that automatically pans, tilts, and zooms on detected objects using ONVIF commands, including motion estimation to compensate for camera movement and support for relative zooming. Introduces a new asynchronous ONVIF controller that manages camera connections in a dedicated thread, enabling dynamic camera addition/removal at runtime and more robust handling of connection failures and configuration updates.
frigate/ptz · high confidence
Introduce dynamic configuration framework for settings UI
The settings interface now uses a new dynamic configuration system that renders forms based on JSON schemas and provides contextual guidance. This adds a \ConfigForm\ component that supports complex schema transformations, including wildcard path overrides for UI customization and live validation. It introduces a \ConfigFieldMessage\ system to display conditional, severity-coded alerts (info, warning, error) directly within the form, allowing users to receive immediate feedback on configuration issues. The framework also includes context providers to ensure UI widgets stay synchronized with live form data changes, and provides specific configuration overrides for sections like audio, detection, and GenAI to tailor the user experience.
web/src/components/config-form/section-configs · high confidence
Introduce generic background job infrastructure with new debug replay, export, motion search, media sync, and VLM watch jobs
A new \frigate/jobs\ package provides a unified framework for long-running background tasks, featuring a base \Job\ class, a concurrency-aware \JobManager\ for single-instance enforcement per job type, and WebSocket-based progress broadcasting via \JobStatePublisher\. This infrastructure powers several new capabilities: debug replay now runs as a managed job that returns a specific 404 when no recordings exist in the requested time range; video exports are queued with configurable concurrency limits, step-by-step progress tracking, and support for both main and sub-stream sources; motion search is refactored into a background job with parallel verification, hardware-accelerated decoding, and detailed metrics; media sync gains a background runner with optional verbose orphan reporting; and a new VLM watch job continuously monitors a camera using vision-language models until a condition is met or a timeout occurs.
frigate/jobs · high confidence
Introduce modular post-processing architecture for GenAI, LPR, and audio features
Frigate now uses a dedicated post-processing pipeline in the \data\_processing/post\ module, replacing previous inline logic with distinct processors for specific capabilities. This includes \ObjectDescriptionProcessor\ for generating GenAI-powered event descriptions and review summaries, \ReviewDescriptionProcessor\ for creating detailed review item narratives with configurable frame sources and modes, \AudioTranscriptionPostProcessor\ for transcribing audio from recordings using either local Whisper or remote GenAI providers, \LicensePlatePostProcessor\ for post-event license plate recognition, and \SemanticTriggerProcessor\ for triggering actions based on semantic similarity of embeddings. A new \PostProcessorApi\ base class standardizes how these components interact with configuration, metrics, and inter-process communication, enabling dynamic configuration updates and cleaner separation of concerns for AI-driven analysis features.
_frigate/data\processing/post · high confidence
Introduce motion search with ROI drawing and heatmap visualization
Users can now search historical recordings for motion events by defining a Region of Interest (ROI) on a camera feed. This view includes a canvas component for drawing and editing the ROI polygon, supports parallel search modes with adjustable thresholds and area filters, and visualizes motion activity via an overlay heatmap on the video feed. The interface adapts to desktop and mobile layouts, providing a dedicated dialog for search configuration and a main view for reviewing results and managing the search job status.
web/src/views/motion-search · high confidence
Introduce new Vite-based web frontend with PWA and shadcn UI support
The web frontend has been rebuilt using Vite as the build tool, replacing the previous setup. This change introduces a new project structure including a shadcn UI component library configuration, Tailwind CSS styling, and ESLint 10 flat configuration. The application now supports Progressive Web App (PWA) features via a new site.webmanifest and favicon assets, and includes dedicated entry points for both the main application and a login page. Development configuration includes proxy settings for API, video-on-demand, clips, exports, and WebSocket endpoints.
web · high confidence
Introduces structured Pydantic response models for API endpoints
This change adds a new set of Pydantic-based response schemas in the \frigate/api/defs/response\ directory, replacing or supplementing previous ad-hoc response structures. The new models provide strict typing and documentation for various API areas: chat interactions (including tool calls and reasoning traces), event details, face recognition results, export jobs (with progress tracking and case management), review summaries, and preview clips. For users, this ensures more consistent and predictable API responses, better error handling, and clearer field definitions across the Frigate API.
frigate/api/defs/response · high confidence
Introduction of the new SearchView component
The search interface now utilizes a new SearchView component that renders results in a responsive grid layout, supporting configurable column counts from 2 to 8. This view integrates comprehensive filtering capabilities, including dynamic suggestions for cameras, object labels, zones, sub-labels, and custom classification attributes. It also supports time formatting based on user locale (12/24-hour), keyboard shortcuts, and infinite loading for search results, while displaying confidence chips for similarity searches.
web/src/views/search · high confidence
New Birdseye, Preview, and Camera Output modules
This change introduces the core output subsystem for Frigate, adding new modules to handle Birdseye composite views, per-camera JSMPEG live streams, and low-resolution preview video segments. The Birdseye module now supports configurable activity modes (object, motion, alerts) and dynamic camera management, while the Preview module generates optimized MP4 segments from cached frames. The Camera module handles individual live stream conversion and WebSocket broadcasting, and a new authentication helper ensures proper role-based access control for these output streams.
frigate/output · high confidence
New BlurredIconButton and DownloadVideoButton components
Added a new BlurredIconButton component that renders a button with a blurred background effect and hover animations, and a new DownloadVideoButton component that provides a direct download link for video files. The download button generates filenames using localized date/time formatting and displays a success toast notification upon initiation.
web/src/components/button · high confidence
New Event Review interface with motion heatmap and timeline controls
The Event View has been replaced with a new interface that provides a dedicated motion review experience. This view introduces a motion heatmap grid for visualizing activity intensity, a summary timeline for navigating events, and controls for filtering by severity, camera, and motion regions. It also supports marking items as reviewed, adjusting playback speed, and viewing motion-only ranges, significantly enhancing how users review and manage detected events.
web/src/views/events · high confidence
New Explore View for browsing tracked objects
The application now includes a dedicated Explore view (web/src/views/explore/ExploreView.tsx) that allows users to browse tracked objects grouped by label. This view fetches recent events, displays them in thumbnail rows with counts, and supports similarity search triggers via an 'Explore More' action. It integrates with WebSocket updates to refresh descriptions and uses i18n for labels and UI text, providing a localized experience for both desktop and mobile devices.
web/src/views/explore · high confidence
New GenAI Chat interface with event attachments, tool approvals, and thinking models
The chat experience has been rebuilt to support GenAI capabilities. Users can now attach security events to their messages via a new paperclip button that shows recent thumbnails or accepts pasted event IDs, with the attached event displayed as a chip in the conversation. The interface includes a 'thinking' toggle button for models that support dynamic reasoning, which reveals a collapsible reasoning bubble showing the model's thought process. Users can approve, reject, or always-allow state-changing tool calls through dedicated approval cards, and view grouped tool call history. The composer also features quick-reply suggestions when an attachment is present, and a new settings panel allows configuring auto-scroll, stats visibility, and tool-allowance rules.
web/src/components/chat · high confidence
New MobilePage component for consistent mobile navigation
A new MobilePage component has been introduced to standardize mobile page navigation and presentation. It provides a structured API including MobilePage, MobilePageTrigger, MobilePagePortal, MobilePageContent, and MobilePageHeader, leveraging framer-motion for slide-in animations and React portals for rendering. The component handles state management for open/close cycles, integrates with browser history for back-button support, and ensures proper scrolling behavior on mobile devices.
web/src/components/mobile · high confidence
New React Context providers for authentication, theming, and streaming settings
The application now uses dedicated React Context providers to manage core state, replacing previous implementation patterns. Authentication is handled by AuthProvider, which tracks user identity, roles, and allowed cameras via the /profile endpoint. Theming is managed by ThemeProvider, supporting light/dark/system modes and six color schemes (blue, green, nord, red, high-contrast, default) persisted in localStorage. Language preferences are handled by LanguageProvider, which respects system language and persists the choice. Streaming settings are persisted via StreamingSettingsProvider using IndexedDB. A new StatusBarMessagesProvider manages UI status messages, and DetailStreamContext handles object selection state for video detail views. These providers are composed in a central providers.tsx component.
web/src/context · high confidence
New React hooks for UI configuration, camera management, and timeline interaction
The web interface introduces a suite of new React hooks in \web/src/hooks\ to centralize and improve UI logic. \useConfigOverride\ and \useConfigSchema\ provide robust, cached handling of the configuration schema and detect per-camera overrides while ignoring auto-derived fields. \useAllowedCameras\ enforces viewer role restrictions by filtering out replay cameras. \useCameraLiveMode\ and \useDeferredStreamMetadata\ optimize live streaming by deferring metadata fetches and dynamically selecting the best player mode (WebRTC, MSE, or JSMPEG). \useCameraActivity\ aggregates real-time motion and object detection data, while \useDraggableElement\ and \useEventSegmentUtils\ enhance the timeline with precise scrubbing and segment severity mapping. Additional hooks like \useDateLocale\ and \useApiFilter\ improve internationalization and URL-based filtering.
web/src/hooks · high confidence
New Recording View with Advanced Review and Playback Features
The recording interface has been replaced with a new RecordingView component that introduces a comprehensive set of capabilities for reviewing camera footage. Users can now filter recordings by camera, view sub-stream recordings with adaptive quality playback, and utilize a detailed timeline with motion review, zoom controls, and auto-scrolling. The view supports sharing timestamped URLs for specific footage, exporting clips with preview, and integrating GenAI summaries for context. It also includes mobile-responsive layouts, persistent user preferences for timeline settings, and improved handling of no-recording states and camera access restrictions.
web/src/views/recording · high confidence
New System Health pane with Notices and Hardware checks
The System Health view now includes a dedicated Notices tab and a Hardware tab. The Notices tab displays active health problems with severity indicators, allows filtering by severity and hidden status, and provides actions to acknowledge, mute, or link to settings. The Hardware tab shows the status of camera streams and other hardware components, including a button to manually run stream health checks. A status bar indicator now shows the count of active notices and links to the System Health page.
web/src/components/health · high confidence
New TypeScript type definitions for the Camera Wizard and system configuration
The web application now includes a comprehensive set of TypeScript type definitions in \web/src/types\ to support the new Camera Wizard and various system configuration features. This adds structured data models for the Camera Wizard (including brand templates, stream roles, and probe results), zone and motion mask editing, GenAI chat interactions, classification training, and export management. It also introduces types for the new Health/Notices system, hardware statistics (GPU/NPU), and the unified Settings page structure, providing a stronger foundation for these UI components.
web/src/types · high confidence
New UI indicator components for status, loading, and workflow guidance
The indicators directory now includes several new React components to enhance visual feedback and user guidance. CameraActivityIndicator provides a distinct animated alert for camera status, while ImageLoadingIndicator offers a Safari-optimized loading state using CSS instead of skeleton placeholders. RuntimeOverrideIndicator displays a badge with a tooltip to clarify when a camera's live value differs from its saved configuration. StepIndicator supports both numbered and dot-based variants to guide users through multi-step processes like face setup. Additionally, Chip and LogChip components now handle severity-based styling with animations, and RestartRequiredIndicator offers a clear visual cue for pending configuration changes.
web/src/components/indicators · high confidence
New camera management tools and redesigned mask/zone editor
The settings interface now includes a multi-step Camera Wizard to guide users through adding and configuring new cameras, a Clone Camera dialog to duplicate existing camera setups, and a dedicated Camera Streaming dialog to manage stream types and playback modes. Additionally, the mask and zone editing experience has been overhauled with a new Konva-based canvas that supports point snapping, right-click deletion of points, and undo/redo controls, alongside new edit panes for motion and object masks that allow users to manage these detection areas directly within the settings view.
web/src/components/settings · high confidence
New card components for review, classification, search, and exports
The web UI now uses a set of dedicated card components to display different types of content in the interface. Review events are shown using AnimatedEventCard and ReviewCard, which support marking items as reviewed, exporting clips, and deleting items with confirmation. Classification results are displayed via ClassificationCard, showing confidence scores and match status. Search results use SearchThumbnail and SearchThumbnailFooter to present similarity matches with scores and actions. Exports are managed through ExportCard and CaseCard, allowing renaming, deletion, and assignment to cases. An EmptyCard component provides a generic placeholder for empty states, and SettingsGroupCard structures configuration sections.
web/src/components/card · high confidence
New classification model creation wizard
Users can now create classification models through a guided multi-step wizard. The first step allows naming the model and defining its type (state or object) along with specific classes or labels. The second step provides an interactive visual interface for drawing and adjusting crop areas on camera feeds for state models. The final step automates the generation of training examples, allowing users to review, select, and classify images before the model is saved and trained.
web/src/components/classification/wizard · high confidence
New classification model management interface
The classification view has been replaced with a new interface that allows users to manage custom classification models. This includes a model selection page to browse, create, edit, and delete models, as well as a dedicated training view for managing datasets and initiating live training sessions. The new UI features a wizard for creating models, support for filtering training data, and real-time status updates for model training progress.
web/src/views/classification · high confidence
New configuration form fields for camera inputs, detection models, and live streams
The settings UI now includes dedicated form components for managing camera FFmpeg inputs (with go2rtc restream selection), detection models (with Frigate+ and hardware picker support), live streams, known license plates, and replace rules. A new LayoutGridField enables responsive, semantic grid layouts for configuration sections, while DictAsYamlField allows direct YAML editing for complex dictionary settings.
web/src/components/config-form/theme/fields · high confidence
New configuration form sections for camera review, birdseye ordering, and proxy role mapping
The settings interface now includes dedicated configuration panels for several features. Users can reorder cameras in the birdseye view via drag-and-drop, manage camera review classification zones and enable/disable alerts, detections, and AI-generated descriptions, and configure proxy role-to-group mappings for authentication. Additionally, a reindex button for semantic search has been added to the enrichment settings, and notification settings now include controls for enabling/disabling notifications per camera and managing email recipients.
web/src/components/config-form/sectionExtras · high confidence
New configuration form widgets for GenAI, FFmpeg, and camera settings
The settings UI now includes a suite of new form widgets to support advanced configuration options. GenAI capabilities are handled by new widgets for model selection (combining built-in and provider models), model size, and role assignment, which dynamically adjust based on provider capabilities. FFmpeg configuration is enhanced with a widget supporting preset selection, manual input, and inheritance from global settings. Camera-specific settings are improved with widgets for birdseye activity modes, audio label selection, and credential-aware camera path inputs that allow users to toggle the visibility of sensitive URLs.
web/src/components/config-form/theme/widgets · high confidence
New data processing metrics and model runner types
A new \types.py\ module has been introduced in the data processing layer to define core structures for metrics tracking and model execution. This includes the \DataProcessorMetrics\ class, which initializes shared memory values for tracking performance statistics across various AI tasks such as image/text embeddings, face recognition, ALPR, and object description, as well as the \DataProcessorModelRunner\ class for managing model requests and device configuration. Additionally, a \PostProcessDataEnum\ and \AudioTranscriptionModel\ type alias are defined to support post-processing workflows and audio transcription capabilities.
_frigate/data\processing · high confidence
New dedicated system metrics and health views
The system dashboard now features dedicated views for Camera, Enrichment, General, Storage, and Health metrics. Camera metrics display FPS, detection rates, and connection quality with a new connection quality indicator. Enrichment metrics visualize embedding and classification events per second. General metrics provide detailed graphs for detector inference speed, temperature, CPU, memory, and GPU/NPU usage. Storage metrics consolidate usage into a combined graph with a new popover explaining values and a warning if shared memory (shm) size is too low. The Health view consolidates hardware status and system notices into a single pane.
web/src/views/system · high confidence
New detail pane components for tracking, annotation, and face management
The detail overlay now uses a new set of components to manage tracked object information and configuration. Users can adjust the annotation offset for video synchronization via a new slider and settings pane, view object movement paths on a per-camera plotter with time selection, and manage face library entries through a new creation wizard. The tracking details view has been refactored to include these features, and a new actions menu provides direct access to downloads and semantic search options.
web/src/components/overlay/detail · high confidence
New devcontainer setup with Vite and ONNX GPU support
Developers can now use the provided devcontainer configuration to run the project locally, which includes pre-configured VS Code extensions (Ruff, Prettier, ESLint) and port forwarding for the Vite dev server, API, and RTSP services. The setup initializes the environment by copying the example config, installing frontend dependencies, and building the web assets. It also introduces a custom devcontainer feature for installing ONNX Runtime with GPU support, enabling local development with hardware-accelerated inference.
.devcontainer · high confidence
New diagnostic and benchmarking scripts for recordings, AI models, and motion detection
Added several standalone testing scripts to the \testing-scripts\ directory to help users investigate system behavior outside the running service. \analyze\_recording\_keyframes.py\ diagnoses seek precision and GOP behavior in recorded video segments using ffprobe. \benchmark.py\ and \benchmark\_motion.py\ provide performance measurements for object detection and motion detection pipelines, respectively. \face\_dataset.py\ and \object\_dataset.py\ are diagnostic tools that replicate the production ArcFace and custom classification pipelines to analyze training datasets for issues like false positives, mislabeling, and class contamination. Finally, \genai\_review\_tester.py\ allows interactive testing of GenAI review description prompts against various providers (OpenAI, Azure, Gemini, Ollama, etc.) using saved debug examples, and \process\_clip.py\ enables offline processing of video clips to simulate detection and tracking workflows.
testing-scripts · high confidence
New dynamic UI components for camera features and event reviews
The dynamic component area now includes three new building blocks: CameraFeatureToggle provides a reusable toggle button for enabling/disabling camera features with active/inactive/disabled states and desktop tooltips; NewReviewData displays a refresh button that appears when new review items are available, allowing users to pull latest data and scroll to the top; TimeAgo renders relative time strings (e.g., '2 minutes ago') with automatic refresh intervals that adapt based on how recent the timestamp is, supporting dense formatting and custom intervals.
web/src/components/dynamic · high confidence
New error boundaries and status bar components
The frontend now includes dedicated error boundary components (ErrorBoundaries.tsx) that catch render failures in the page container and navigation chrome, preventing a single broken view from crashing the entire UI and offering users a crash report with copy-to-clipboard functionality. Additionally, new components (Statusbar.tsx, StatusMessageList.tsx, Logo.tsx, Wrapper.tsx) introduce a persistent status bar displaying CPU/GPU usage, active camera profiles, and system health messages, along with a standardized app wrapper and logo component.
web/src/components · high confidence
New event and motion review timelines with virtualized performance
The timeline component has been refactored to introduce dedicated Event and Motion review timelines, replacing the previous generic implementation. This change adds new components (EventReviewTimeline, MotionReviewTimeline, EventSegment, MotionSegment) that support virtualized rendering for improved scrolling performance on long timelines. Users can now view events and motion data with specific severity-based color coding, interactive handlebars for seeking, and a summary timeline that consolidates event data. The update also includes a new DetailStream component for displaying event details and an EventMenu for actions like downloading snapshots or submitting to Frigate Plus.
web/src/components/timeline · high confidence
New filter components for review, search, and export views
The filter UI has been reorganized into dedicated, modular components for each view. Review, Search, and Export views now use their own filter groups (ReviewFilterGroup, SearchFilterGroup, ExportFilterGroup) and action groups (ReviewActionGroup, SearchActionGroup, ExportActionGroup) to handle filtering and bulk operations. Camera selection is now handled by a new CamerasFilterButton that respects user permissions, and date filtering uses new CalendarFilterButton and CalendarRangeFilterButton components. A new MotionRegionFilterGrid allows users to paint motion detection regions directly on a camera preview.
web/src/components/filter · high confidence
New hardware-accelerated detector plugins for AXERA, DeepX, Hailo, MemryX, and Synaptics NPUs
Frigate now includes dedicated detector plugins for several new AI accelerator hardware platforms, allowing users to offload object detection to specialized NPUs. New plugins include Axengine for AXERA AX650N/AX8850N NPUs, DeepX for DEEPX NPUs, Hailo for Hailo8/Hailo8L accelerators, MemryX for MemryX MX3 accelerators, and Synaptics for the Synaptics SL1680 NPU. These additions expand hardware support beyond the existing CPU, EdgeTPU, RKNN, ONNX, OpenVINO, and TensorRT detectors, enabling lower latency and higher throughput on compatible edge devices.
frigate/detectors/plugins · high confidence
New icon components and icon picker for UI customization
This change introduces a suite of new React icon components and an interactive icon picker to enhance the user interface. The new \IconPicker\ component allows users to browse, search, and select icons from the Lucide React set, supporting dynamic icon assignment in forms or settings. Additionally, several specialized icons have been added to support specific features: \AddFaceIcon\ and \FrigatePlusIcon\ for face recognition and branding, \LiveGridIcon\ and \LiveListIcon\ for view mode toggles, \SearchSourceIcon\ and \SubFilterIcon\ for search and filtering contexts, and a custom \SkunkIcon\ to represent the 'skunk' object label, which is not available in standard icon libraries. These components are built using Tailwind CSS and the \cn()\ utility for consistent styling.
web/src/components/icons · high confidence
New input components for search, image upload, and form fields
This change introduces a suite of new UI components in the input directory to enhance search and form interactions. The Search input now supports saving, loading, and deleting named searches via new SaveSearchDialog and DeleteSearchDialog components, with history persisted in user-namespaced IndexedDB. A new ImageEntry component allows users to upload images via drag-and-drop or paste, featuring file validation and preview. Additionally, reusable form helpers like NameAndIdFields (with auto-generated IDs) and TextEntry (with regex validation) have been added to streamline form creation.
web/src/components/input · high confidence
New menu components for account, command palette, and settings
Added new React components in the menu directory to enhance user interaction: AccountSettings for managing user profiles and passwords, CommandMenu for a keyboard-driven navigation palette, GeneralSettings for system configuration and language selection, LiveContextMenu for live stream controls, and SearchResultActions for event management. These components introduce new UI patterns and capabilities for accessing settings, navigating the application, and managing live streams and search results.
web/src/components/menu · high confidence
New overlay components for camera management, triggers, and debugging
The overlay area now includes a suite of new UI components: an ActionsDropdown for quick access to export, share, and debug replay; CameraInfoDialog for viewing stream details and keyframe analysis; ClassificationSelectionDialog for categorizing images; CreateRoleDialog and CreateUserDialog for managing user roles and accounts with form validation; CreateTriggerDialog for setting up semantic search triggers; CustomTimeSelector for precise time-range picking; DebugDrawingLayer for drawing debug rectangles on camera feeds; DebugReplayConfigSheet and DebugReplayDialog for configuring and starting debug replays; and DeleteRoleDialog for removing roles. These components collectively enhance camera inspection, user/role management, trigger configuration, and debugging capabilities within the overlay interface.
web/src/components/overlay · high confidence
New overlay dialog components for camera management, search, and settings import
The application now includes a suite of new dialog components in the overlay layer to enhance user interaction. Users can now delete cameras with an optional toggle to remove associated exports via the DeleteCameraDialog. The Explore view features a comprehensive SearchFilterDialog for filtering by time range, zones, labels, scores, and speed, alongside a TrainFilterDialog for classification model training. Settings management is improved with an ImportUiSettingsDialog that allows selective import of layouts, streaming settings, and preferences. Additionally, new utility dialogs (AttributeSelect, MultiSelect, OptionAndInput, TextEntry, UploadImage) provide standardized interfaces for data entry, while PlatformAwareDialog and PlatformAwareSheet ensure the correct UI pattern (drawer/sheet vs popover) is used on mobile versus desktop.
web/src/components/overlay/dialog · high confidence
New review segment maintenance process
A new background process (frigate.review) has been introduced to manage review segments. This includes a ReviewSegmentMaintainer that handles the creation, updating, and persistence of review segments in the database, along with generating thumbnails for review items. The system now distinguishes between alert and detection severities for review items, and maintains active object tracking to support the review workflow.
frigate/review · high confidence
New scrubbable video preview component
A new \ScrubbablePreview\ component has been added to the preview section, enabling users to scrub through video content with a timeline slider. This component handles playback state, progress tracking, and time updates, while also implementing specific compatibility modes for Safari and mobile browsers to ensure smooth scrubbing behavior.
web/src/components/preview · high confidence
New shadcn/ui component library added
The web interface now includes a comprehensive set of UI components from the shadcn/ui library, providing consistent, accessible, and themeable elements for the application. This addition introduces foundational building blocks such as Dialogs, AlertDialogs, Dropdown Menus, Context Menus, Command palettes, and Drawers, alongside layout and data-display components like Cards, Badges, and Calendars. These components are built on top of Radix UI primitives and styled with Tailwind CSS, ensuring a cohesive design system across the frontend.
web/src/components/ui · high confidence
New shared UI components for the configuration form
This change introduces a new set of reusable UI components for the settings configuration form, located in \web/src/components/config-form/theme/components\. It adds an \AddPropertyButton\ for dynamically adding key-value pairs to objects, a \MapKeyInput\ that handles local draft state and conflict detection when renaming map keys, and an \AdvancedCollapsible\ section that groups advanced settings with i18n support. These components provide the underlying interactive elements for the form's template and field rendering.
web/src/components/config-form/theme/components · high confidence
New system and storage graph components
The system graphs page now uses new dedicated components for visualizing metrics: \SystemGraph\ displays threshold-based bar charts with color-coded warnings and errors, \CombinedStorageGraph\ shows a stacked bar chart of storage usage broken down by camera and stream type, and \StorageGraph\ provides a simple usage bar for total storage. These components replace previous implementations to offer standardized axes, improved localization support, and better handling of time formats and NaN values.
web/src/components/graph · high confidence
New unified settings pages for authentication, camera management, and enrichment features
The settings interface now includes dedicated views for managing users and roles (AuthenticationView), configuring camera lists and order (CameraManagementView), and enabling/disabling semantic search, face recognition, and LPR (EnrichmentsSettingsView). These new components replace previous scattered controls, providing a centralized location for core system configuration and user access management.
web/src/views/settings · high confidence
New utility functions for config form theming and localization
Added a new set of utility functions in the config form theme utilities to improve form rendering and internationalization. The \fieldSizing.ts\ module provides CSS class generation for consistent field widths, while \inputMode.ts\ ensures appropriate virtual keyboards (numeric/decimal) appear on mobile devices for numeric inputs. The \i18n.ts\ module introduces robust translation key path building and resolution logic, specifically handling nested filter attributes and dynamic labels to ensure correct UI text. Additionally, \overrides.ts\ adds deep normalization and comparison utilities to accurately detect modified form fields by ignoring RJSF-injected defaults.
web/src/components/config-form/theme/utils · high confidence
New utility library for configuration forms and time formatting
The web/src/lib directory now includes new foundational utilities: a constants file defining supported language keys, ONNX embedding models, and a credential redaction sentinel; a formatTimeAgo helper for displaying relative timestamps; and utils.ts providing a class-name merger (cn), a deep merge function for RJSF uiSchema objects that preserves nested options, and a type guard for JSON objects. These changes support improved configuration form handling, credential security, and UI localization.
web/src/lib · high confidence
New utility modules for camera configuration, sharing, and system health
This change introduces a suite of new utility modules in web/src/utils to support expanded camera management and system monitoring. The new cameraClone.ts and cameraUtil.ts files provide logic for cloning camera settings (including intelligent stripping of auto-populated filter defaults) and processing camera names, while configUtil.ts and configHealth.ts centralize configuration save logic and evaluate config health problems for the Health tab. Browser integration is improved via browserUtil.ts, which adds a share-or-copy function for URLs, and credentialMask.ts handles credential redaction. Additional utilities include dateUtil.ts for robust date/time formatting with timezone support, codecSupport.ts for probing browser video codec compatibility, and go2rtcFfmpeg.ts for parsing and building go2rtc FFmpeg stream URLs.
web/src/utils · high confidence
New web application pages and components
The web interface now includes dedicated pages for Chat, Classification Model management, Config Editor, Events, Explore, Exports, Face Library, Live view, Login, Logs, Motion Search, and Access Denied. These pages provide the core user-facing functionality for interacting with the system, including AI chat, configuration editing, event review, and live camera viewing.
web/src/pages · high confidence
New web application shell with role-based access and setup wizard
The web frontend now uses a new \App.tsx\ entry point that implements a complete routing structure with lazy-loaded pages (Live, Events, Explore, Exports, Settings, System, ConfigEditor, Logs, Faces, Classification, Chat, Replay, and SetupWizard). Access to routes is controlled by a \ProtectedRoute\ component that enforces role-based permissions defined in the Frigate configuration, restricting administrative features (System, Config, Logs, Faces, Classification, Chat, Replay) to admin users. A SetupWizard is automatically shown to first-time admins with no cameras configured. The application also includes a SafeMode view for the ConfigEditor when the main app cannot start, and integrates a CommandMenu, Statusbar, and Bottombar for navigation.
web/src · high confidence
New web theme system with multiple color palettes
The web interface now supports a new theming system that allows users to choose from several distinct color palettes, including Blue, Green, Red, Nord, High Contrast, and the Default theme. Each theme provides both light and dark mode variants, defining specific CSS variables for backgrounds, foregrounds, primary/secondary colors, and semantic states (destructive, warning). The system also introduces a base palette (Slate, Gray, Zinc, Neutral, Stone, and standard colors like Red, Orange, Amber, etc.) to support consistent color usage across the application.
web/themes · high confidence
New wizard and edit dialogs for classification models
Users can now create and modify classification models through dedicated UI components. The new ClassificationModelWizardDialog provides a step-by-step interface for defining new object or state models, while the new ClassificationModelEditDialog allows for detailed editing of existing model configurations, including save attempts, motion settings, and class assignments.
web/src/components/classification · high confidence
Architecture
API restructured into FastAPI with modular routing
The HTTP API has been migrated from the previous implementation to a new FastAPI-based architecture, with the codebase reorganized into the frigate/api directory. This change introduces a modular structure with dedicated modules for authentication (auth), camera management (camera), chat and LLM tool calling (chat), object classification (classification), event handling (event), and other functional areas, replacing the previous monolithic app.py. The new API leverages FastAPI's dependency injection for role-based access control, Pydantic models for request/response validation, and supports features like streaming responses for chat and standardized JSON responses across all endpoints.
frigate/api · high confidence
Camera configuration schema restructured into modular Pydantic models
The camera configuration system has been refactored from a monolithic structure into a modular, Pydantic-based schema located in \frigate/config/camera/\. This change introduces dedicated configuration classes for distinct camera features—including audio detection, Birdseye compositing, object detection, FFmpeg stream handling, GenAI integration, live playback, motion/object masking, MQTT, notifications, ONVIF/PTZ, recording, and UI display—allowing for stricter validation, clearer defaults, and more granular per-camera settings. The new structure also supports named camera profiles for partial overrides and introduces new capabilities such as sub-stream recording, configurable GenAI roles and providers, and dynamic mask handling, all validated through the new \CameraConfig\ model.
frigate/config/camera · high confidence
Configuration system refactored into modular Pydantic models
The configuration system has been restructured from a single monolithic file into a modular package under frigate/config, with each configuration domain (auth, camera, classification, network, proxy, etc.) now defined by its own Pydantic model. This change standardizes validation, improves maintainability, and enables more granular configuration updates without requiring a full restart, as the new architecture supports runtime config swapping via a ConfigHolder.
frigate/config · high confidence
Detector subsystem refactored to a plugin-based factory pattern
The object detection engine has been restructured from a monolithic implementation into a modular, plugin-based architecture. This change introduces a factory pattern that dynamically discovers and instantiates detector plugins (such as OpenVINO, ONNX, RKNN, and TFLite) based on configuration, allowing for easier addition of new hardware backends and model types. The new system includes dedicated modules for hardware discovery (identifying Coral, Intel GPU/NPU, etc.), device string parsing, and runtime dependency management, while centralizing configuration via Pydantic models to support diverse model inputs and tensor formats.
frigate/detectors · high confidence
Docker build infrastructure restructured with modular build scripts
The Docker build process has been refactored to use a modular, multi-stage approach with dedicated shell scripts for building and installing key components. The main Dockerfile now orchestrates the build of NGINX (v1.27.4 with the dio-az nginx-vod-module fork), go2rtc (v1.9.14), tempio (v2021.09.0), s6-overlay (v3.2.1.0), and sqlite-vec (v0.1.9) via separate build stages. New scripts handle building the Intel media driver from source for Debian 12 compatibility, converting OpenVINO models using a custom Python script that fuses post-processing operations, and compiling pysqlite3 with a specific SQLite amalgamation. This structure replaces previous monolithic or ad-hoc installation steps, ensuring reproducible builds with checksum verification for all downloaded binaries and dependencies.
docker/main · high confidence
New inter-process communication layer using ZeroMQ
Frigate has replaced its previous inter-process communication mechanisms with a new ZeroMQ-based architecture. This change introduces a modular communicator system (including MQTT, WebSocket, and WebPush clients) coordinated by a central Dispatcher, which manages command routing, runtime state persistence, and topic-based subscriptions. The new system standardizes how configuration updates, detection events, and camera controls are exchanged between processes, improving reliability and enabling more granular access control for WebSocket broadcasts.
frigate/comms · high confidence
Real-time processors refactored into a deferred API architecture
The real-time data processing subsystem has been restructured to support background processing for heavy tasks. A new \DeferredRealtimeProcessorApi\ base class introduces a worker-thread model that offloads inference to a background thread, allowing synchronous processors to remain lightweight. This architectural change underpins the new audio transcription capability (supporting local Whisper models and GenAI providers) and improves the reliability of custom classification and face recognition by preventing main-thread blocking during model inference.
_frigate/data\_processing/real\time · high confidence
Recording management refactored into a dedicated process
The recording subsystem has been restructured to run in its own dedicated process (frigate.recording\_manager) rather than within the main application. This change introduces new modules for recording maintenance, cleanup, and export handling, separating the logic for managing recording segments, retaining files based on review status, and exporting clips. Users will benefit from improved isolation of recording tasks, which helps prevent the main application from being blocked by heavy I/O or database operations during recording maintenance and export generation.
frigate/record · high confidence
Refactored ONNX embedding classes to use a base class and type-specific implementations
The ONNX embedding module has been restructured to use a new \BaseEmbedding\ abstract class, with specific implementations moved into dedicated files for face recognition (\FaceNetEmbedding\, \ArcfaceEmbedding\), license plate recognition (\PaddleOCRDetection\, \PaddleOCRClassification\, \PaddleOCRRecognition\), and semantic search (\JinaV1TextEmbedding\, \JinaV1ImageEmbedding\, \JinaV2Embedding\). This change standardizes model loading, downloading, and preprocessing logic across all embedding types, ensuring consistent behavior for image-to-embedding and text-to-embedding conversions while improving maintainability.
frigate/embeddings/onnx · high confidence
Refactored camera processing into dedicated modules
The camera processing logic has been reorganized into distinct components: \CameraMetrics\ and \PTZMetrics\ now handle shared-memory state for performance and PTZ data, \CameraActivityManager\ centralizes object counting and zone-based MQTT publishing, \CameraMaintainer\ manages the lifecycle of capture and tracking processes, and \CameraState\ handles frame rendering and object tracking state. This structural change improves modularity and maintainability of the camera subsystem.
frigate/camera · high confidence
Refactored utility modules into a dedicated util package
The codebase has been reorganized by moving utility functions into a new \frigate/util\ package. This change splits previously monolithic or scattered code into specialized modules, including \audio.py\ for audio extraction and transcription support, \builtin.py\ for core data structures and config merging, \camera\_cleanup.py\ for database and filesystem cleanup, \classification.py\ for model training utilities, \config.py\ for configuration migration and resolution, \downloader.py\ for model file management, \ffmpeg.py\ for process control and progress tracking, \file.py\ for snapshot and thumbnail handling, \hwaccel.py\ for hardware-accelerated decoding recommendations, and \image.py\ for frame manipulation. This restructuring improves modularity and maintainability of the utility layer.
frigate/util · high confidence
Reorganized stats module into a modular package
The stats functionality has been restructured from a single module into a dedicated package (\frigate/stats\) containing separate files for the emitter (\emitter.py\), hardware statistics collection (\hardware.py\), Prometheus metrics (\prometheus.py\), and utilities (\util.py\). This change introduces a new \StatsEmitter\ class that handles background stats collection and history, adds support for detailed hardware stats including GPU/NPU temperatures and specific vendor metrics (Nvidia, Intel, AMD, Rockchip, Hailo), and refactors the Prometheus exporter to use a custom collector class for better metric management.
frigate/stats · high confidence
Restructured event management into a modular package
The event handling logic has been reorganized from a monolithic structure into a dedicated \frigate/events\ package. This change introduces separate modules for distinct responsibilities: \audio.py\ now manages audio event creation and transcription, \cleanup.py\ handles the expiration of snapshots and database records based on retention policies, and \maintainer.py\ processes tracked object updates and API events. Additionally, \types.py\ centralizes event state and type enumerations. This refactoring improves code maintainability and separation of concerns within the event subsystem.
frigate/events · high confidence
Video processing logic is split into dedicated detection and FFmpeg modules
The monolithic video handling code has been refactored into separate modules: \frigate/video/detect.py\ now manages camera object detection processes, while \frigate/video/ffmpeg.py\ handles FFmpeg frame capture and the camera watchdog. This structural change improves code organization and maintainability without altering the external user-facing behavior of video processing.
frigate/video · high confidence
Behavioural changes
Added rule to enforce translation file usage in frontend code
A new Cursor rule has been added to ensure that frontend TypeScript and TSX files never contain hardcoded strings; instead, developers must write to and reference the relevant translation files.
.cursor · high confidence
Audio transcription now uses Sherpa-ONNX by default with Whisper fallback
The audio transcription component has been updated to use the Sherpa-ONNX streaming transducer model (small/tiny) as the default engine, replacing the previous implementation. This change introduces automatic downloading of the required ONNX model files from Hugging Face and configures endpoint detection rules for transcription. For 'large' model configurations, the system falls back to using the Whisper library, dynamically importing its download utilities to handle model retrieval and avoid crashes on systems lacking AVX support.
_frigate/data\_processing/common/audio\transcription · high confidence
Centralized API query parameter definitions
The API now uses dedicated Pydantic models to define and validate query parameters for events, recordings, media, reviews, and timeline endpoints. This change introduces structured filtering options such as severity for reviews, speed ranges for events, and specific image formats for media, while also deprecating the include\_thumbnails parameter in event queries in favor of the dedicated thumbnail endpoint.
frigate/api/defs/query · high confidence
Configurable Nginx listening ports, base path, and TLS settings
The Nginx container now supports configurable listening ports for internal and external traffic, a configurable base path for URL routing, and optional IPv6 support. Users can now set the internal and external listen ports (defaulting to 5000 and 8971 respectively) via the configuration file, allowing for custom port mappings. A new base path feature allows the application to be served under a specific URL prefix, with automatic rewriting of requests. Additionally, TLS configuration is now explicitly managed, enabling HTTPS with modern security settings (TLSv1.3, HSTS) and optional IPv6 listeners for both internal and external connections.
docker/main/rootfs/usr/local/nginx/templates · high confidence
Configure dynamic linker for NVIDIA CUDA libraries in TensorRT detector
The TensorRT detector container now includes a configuration file that registers the paths for NVIDIA CUDA, cuDNN, cuBLAS, cuFFT, cuRAND, and NVRTC libraries with the system dynamic linker. This ensures that the container can correctly locate and load these shared libraries at runtime, which is essential for the TensorRT detector to function properly.
docker/tensorrt/detector/rootfs/etc/ld.so.conf.d · high confidence
Container startup and service supervision restructured
The container's initialization and runtime supervision have been reorganized into a structured s6-overlay service tree. A new 'prepare' phase handles configuration migrations (such as moving data from Home Assistant directories) and volume ownership fixes before services start. User identity is now managed by an 'init-usermod' step that remaps the Frigate user to the specified PUID/PGID and configures supplementary groups, while an 'init-devices' step applies POSIX ACLs to hardware nodes for non-root access. The main services (Frigate, go2rtc, nginx) and their associated logging pipelines are now defined as distinct long-running services with explicit dependencies, dedicated log consumers, and custom finish scripts to ensure proper container shutdown behavior.
docker/main/rootfs/etc · high confidence
Custom RJSF form templates for improved config UI layout and i18n
The config form now uses a set of custom React JSON Schema Form (RJSF) templates to replace the defaults, providing a more polished and localized user experience. Array fields now render with full-width content and right-aligned action buttons, while nullable types are displayed as simple inputs instead of dropdowns. All form labels, descriptions, and error messages are fully internationalized, supporting both global and camera-specific translation namespaces. Additionally, the UI now visually indicates when a setting requires a restart or has been modified from its baseline, and allows users to rename or lock additional property keys with pattern validation.
web/src/components/config-form/theme/templates · high confidence
Database schema evolution for event tracking, recordings, and user management
The application's database schema has been significantly expanded to support advanced detection, review, and user features. The Event table now stores detailed bounding box and region data, sub-labels, and model metadata, while the Recordings table tracks motion activity, object counts, and audio levels (dBFS). New tables have been introduced to support a timeline view, a dedicated review segment system with per-user review status tracking, semantic search triggers, and the organization of video exports into cases. Additionally, user authentication has been enhanced with role-based access control (admin/viewer), notification token storage, and password change tracking.
migrations · high confidence
Dynamic FFmpeg path resolution via configuration
The system now dynamically determines the FFmpeg binary location by reading the 'ffmpeg.path' setting from the user's configuration file (YAML or JSON). A new script, get\_ffmpeg\_path.py, loads the config, resolves the specified path (defaulting to 'ffmpeg' if not set), and outputs the resolved path, allowing users to customize the FFmpeg executable location without hardcoding it.
docker/main/rootfs/usr/local/ffmpeg · high confidence
Frigate application core and face recognition overhaul
The Frigate application entry point and core runtime have been restructured to use a forkserver multiprocessing model with preloaded dependencies for improved stability. The application now features a robust configuration validation system that reports specific YAML line numbers and keys on errors, and automatically falls back to a safe mode if the configuration is invalid. Additionally, a complete rewrite of the face recognition subsystem has been introduced, featuring a new face detector and recognizer that utilize ONNX models for detection and landmark extraction, along with improved confidence scoring and outlier protection for face embeddings.
frigate · high confidence
GenAI module restructured with lazy client initialization and role-based provider management
The GenAI subsystem has been refactored to support multiple providers and lazy initialization. A new \GenAIClientManager\ now manages provider clients based on specific roles (chat, descriptions, embeddings, transcribe), creating them only when first accessed to avoid unnecessary startup overhead. The \GenAIClient\ includes logic to automatically retry provider initialization if a service is offline at startup, ensuring recovery without a config reload. Additionally, the module now centralizes prompt building in \prompts.py\ and provides shared utilities for handling OpenAI-style tool calls and image interleaving, laying the groundwork for features like semantic search and annotated frame descriptions.
frigate/genai · high confidence
Improved configuration form validation and field handling
The configuration schema library now provides robust support for rendering and validating settings in the UI. It includes a transformer that converts backend Pydantic JSON schemas into a format compatible with the React JSON Schema Form (RJSF) library, specifically handling nullable fields to prevent them from disappearing when cleared. Additionally, it introduces an error transformation system that maps technical validation errors into user-friendly, localized messages, ensuring that configuration changes are easier to understand and correct.
web/src/lib/config-schema · high confidence
New React-based authentication form and role-based route protection
The authentication UI has been replaced with a new React component that uses React Hook Form and Zod for validation, featuring auto-focus on the username field, disabled auto-correct/spell-check, and specific error handling for 401 (login failed) and 429 (rate limit) responses. Additionally, a new ProtectedRoute component enforces role-based access control, redirecting unauthenticated users to login and unauthorized users to an /unauthorized page based on required roles.
web/src/components/auth · high confidence
New React-based video player components for live, birdseye, and preview views
The player components in the web UI have been rewritten in React to replace the previous implementation. This introduces dedicated components for live streams (LivePlayer), birdseye views (BirdseyeLivePlayer), and recording previews (PreviewPlayer), each supporting multiple streaming technologies such as WebRTC, MSE, JSMpeg, and HLS. The new architecture provides improved responsiveness, better handling of camera activity states, and consistent keyboard controls across all player types.
web/src/components/player · high confidence
New bottom navigation bar and sidebar layout for mobile and desktop
The application now features a dedicated bottom navigation bar for mobile devices and a compact sidebar for desktop, replacing previous navigation patterns. The bottom bar dynamically adjusts icon sizes to ensure 48px touch targets when space permits, and includes a status alert icon that opens a drawer listing system warnings for admin users. The desktop sidebar provides quick access to main navigation items, camera group selection, and settings, with a clickable logo to return to the home screen.
web/src/components/navigation · high confidence
New common license plate processing module
A new shared license plate recognition (LPR) module has been introduced, consisting of a \LicensePlateProcessingMixin\ and a \LicensePlateModelRunner\. The mixin centralizes the image processing pipeline—including detection, classification, and character recognition—while the model runner manages the underlying ONNX models (PaddleOCR and YOLOv9). This change refactors how license plate data is processed, moving the logic into a reusable component that can be integrated by other parts of the system.
_frigate/data\_processing/common/license\plate · high confidence
New dynamic video player with adaptive quality and improved playback reliability
The recordings view now uses a new dynamic video player component that replaces the previous implementation. This introduces automatic quality downswitching based on measured network stalls and bandwidth, ensuring smoother playback on unstable connections. It also adds support for sub-stream playback with adaptive quality, improved seeking behavior with better timeline synchronization, and fixes for iOS/Chrome seeking issues. The player now handles full-screen detection dynamically and respects motion-only playback settings.
web/src/components/player/dynamic · high confidence
New improved motion detection algorithm with dynamic calibration and PTZ support
Frigate now includes a new 'improved' motion detector that replaces the legacy algorithm with a more robust approach. This new detector features dynamic calibration that avoids zeroing out motion data during the initial baseline period, resulting in faster and more accurate background learning. It introduces a moving average for contrast improvement to prevent sudden shifts from lighting changes, and adds a skip-motion threshold to ignore large scene changes (like IR mode switches) without triggering false motion events. Additionally, it integrates with PTZ autotracking metrics to automatically reset the background baseline when the camera motor stops, ensuring motion detection remains accurate after panning or tilting.
frigate/motion · high confidence
New reusable config section components and override indicators
The settings UI now uses a new \BaseSection\ component and \ConfigSectionTemplate\ to render configuration sections, providing a consistent foundation for global and camera-level forms. This change introduces visual override indicators—\CameraOverridesBadge\, \GlobalOverridesBadge\, and \ProfileOverridesBadge\—which alert users when specific settings are overridden by camera profiles or global defaults. Additionally, special-case handling for the 'objects' and 'genai' sections has been centralized to improve schema rendering and default value application.
web/src/components/config-form/sections · high confidence
Nginx configuration refactored for modular authentication and security hardening
The Nginx configuration has been restructured into modular include files to improve maintainability and security. A new internal /auth endpoint (auth\_location.conf) now handles upstream authentication requests, forwarding user metadata (user, role, groups, email) via auth\_request.conf to backend services. This setup supports a wider range of identity providers (Authelia, Traefik, oauth2\_proxy, Authentik) through proxy\_trusted\_headers.conf. Security is enhanced by disabling server tokens, adding strict security headers (X-Content-Type-Options, Referrer-Policy), and isolating sensitive paths. The configuration also introduces dedicated upstream blocks for Frigate API, MQTT, JSMpeg, and go2rtc, with specific optimizations for VOD streaming (fMP4, HTTP/2) and caching.
docker/main/rootfs/usr/local/nginx/conf · high confidence
Non-root runtime support with volume ownership migration
Frigate now runs as a non-root user by default, requiring volume ownership to match the runtime user. A new \fix-ownership\ script and \safe-sentinel\ helper manage this alignment inside the container, while a \fix-permissions.sh\ migration script allows users to pre-align host directories before switching to non-root mode. This change ensures that services run with reduced privileges, improving container security.
docker/main/rootfs/usr/local/bin, docker/migration · high confidence
Redesigned camera image rendering and added connection quality monitoring
The camera view components have been refactored to improve image loading, responsiveness, and user feedback. A new \AutoUpdatingCameraImage\ component manages periodic cache updates and displays the current frame rate, while \CameraImage\ and \ResizingCameraImage\ handle the actual image or canvas rendering with dynamic height adjustments based on container size and camera configuration. A new \ConnectionQualityIndicator\ component provides real-time visibility into stream health, showing expected FPS, reconnects, and stalls via a color-coded tooltip. Additionally, the \DebugCameraImage\ now includes a settings panel allowing users to toggle debug overlays like bounding boxes, zones, and motion paths, with preferences persisted to user storage.
web/src/components/camera · high confidence
Redesigned live view with draggable grid and birdseye support
The live view interface has been rebuilt to support a draggable, resizable camera grid layout that persists user arrangements and adapts to camera aspect ratios. A new Birdseye view is now available, allowing users to click on zones to navigate to specific cameras. The dashboard now includes a list view option for mobile devices, improved event filtering by camera group, and a more responsive player that handles streaming technology selection and fullscreen modes more robustly.
web/src/views/live · high confidence
Refactored object detection architecture with new base classes and utilities
The object detection module has been restructured to introduce a cleaner separation of concerns. A new \base.py\ file defines abstract and concrete detector classes (\ObjectDetector\, \BaseLocalDetector\, \LocalObjectDetector\, \AsyncLocalObjectDetector\) and process runners (\DetectorRunner\, \AsyncDetectorRunner\) that handle frame processing, shared memory management, and detection loops. A new \util.py\ file provides supporting utilities, including tensor transformation logic, shared memory frame size calculation, and thread-safe request/response stores for asynchronous detection. This refactoring consolidates detection logic and improves the foundation for supporting various detector types and asynchronous operations.
_frigate/object\detection · high confidence
Refactored object tracking engine with new stationary classification and performance optimizations
The object tracking subsystem has been restructured to improve performance and accuracy. A new abstract ObjectTracker interface and dedicated implementations (CentroidTracker, NorfairTracker) replace the previous monolithic logic, enabling per-frame allocation avoidance and optimized list lookups. Stationary object detection is now handled by a specialized StationaryMotionClassifier that uses appearance consistency and configurable IoU thresholds per object type (e.g., cars vs. persons) to reduce false positives. The NorfairTracker integrates PTZ autotracking capabilities, including velocity estimation and zooming, while also guarding against crashes from non-finite bounding boxes. These changes collectively result in more resilient tracking, better management of parked vehicles, and improved system efficiency.
frigate/track · high confidence
Rewired WebSocket and API state management to use useSyncExternalStore
The web API layer has been refactored to replace react-tracked and react-use-websocket with React's useSyncExternalStore for WebSocket state management. This change introduces a new WsProvider component that handles connection lifecycle, reconnection logic, and message buffering, while the underlying state store (ws.ts) now uses an external store pattern to provide synchronous snapshots and efficient updates. Additionally, the ApiProvider now integrates SWRConfig with custom error handling to redirect users to login on 401/302/307 responses, using a new auth-redirect module to prevent multiple simultaneous redirects.
web/src/api · high confidence
Semantic search now uses SQLite-vec instead of ChromaDB
The embeddings subsystem has been restructured to replace the external ChromaDB dependency with the built-in SQLite-vec extension. This change moves vector storage and similarity search directly into the Frigate database, simplifying the architecture and reducing external service requirements. The new implementation includes a dedicated \EmbeddingMaintainer\ process, supports both local ONNX models (Jina V1/V2) and GenAI provider embeddings, and introduces Z-score normalization for search result distances to improve relevance consistency.
frigate/embeddings · high confidence
Standardized API request body definitions for Frigate endpoints
This change introduces a new modular structure for API request validation by extracting Pydantic models into the \frigate/api/defs/request\ directory. The new files define the expected input schemas for various Frigate features, including authentication (login, users, passwords), GenAI chat interactions (messages, tool calls), export operations (batch exports, recording exports with chapter/stream controls, bulk reassignment, and renaming), event management (LPR, sub-labels, attributes), and review workflows. By centralizing these definitions, the API now enforces stricter validation on incoming requests for these capabilities, ensuring that fields like export case IDs, chat tool decisions, and event attributes are correctly formatted before processing.
frigate/api/defs/request · high confidence
Switch to sqlite-vec for embeddings and add REGEXP timeout protection
The database layer now uses the sqlite-vec extension (loaded via /usr/local/lib/vec0) to store and manage vector embeddings for thumbnails and descriptions, replacing the previous chromadb dependency. This change introduces new virtual tables (vec\_thumbnails, vec\_descriptions) for semantic search data and includes logic to safely delete or drop these tables. Additionally, the REGEXP database function is now protected against ReDoS attacks by enforcing a 1-second timeout on regex evaluations.
frigate/db · high confidence
TensorRT build system restructured for JetPack 6 and simplified amd64 builds
The TensorRT Docker build process has been reorganized to support NVIDIA JetPack 6 alongside JetPack 5, with dedicated build targets and base images for each. The amd64 build path has been simplified to use pre-built TensorRT wheels, while the arm64 (Jetson) path now includes a custom build script for the python-tensorrt library to ensure compatibility with Python 3.11. Additionally, a new script builds FFmpeg with Jetson-specific hardware acceleration patches, and the build infrastructure now uses HCL and Makefiles to manage these distinct platform configurations.
docker/tensorrt · high confidence
TensorRT model preparation is now opt-in via environment variable
The container no longer automatically generates TensorRT models at startup. Model conversion is now disabled by default and only runs if the YOLO\_MODELS environment variable is explicitly set. The new s6-overlay service (trt-model-prepare) handles this oneshot task, supporting multiple comma-separated models, DLA fallback generation, and specific GPU selection via TRT\_MODEL\_PREP\_DEVICE, while ensuring proper file ownership and handling Jetson-specific library requirements.
docker/tensorrt/detector/rootfs/etc/s6-overlay · high confidence
Updated Radix UI patches for React 19 compatibility
Applied patches to @radix-ui/react-compose-refs and @radix-ui/react-slot to ensure compatibility with React 19. The react-compose-refs patch updates the useComposedRefs hook to use a ref and useLayoutEffect for tracking refs, improving cleanup handling. The react-slot patch updates the createSlotClone function to use the patched useComposedRefs instead of composeRefs, ensuring proper ref composition in slot components.
web/patches · high confidence
go2rtc configuration and HomeKit handling security hardening
The go2rtc setup now uses a new Python-based configuration generator (create\_config.py) that enforces stricter security by defaulting to restricted exec sources (blocking echo/expr/exec unless GO2RTC\_ALLOW\_ARBITRARY\_EXEC is set) and automatically applying safe defaults for API CORS, Home Assistant config paths, and WebRTC candidates. Additionally, HomeKit configuration handling (prepare\_homekit.py) has been rewritten to prevent symlink attacks by using O\_NOFOLLOW file descriptors and ensuring proper file ownership, while also normalizing the HomeKit section of the config file.
docker/main/rootfs/usr/local/go2rtc · high confidence
Test coverage
Added e2e spec linting script; Added end-to-end tests for camera and detection settings; Added end-to-end tests for the setup wizard account and hardware steps; Added self-tests for the error collector and mock override helpers; Added unit tests for audio transcription, Birdseye layout, and camera lifecycle management; Expanded end-to-end test coverage for core web features; Initial HTTP API test suite; New e2e test fixtures for camera activity and configuration schemas; New e2e test infrastructure with strict error collection and comprehensive mocking.
Dependencies
Updated core and web dependencies to latest versions
This update refreshes the project's dependency manifests across the Docker backend, web frontend, and documentation site. The backend (docker/main) upgrades key libraries including FastAPI to 0.116, Pydantic to 2.10, OpenVINO to 2025.4, and onnxruntime to 1.30, while also introducing new requirements files for OpenVINO, wheels, and development tools. The web frontend (web) upgrades to React 19, Vite 8, and Radix UI components, and the documentation site (docs) updates Docusaurus to 3.10.2 and React to 18.3.1.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 33 → 47 (+14.3)
- Rubric changed (rubric-2026.08.15 → rubric-2026.09.16) — scores are not directly comparable.
Lenses
- Code Health 60 → 57 (-2.7)
- Architecture 71 → 70 (-1.4)
- Maturity 66 → 70 (+3.9)
- Readiness 20 → 47 (+27.2)
- Security 25 → 50 (+25.7)
- Accessibility 40 (new)
- Performance 100 (new)
Resolved (208)
- Change coupling: AnnotationOffsetSlider.tsx ↔ AnnotationSettingsPane.tsx (web/src/components/overlay/detail/AnnotationOffsetSlider.tsx)
- Change coupling: DetailStream.tsx ↔ detail-stream-context.tsx (web/src/components/timeline/DetailStream.tsx)
- Change coupling: MotionSegment.tsx ↔ use-motion-segment-utils.ts (web/src/components/timeline/MotionSegment.tsx)
- Change coupling: ObjectTrackOverlay.tsx ↔ DetailStream.tsx (web/src/components/overlay/ObjectTrackOverlay.tsx)
- Change coupling: SearchDetailDialog.tsx ↔ FrigatePlusDialog.tsx (web/src/components/overlay/detail/SearchDetailDialog.tsx)
- Change coupling: SummaryTimeline.tsx ↔ use-draggable-element.ts (web/src/components/timeline/SummaryTimeline.tsx)
- Coverage not measured — test suite did not build
- Critical CVE: [GHSA redacted] (web/package-lock.json)
- Dimension evaluation failed
- Duplicated block (10 lines × 2) (frigate/ptz/autotrack.py)
- Duplicated block (10 lines × 2) (frigate/timeline.py)
- Duplicated block (10 lines × 2) (frigate/track/norfair_tracker.py)
- Duplicated block (11 lines × 2) (frigate/data_processing/common/license_plate/mixin.py)
- Duplicated block (11 lines × 2) (frigate/ptz/onvif.py)
- Duplicated block (11 lines × 2) (frigate/record/export.py)
- Duplicated block (11 lines × 2) (frigate/test/test_obects.py)
- Duplicated block (12 lines × 2) (frigate/detectors/plugins/zmq_ipc.py)
- Duplicated block (12 lines × 2) (frigate/ptz/autotrack.py)
- Duplicated block (12 lines × 2) (frigate/record/cleanup.py)
- Duplicated block (12 lines × 2) (frigate/record/maintainer.py)
- …and 188 more
New (1731)
- AccountSettings.AccountSettings (cognitive 16) (web/src/components/menu/AccountSettings.tsx)
- AccountSettings.AccountSettings (cyclomatic 21) (web/src/components/menu/AccountSettings.tsx)
- ActiveObjects.init (cognitive 21) (frigate/review/maintainer.py)
- ActiveObjects.init (cyclomatic 16) (frigate/review/maintainer.py)
- AnimatedEventCard.AnimatedEventCard (cognitive 23) (web/src/components/card/AnimatedEventCard.tsx)
- AnimatedEventCard.AnimatedEventCard (cyclomatic 33) (web/src/components/card/AnimatedEventCard.tsx)
- AudioEventMaintainer.detect_audio (cognitive 16) (frigate/events/audio.py)
- AudioEventMaintainer.run (cognitive 26) (frigate/events/audio.py)
- AudioProcessor.run (cognitive 18) (frigate/events/audio.py)
- AudioTranscriptionRealTimeProcessor.__process_audio_stream (cognitive 19) (frigate/data_processing/real_time/audio_transcription.py)
- AudioTranscriptionRealTimeProcessor.__process_audio_stream (cyclomatic 17) (frigate/data_processing/real_time/audio_transcription.py)
- AuthenticationView.AuthenticationView (cognitive 58) (web/src/views/settings/AuthenticationView.tsx)
- AuthenticationView.AuthenticationView (cyclomatic 59) (web/src/views/settings/AuthenticationView.tsx)
- Banned license: unidecode
- BaseSection.ConfigSection (cognitive 161) (web/src/components/config-form/sections/BaseSection.tsx)
- BaseSection.ConfigSection (cyclomatic 169) (web/src/components/config-form/sections/BaseSection.tsx)
- BirdsEyeFrameManager.update_frame (cognitive 69) (frigate/output/birdseye.py)
- BirdsEyeFrameManager.update_frame (cyclomatic 29) (frigate/output/birdseye.py)
- BirdseyeCameraReorder.BirdseyeCameraReorder (cognitive 19) (web/src/components/config-form/sectionExtras/BirdseyeCameraReorder.tsx)
- BirdseyeCameraReorder.BirdseyeCameraReorder (cyclomatic 19) (web/src/components/config-form/sectionExtras/BirdseyeCameraReorder.tsx)
- …and 1711 more
Changes since last survey
- 300 commits — 266 feature/other, 34 fixes
By area
- web/public — 114 commits
- web/src — 40 commits
- docker/main — 25 commits
- web/package-lock.json — 22 commits
- docs/package-lock.json — 19 commits
- docs/docs — 18 commits
- frigate/api — 13 commits
- frigate/test — 10 commits
- .github/workflows — 6 commits
- frigate/data_processing — 4 commits
- frigate/detectors — 4 commits
- (root) — 3 commits
- web/e2e — 3 commits
- frigate/comms — 2 commits
- frigate/config — 2 commits
- frigate/genai — 2 commits
- frigate/stats — 2 commits
- .github/DISCUSSION_TEMPLATE — 1 commit
- docs/data — 1 commit
- frigate/main.py — 1 commit
Notable commits
- fix: API Consistency / Security Fixes (#24057)
- fix: Backport 0.19 iOS HLS fixes (#24147)
- fix: Fix --validate-config exit code (#24398)
- fix: Fix 500 when an event thumbnail file is empty (#24110)
- fix: Fix Content-Type for webp, png, and jpeg files in /clips/ (#24208)
- fix: Fix Gemini tool calling on 3.6+ by using documented function response role (#24013)
- fix: Fix LPR vehicle message for multiple models (#24119)
- fix: Fix NPU turbo key and priviledges set (#24138)
- fix: Fix ZMQ detector ignoring the endpoint in its device string (#24464)
- fix: Fix birdseye layout overlap with mixed landscape/portrait cameras (#22917)
- fix: Fix inconsistent export download filenames (#24111)
- fix: Fix jumping timeline handles in debug replay range selection (#24158)
- fix: Fix preview players at the hour rollover (#24157)
- fix: Fix review summary report analysis creation to be scoped for users with full camera access only (#24056)
- fix: Miscellaneous fixes (#24172)
- fix: Miscellaneous fixes (#24179)
- fix: Miscellaneous fixes (#24352)
- fix: Miscellaneous fixes (#24402)
- fix: Miscellaneous fixes (0.18 beta) (#23934)
- fix: Miscellaneous fixes (0.18 beta) (#23993)
- …and 280 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
blakeblackshear/frigate was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 28 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit f9a37d4f4f92494f0d6fcce96b12d978424a864e — the exact code this score is about.
- Scored under rubric-2026.09.16 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-2d9048c36d26.