# 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 sequence - `stop()`: Graceful shutdown - `init_*()`: Component initialization methods - `start_*()`: 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 settings - **`detect.py`**: Object detection configuration - **`record.py`**: Recording settings - **`motion.py`**: Motion detection parameters - **`ffmpeg.py`**: FFmpeg stream configuration #### Component Configs - **`auth.py`**: Authentication settings - **`mqtt.py`**: MQTT broker configuration - **`database.py`**: Database connection settings - **`ui.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 Lite - **`edgetpu_tfl.py`**: Coral Edge TPU - **`openvino.py`**: Intel OpenVINO - **`tensorrt.py`**: NVIDIA TensorRT - **`rknn.py`**: Rockchip NPU - **`onnx.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 capture - `track_camera()`: Object tracking - Frame preprocessing - Stream health monitoring #### Motion Detection (`motion/`) - **`frigate_motion.py`**: Basic motion detection - **`improved_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 messaging - **`config_updater.py`**: Configuration updates - **`zmq_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 images - **`AutoUpdatingCameraImage.tsx`**: Live camera feeds - **`DebugCameraImage.tsx`**: Debug overlays #### Player Components (`player/`) - **`HlsVideoPlayer.tsx`**: HLS video playback - **`BirdseyeLivePlayer.tsx`**: Multi-camera view - **`GenericVideoPlayer.tsx`**: General video player #### Event Components (`card/`) - **`AnimatedEventCard.tsx`**: Event display cards - **`ReviewCard.tsx`**: Review timeline cards - **`ExportCard.tsx`**: Export status cards #### Filter Components (`filter/`) - **`CamerasFilterButton.tsx`**: Camera selection - **`DatePickerContent.tsx`**: Date range picker - **`FilterSwitch.tsx`**: Toggle filters - **`ReviewFilterGroup.tsx`**: Review filters #### Navigation (`navigation/`) - **`Bottombar.tsx`**: Mobile navigation - **`NavItem.tsx`**: Navigation items - **`Sidebar.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 hooks - **`use-websocket.ts`**: WebSocket management - **`use-camera-activity.ts`**: Camera status #### UI Utilities - **`use-resize-observer.ts`**: Responsive layouts - **`use-optimistic-state.ts`**: Optimistic updates - **`use-intersection-observer.ts`**: Visibility detection ### Types (`types/`) #### Core Types - **`api.ts`**: API response types - **`event.ts`**: Event data structures - **`camera.ts`**: Camera configurations - **`frigateConfig.ts`**: Configuration types ### Utilities (`utils/`) #### Core Utilities - **`browserUtil.ts`**: Browser compatibility - **`colorUtil.ts`**: Color manipulation - **`dateUtil.ts`**: Date formatting - **`canvasUtil.ts`**: Canvas operations ## Infrastructure Components ### Docker Configuration (`docker/`) #### Multi-Architecture Builds - **`main/`**: Standard x86_64 build - **`tensorrt/`**: NVIDIA GPU support - **`rockchip/`**: ARM with NPU - **`rpi/`**: 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 1. **Camera → Detection → Event → Storage** 2. **API Request → Validation → Processing → Response** 3. **Configuration → Validation → Distribution → Application** ### Communication Patterns 1. **Pub/Sub**: Event distribution via MQTT/WebSocket 2. **Request/Response**: API communications 3. **Shared Memory**: High-performance frame sharing 4. **Message Queues**: Asynchronous task processing ### Error Handling Patterns 1. **Circuit Breakers**: Prevent cascade failures 2. **Retry Logic**: Transient error recovery 3. **Graceful Degradation**: Partial functionality maintenance 4. **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.