Add Apple Silicon ZMQ detector for Frigate

Moves object detection from ONNX CPU (~117ms/frame) to the
apple-silicon-detector running natively on indri via CoreML/Neural Engine
(~15ms), communicating with Frigate over ZMQ (tcp://host.minikube.internal:5555).

- New ansible role `frigate_detector` with LaunchAgent
- Switch Frigate configmap from ONNX to ZMQ detector
- Remove detect FPS cap (no longer needed with fast inference)
- Update docs and add changelog fragment

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Erich Blume 2026-02-17 17:11:35 -08:00
commit dc4d35024f
8 changed files with 106 additions and 10 deletions

View file

@ -27,12 +27,14 @@ Open-source network video recorder (NVR) with object detection. Runs cloud-free
ReoLink Camera (GableCam)
│ RTSP
Frigate pod
├── go2rtc — RTSP restream proxy
├── FFmpeg — stream decoding
├── ONNX detector — object detection (YOLO-NAS-s, CPU)
├── /media/frigate — NFS recordings (sifaka)
└── /db — SQLite (local PVC)
Frigate pod (minikube)
├── go2rtc — RTSP restream proxy
├── FFmpeg — stream decoding
├── ZMQ detector ──tcp://host.minikube.internal:5555──→ apple-silicon-detector
│ ├── CoreML / Neural Engine
│ └── LaunchAgent (mcquack.eblume.frigate-detector)
├── /media/frigate — NFS recordings (sifaka)
└── /db — SQLite (local PVC)
└──→ MQTT (Mosquitto) → frigate-notify → ntfy → mobile
```
@ -47,7 +49,7 @@ Camera credentials are stored in 1Password and synced via [[external-secrets]] t
## Detection
Object detection uses ONNX with a YOLO-NAS-s model running on CPU (ARM64). The model file lives on the NFS recordings volume at `/media/frigate/models/yolo_nas_s.onnx`.
Object detection uses the [apple-silicon-detector](https://github.com/frigate-nvr/apple-silicon-detector), which runs natively on [[indri]] as a LaunchAgent (`mcquack.eblume.frigate-detector`). It communicates with Frigate via ZMQ over TCP (`tcp://host.minikube.internal:5555`), leveraging CoreML and the M1 Neural Engine for ~15ms inference (down from ~117ms with ONNX CPU).
A `driveway_entrance` zone is configured for alert filtering — only detections in this zone trigger review alerts.