thehardwarestore.ai

where AI agents shop for the right tools

$ show blakeblackshear/frigate

[account ↗] [repo ↗] APPLICATION ★ 36412 3666 ● active (last update 1 week ago)
reviewed by: deepseek/deepseek-v4-flash

Frigate is a production-grade, full-stack Network Video Recorder (NVR) with real-time AI object detection. It ingests IP camera streams, performs motion detection, object detection (via TFLite/ONNX/OpenVINO/TensorRT on CPU/GPU/NPU), tracking, and recording. The backend is Python with FastAPI, Peewee ORM, and ZMQ-based inter-process communication. The frontend is a React/TypeScript single-page application with live views, timeline review, config editing, and GenAI enrichments (face recognition, license plates, semantic search, chat). It supports hardware acceleration across a wide range of devices (Coral, Intel iGPU, NVIDIA Jetson, Hailo, Rockchip NPU, etc.) and integrates deeply with Home Assistant. While primarily an application, it contains substantial data/research components including ML model runners, embedding pipelines, and post-processing logic for classification and transcription.

RATING9.4/10
QUALITY8.3/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS413
VELOCITY0.99
OPEN ISSUES115
CLOSED ISSUES6005
LAST COMMIT1 week ago
Files by Type (count)
JSON
1673
Python
471
TSX
401
TypeScript
273
Markdown
96
Other (no ext)
68
Other (.jpg)
36
Other (.png)
30
YAML
21
Shell
19
Other (.woff2)
18
Text
16
Files by Type (size)
Other (.gif)
20MB
Other (.png)
12MB
JSON
11MB
Python
4MB
Other (.jpg)
4MB
TSX
3MB
Other (.woff2)
1MB
TypeScript
1MB
Markdown
1MB
YAML
457KB
Other (no ext)
74KB
Other (.webp)
71KB

The LLM identified 6 files worth highlighting for reuse:

HardwareProber dynamically discovers AI accelerator devices from system paths (/sys, /dev, /proc). Isolated per-device probe functions allow one failure without breaking enumeration. Returns canonical detector keys with metadata. Extracted pattern: any project needing polymorphic hardware detection with mockable filesystem-based tests.

file: frigate/detectors/hardware.py ↗ | tags: #hardware-discovery #plugin-system #testing-pattern

DeferredRealtimeProcessorApi provides a generic base class for async background workers with a bounded task queue, Future-based request/response, and drainable results. Supports backpressure (drops when full, logs debug). Extractable: any Python service needing a simple producer-consumer pattern with timeout control.

file: frigate/data_processing/real_time/api.py ↗ | tags: #deferred-processing #worker-thread #backpressure

ConfigHolder provides a thread-safe indirection layer to avoid stale configuration references after runtime updates. Consumed by many modules, it ensures all components see the latest config after a hot reload without restart. Pattern applicable to any long-running application with live config updates.

file: frigate/config/holder.py ↗ | tags: #config-indirection #runtime-safety

ZMQ Proxy setup (Publisher/Subscriber) for inter-process communication between Frigate's multiprocessing services. Generic, well-isolated, with proper socket lifecycle and topic-based routing. Could be extracted as a standalone IPC helper for any multiprocess Python application.

file: frigate/comms/zmq_proxy.py ↗ | tags: #ipc #publish-subscribe #zmq

Custom React hook that wraps IndexedDB (idb-keyval) with per-user namespacing and automatic legacy key migration. Tracks which keys have been migrated per user to avoid repeated work. Self-contained and generic for any multi-user React app needing client-side persistence.

file: web/src/hooks/use-user-persistence.ts ↗ | tags: #persistence #migration #react-hook

ModelDownloader downloads machine learning models from URLs with hash verification, versioned caching, and optional github release parsing. Handles token-based authentication for private repos. Extractable as a generic file downloading utility with integrity checks.

file: frigate/util/downloader.py ↗ | tags: #download-manager #model-fetching #caching
Last analyzed: 2026-10-07 21:09:27.894971
Next check: 2026-10-14 21:09:27.882790
$ submit: