An open API service indexing awesome lists of open source software.

https://github.com/home-assistant-tools/frigate-apple-detector

Native macOS app that turns an Apple Silicon Mac into a CoreML / Neural Engine-accelerated object detector for Frigate over ZMQ. Signed & notarized — no Python, venv or Docker needed.
https://github.com/home-assistant-tools/frigate-apple-detector

apple-silicon coreml detector frigate frigate-nvr home-assistant macos neural-engine nvr object-detection onnx onnxruntime swift yolov8 zmq

Last synced: 10 days ago
JSON representation

Native macOS app that turns an Apple Silicon Mac into a CoreML / Neural Engine-accelerated object detector for Frigate over ZMQ. Signed & notarized — no Python, venv or Docker needed.

Awesome Lists containing this project

README

          

# Frigate Apple Silicon Detector

A native macOS app that runs an ONNX detector for Frigate on Apple Silicon. The app ships with the runtime, the required Python libraries and the `yolov8n.onnx` model bundled inside, so you don't need to install Python, a venv or any of the repo's dependencies — just download and open it.

The release build is **signed with a Developer ID certificate and notarized by Apple**, so it opens normally on macOS without "unidentified developer" warnings.

> Based on the official [`apple-silicon-detector`](https://github.com/frigate-nvr/apple-silicon-detector) from the [Frigate](https://github.com/blakeblackshear/frigate) project (MIT, © Blake Blackshear). This repository repackages it as a fully native macOS app with a bundled default model and a signed + notarized release. See [Credits](#credits).

## Quick start

1. Download `FrigateDetector.app.zip` from the [latest GitHub Release](../../releases/latest).
2. Double-click the zip to unzip it.
3. Open `FrigateDetector.app` (double-click). Because the build is notarized, macOS opens it without a Gatekeeper block.
4. In the app:
- **Model**: defaults to the `yolov8n.onnx` model bundled inside the app. Use **Choose model** to point at your own `.onnx`, or tick **Auto** to let Frigate supply the model.
- **Host**: use `*` to allow Frigate to connect from another machine/container; use `127.0.0.1` to keep it local.
- **Port**: defaults to `5555`.
- Press **Start**.
5. Wait about 1 minute for the runtime and model to fully start up (the live log shows progress).
6. Point Frigate at the Mac's TCP endpoint, for example:

```yaml
detectors:
apple_silicon:
type: zmq
endpoint: tcp://192.168.2.2:5555
```

Replace `192.168.2.2` with the LAN IP of the Mac running the app.

## If macOS still blocks the app

A downloaded release is notarized, so a normal double-click should just work. You only need this section if you **built the app yourself** (those builds are ad-hoc signed) or copied it across machines in a way that flagged it as quarantined:

- Right-click `FrigateDetector.app` → **Open** → **Open**, or
- `System Settings` → `Privacy & Security` → scroll to `Security` → **Open Anyway**, or
- Clear the quarantine flag from Terminal:

```bash
xattr -dr com.apple.quarantine /path/to/FrigateDetector.app
```

The app opens a TCP endpoint for Frigate to connect to, so check your firewall, local network and access permissions before relying on it long term.

## Where does the app store data?

The app does not write into the host machine's system Python or venv directories. Runtime data is stored at:

```text
~/Library/Application Support/FrigateDetector
```

Logs are streamed live inside the app and also written to:

```text
~/Library/Application Support/FrigateDetector/Logs/FrigateDetector.log
```

## Building the app from source

Requirements on the build machine:

- macOS Apple Silicon
- Xcode Command Line Tools
- `uv` or Python 3.11+

Build the app:

```bash
make app
```

After building, the app is at `macos/FrigateDetector.app` (ad-hoc signed for local use).

## Signing and notarizing your own build

To produce a release that opens cleanly on other Macs, sign it with a `Developer ID Application` certificate and notarize it with your Apple Developer account. The helper script does signing + notarization + stapling:

```bash
# Using an app-specific password
SIGN_IDENTITY="Developer ID Application: Your Name (TEAMID)" \
APPLE_ID="you@example.com" \
TEAM_ID="TEAMID" \
APP_PASSWORD="xxxx-xxxx-xxxx-xxxx" \
macos/scripts/sign_and_notarize.sh
```

Notes:

- `SIGN_IDENTITY` is optional — if omitted, the script uses the first `Developer ID Application` identity in your keychain.
- Set `SKIP_NOTARIZE=1` to sign only (no notarization).
- Hardened-runtime entitlements for the bundled PyInstaller/ONNX Runtime binary live in `macos/FrigateDetector.entitlements`.
- The script writes the release zip to `macos/FrigateDetector.app.zip`.

## Running the detector from the command line

You can still run the detector directly via the Makefile:

```bash
make install
make run MODEL=yolo/yolov8n.onnx ENDPOINT=tcp://*:5555
```

Or use the model passed in by Frigate:

```bash
make run MODEL=AUTO ENDPOINT=tcp://*:5555
```

## Main components

- `macos/App/Sources/FrigateDetectorApp.swift`: the native macOS UI.
- `macos/scripts/build_app.sh`: builds the `.app` and packages the detector runtime with PyInstaller.
- `macos/scripts/sign_and_notarize.sh`: Developer ID signing, notarization and stapling.
- `macos/FrigateDetector.entitlements`: hardened-runtime entitlements for notarization.
- `detector/zmq_onnx_client.py`: the ZMQ server that receives tensors from Frigate and runs ONNX Runtime.
- `detector/model_util.py`: model output post-processing.
- `yolo/yolov8n.onnx`: the default model bundled into the app release.

## Credits

This project is based on the original [**apple-silicon-detector**](https://github.com/frigate-nvr/apple-silicon-detector) by the [Frigate NVR](https://github.com/frigate-nvr) project, created by [Blake Blackshear](https://github.com/blakeblackshear) and the Frigate contributors. The core ONNX/ZMQ detector and the Frigate integration come from that project.

This repository builds on it by:

- Rewriting the macOS launcher as a fully native AppKit app (no Terminal window required).
- Bundling a default `yolov8n.onnx` model so it works out of the box.
- Signing the release with a Developer ID certificate and notarizing it with Apple.

Licensed under the [MIT License](LICENSE), © 2020 Blake Blackshear — the original copyright and license are preserved.

> **Disclaimer:** This is an independent community project. It is **not affiliated with, endorsed by, or officially supported by** the Frigate project or its maintainers. "Frigate" is the name of the upstream project and is used here only to describe compatibility.