A couple of years ago, my base M1 MacBook Air (8 GB) developed screen lines, and eventually the entire internal display died. Instead of trashing or trading it in for pennies, I decided to repurpose it as a dedicated, low-power homelab node.
I set up my typical headless stack: Arr stack, self-hosted n8n running on Colima, Home Assistant + MQTT in Docker, and a native Jellyfin instance. Except for Jellyfin (which took advantage of the Apple Silicon Media Engine), everything ran strictly on the CPU, leaving the GPU and Neural Engine completely idle.
Recently, I decided to set up an NVR for my 2688×1520 (approx. 4 MP) camera running full-resolution detection directly on the main feed.
Phase 1: Vanilla Frigate on Docker (via Colima)
I deployed Frigate 0.18 inside Docker. Because running pure CPU detection is heavy on an 8 GB base machine, I set up the apple-silicon-detector sidecar to offload detection to the GPU.
- Setting this up wasn't plug-and-play: exporting the YOLOv9 model manually required custom troubleshooting to avoid architecture mismatches.
- Results: The ZMQ detector ran at ~33.39ms inference speed.
- The issue: The fanless M1 was pinned on GPU utilization 24/7. While the chassis didn’t enter emergency thermal throttling, constantly stressing the GPU on a closed-lid, fanless laptop running non-stop was far from ideal for a long-term homelab box.
Phase 2: Native Apple Silicon with Fregata
I came across Fregata (https://fregata.app/), which runs native Frigate under the hood on macOS instead of through virtualization layers.
The migration was straightforward—it pulled over configurations cleanly and automatically downloaded optimized CoreML models on first launch:
- Detector Inference Speed: Dropped from ~33.39ms to 2.45ms (over a 13x speedup).
- Hardware Distribution: Instead of slamming one compute engine, Fregata maps tasks natively:
- Neural Engine (ANE): Primary object detection (running at 2.45ms with detector CPU at ~1.2%).
- GPU: Offloaded for enrichments (Face Recognition at ~43.97ms, License Plate Recognition at ~49.28ms).
- Media Engine: Hardware video decoding/transcoding.
- CPU: Idles around ~3.7% total system usage.
- Chassis Thermals: Without the GPU constantly pegged for base detection, the laptop stays completely cool to the touch.
It also integrates directly with my Dockerized Home Assistant + Mosquitto broker setup over MQTT, and semantic text-based clip searching works out of the box with near-zero latency.
If you have an old or cosmetically damaged Apple Silicon Mac lying around, using native macOS binaries that target the ANE/Media Engine turns it into an unbeatable, near-silent NVR node.