10 KiB
Frigate Components Deep Dive
Backend Components (frigate/)
Core Application
app.py - FrigateApp Class
Purpose: Central application orchestrator Key Responsibilities:
- Process lifecycle management
- Resource initialization and cleanup
- Inter-process communication setup
- Database and embeddings initialization
- Hardware accelerator management
Key Methods:
start(): System startup sequencestop(): Graceful shutdowninit_*(): Component initialization methodsstart_*(): Process startup methods
__main__.py - Entry Point
Purpose: Application entry point and CLI handling Features:
- Configuration validation
- Signal handling (SIGTERM)
- Error handling and user feedback
API Layer (api/)
app.py - FastAPI Application Factory
Purpose: Web API and authentication Features:
- FastAPI application creation
- Middleware configuration
- Route registration
- Error handling
auth.py - Authentication System
Purpose: User authentication and authorization Features:
- JWT token generation/validation
- Password hashing
- User session management
- Login/logout endpoints
Route Modules
- Events API: Event CRUD operations, search, filtering
- Media API: Video/image serving, thumbnails
- Config API: Configuration management
- Stats API: System statistics and metrics
- Export API: Video export and download
Configuration System (config/)
config.py - Main Configuration
Purpose: Central configuration management Features:
- YAML parsing and validation
- Pydantic model integration
- Configuration migration
- Runtime validation
Camera Configuration (camera/)
__init__.py: Camera-specific settingsdetect.py: Object detection configurationrecord.py: Recording settingsmotion.py: Motion detection parametersffmpeg.py: FFmpeg stream configuration
Component Configs
auth.py: Authentication settingsmqtt.py: MQTT broker configurationdatabase.py: Database connection settingsui.py: Web interface settings
Object Detection (detectors/)
detection_api.py - Detection Interface
Purpose: Unified detection API Features:
- Model loading and initialization
- Inference execution
- Result processing
- Hardware acceleration support
Detector Plugins (plugins/)
cpu_tfl.py: CPU TensorFlow Liteedgetpu_tfl.py: Coral Edge TPUopenvino.py: Intel OpenVINOtensorrt.py: NVIDIA TensorRTrknn.py: Rockchip NPUonnx.py: ONNX runtime
detector_config.py - Detector Configuration
Purpose: Detector-specific settings Features:
- Model path configuration
- Input/output tensor mapping
- Hardware-specific parameters
Video Processing
video.py - Video Capture and Processing
Purpose: Camera stream management Functions:
capture_camera(): Camera stream capturetrack_camera(): Object tracking- Frame preprocessing
- Stream health monitoring
Motion Detection (motion/)
frigate_motion.py: Basic motion detectionimproved_motion.py: Enhanced motion algorithms
Event System (events/)
maintainer.py - Event Processor
Purpose: Event lifecycle management Features:
- Event creation and updates
- Timeline generation
- Event cleanup
- Thumbnail generation
cleanup.py - Event Cleanup
Purpose: Automated data retention Features:
- Old event removal
- Disk space management
- Configurable retention policies
audio.py - Audio Event Processing
Purpose: Audio-based event detection Features:
- Audio stream processing
- Sound classification
- Audio event triggers
Recording System (record/)
record.py - Recording Manager
Purpose: Video recording coordination Features:
- Segment-based recording
- Retention policy enforcement
- Storage optimization
- Recovery handling
cleanup.py - Recording Cleanup
Purpose: Recording maintenance Features:
- Old recording removal
- Storage quota management
- File integrity checks
export.py - Video Export
Purpose: Video export functionality Features:
- Timeline-based exports
- Format conversion
- Progress tracking
Communication (comms/)
dispatcher.py - Event Dispatcher
Purpose: Event distribution hub Features:
- Multi-protocol communication
- Event routing
- Message formatting
- Error handling
mqtt.py - MQTT Client
Purpose: Home Assistant integration Features:
- MQTT broker connection
- Topic management
- State publishing
- Discovery messages
ws.py - WebSocket Server
Purpose: Real-time web communication Features:
- Live feed streaming
- Event notifications
- Bidirectional communication
Inter-Process Communication
inter_process.py: Process messagingconfig_updater.py: Configuration updateszmq_proxy.py: ZeroMQ message routing
Database (db/)
sqlitevecq.py - Vector Database
Purpose: Vector similarity search Features:
- Embedding storage
- Similarity queries
- Vector indexing
- Semantic search
Embeddings (embeddings/)
embeddings.py - Embedding Manager
Purpose: Feature extraction and management Features:
- CLIP model integration
- Embedding generation
- Batch processing
- Index maintenance
maintainer.py - Embedding Maintenance
Purpose: Background embedding tasks Features:
- Reindexing
- Cleanup
- Performance optimization
Utilities (util/)
image.py - Image Processing
Purpose: Image manipulation utilities Features:
- Shared memory frame management
- Image transformations
- Thumbnail generation
- Format conversions
services.py - System Services
Purpose: System integration utilities Features:
- Hardware detection
- Service management
- Performance optimization
Frontend Components (web/src/)
Core Application
App.tsx - Main Application
Purpose: Root React component Features:
- Routing configuration
- Global state management
- Error boundaries
- Theme providers
index.css - Global Styles
Purpose: Base styling and CSS variables Features:
- TailwindCSS imports
- Theme definitions
- Global resets
Components (components/)
Authentication (auth/)
AuthForm.tsx: Login/logout forms
Camera Components (camera/)
CameraImage.tsx: Static camera imagesAutoUpdatingCameraImage.tsx: Live camera feedsDebugCameraImage.tsx: Debug overlays
Player Components (player/)
HlsVideoPlayer.tsx: HLS video playbackBirdseyeLivePlayer.tsx: Multi-camera viewGenericVideoPlayer.tsx: General video player
Event Components (card/)
AnimatedEventCard.tsx: Event display cardsReviewCard.tsx: Review timeline cardsExportCard.tsx: Export status cards
Filter Components (filter/)
CamerasFilterButton.tsx: Camera selectionDatePickerContent.tsx: Date range pickerFilterSwitch.tsx: Toggle filtersReviewFilterGroup.tsx: Review filters
Navigation (navigation/)
Bottombar.tsx: Mobile navigationNavItem.tsx: Navigation itemsSidebar.tsx: Desktop sidebar
UI Components (ui/)
- Shadcn/ui components: Buttons, dialogs, forms, etc.
- Custom components: Frigate-specific UI elements
Pages (pages/)
Live.tsx - Live View
Purpose: Real-time camera monitoring Features:
- Multi-camera grid
- Live detection overlays
- Camera controls
- Birdseye view
Events.tsx - Event Management
Purpose: Event browsing and management Features:
- Event timeline
- Search and filtering
- Event details
- Export functionality
Recordings.tsx - Recording Playback
Purpose: Recorded video access Features:
- Timeline scrubbing
- Multi-camera synchronization
- Export capabilities
Settings.tsx - System Configuration
Purpose: Configuration management Features:
- Camera settings
- Detection configuration
- System preferences
- User management
Hooks (hooks/)
API Integration
use-api.ts: API client hooksuse-websocket.ts: WebSocket managementuse-camera-activity.ts: Camera status
UI Utilities
use-resize-observer.ts: Responsive layoutsuse-optimistic-state.ts: Optimistic updatesuse-intersection-observer.ts: Visibility detection
Types (types/)
Core Types
api.ts: API response typesevent.ts: Event data structurescamera.ts: Camera configurationsfrigateConfig.ts: Configuration types
Utilities (utils/)
Core Utilities
browserUtil.ts: Browser compatibilitycolorUtil.ts: Color manipulationdateUtil.ts: Date formattingcanvasUtil.ts: Canvas operations
Infrastructure Components
Docker Configuration (docker/)
Multi-Architecture Builds
main/: Standard x86_64 buildtensorrt/: NVIDIA GPU supportrockchip/: ARM with NPUrpi/: Raspberry Pi optimized
Build Components
- Base images: Optimized runtime environments
- Dependency installation: Hardware-specific packages
- Multi-stage builds: Size optimization
Process Management
S6 Overlay (docker/main/rootfs/etc/s6-overlay/)
- Service definitions: Process supervision
- Startup scripts: Initialization order
- Health checks: Process monitoring
Component Interaction Patterns
Data Flow Patterns
- Camera → Detection → Event → Storage
- API Request → Validation → Processing → Response
- Configuration → Validation → Distribution → Application
Communication Patterns
- Pub/Sub: Event distribution via MQTT/WebSocket
- Request/Response: API communications
- Shared Memory: High-performance frame sharing
- Message Queues: Asynchronous task processing
Error Handling Patterns
- Circuit Breakers: Prevent cascade failures
- Retry Logic: Transient error recovery
- Graceful Degradation: Partial functionality maintenance
- Error Boundaries: React error isolation
This component structure enables modular development, testing, and maintenance while supporting the real-time requirements of video processing and object detection.