Add your first camera
Once the app is activated, the next step is to point it at one camera and verify the whole pipeline — capture, decode, detect, record — is working.
What you’ll need
Section titled “What you’ll need”- An IP camera that speaks RTSP with valid credentials and a network path between it and your Mac.
- The camera’s RTSP URL.
The Frigate project has a thorough camera setup primer covering codec choice, resolution, bitrate, FPS, and the per-brand URL shapes for Reolink, Amcrest, Dahua, Hikvision, UniFi, and others. Everything there applies to Fregata unchanged. For a quick brand-by-brand URL cheatsheet, see also Cameras.
- Open the Fregata web UI from the menu-bar tray
(Open Frigate Web UI, or
⌘O). It opens https://localhost:8971 in your default browser. The first visit shows a “Not Private” warning — that’s expected (Fregata uses a self-signed certificate forlocalhost); click through to continue. Then sign in with theadminusername and the password from first-run setup — see Your dashboard sign-in if you need to find or reset it. - In the web UI, go to Settings → Camera Management.
- Click + Add camera. The camera wizard opens.
- Give the camera a short, lowercase name (
front_porch,driveway,garage— whatever you want it called in URLs and recordings). - Paste the RTSP URL of your main stream.
- (Optional) If your camera exposes a separate sub-stream URL, you can paste that too — but on Fregata you usually don’t need to. See the tip below.
- Save. Fregata reloads its config and the camera tile appears on the live dashboard.
The camera should appear in the live tile grid within a few seconds. Detection runs automatically on every camera by default; you’ll see green bounding boxes around moving objects with the class label and confidence score.
Verifying detection is on the ANE
Section titled “Verifying detection is on the ANE”The first time a model runs, Fregata times two warmup inferences and classifies the result. Look at the Detector row in the menu-bar tray (or the System tab in the web UI):
- ~1–4 ms per frame — detection is on the Apple Neural Engine. This is the correct, intended path.
- 5–15 ms per frame — detection is on the GPU (Metal). This
happens if the bundled model uses ops the ANE doesn’t support, or
if you forced
inference_backend: gpuin config. - 50+ ms per frame — detection has fallen back to CPU. Something
went wrong; restart the app and check the log via the tray’s
Settings → Open Frigate Logs for an
ane_initorcoreml_sessionerror.
For a deeper look, see Performance.
Where Fregata stores recordings
Section titled “Where Fregata stores recordings”By default, recordings live under:
~/Fregata/media/recordings/with sub-paths organized by camera and date. Event clips live under
~/Fregata/media/clips/ and exports under ~/Fregata/media/exports/.
You can change the Media location at any time from Settings → Folders → Change Media Location… in the tray menu. Fregata will move existing files for you on the next launch.
Retention is per-camera and configured in config.yml; defaults are
14 days for recordings and longer for event clips. See
Recordings & retention to tune
this for your disk budget.
Your config file, explained
Section titled “Your config file, explained”Fregata stores its settings in ~/Fregata/config/config.yml — a
plain YAML file you can edit by hand (the web UI’s Config editor,
or any text editor; restart Fregata to apply). Out of the box it
enables the headline features globally, and the camera wizard adds
your cameras and their go2rtc streams. A basic, complete config looks like
this:
detectors: coreml: type: coreml inference_backend: ane # ane = Apple Neural Engine (default) · gpu = Metal
# Object detection on every camera. The bundled model uses COCO labels.detect: enabled: trueobjects: track: - person - car - dog - cat
# Tiered recording: 1 day continuous, 14 days motion, 30 days of events.record: enabled: true continuous: days: 1 motion: days: 14 alerts: retain: days: 30 detections: retain: days: 30
snapshots: enabled: true retain: default: 30
# NOTE: Cameras can be set up completely from the Frigate WebUI, but if you want to configure them manually:# Live view + single-connection re-streaming. Point this at your real# camera URL; ffmpeg below pulls from go2rtc rather than the camera.go2rtc: streams: front_door: - rtsp://USERNAME:PASSWORD@CAMERA_IP:554/your-main-stream
cameras: front_door: live: streams: Main: front_door # must match the go2rtc.streams key above ffmpeg: inputs: - path: rtsp://127.0.0.1:8554/front_door input_args: preset-rtsp-restream roles: - detect - record
# ── Home Assistant / MQTT (optional, off by default) ─────────────────────────# Uncomment and point at your broker to use the Frigate HACS integration.mqtt: enabled: false # host: 192.168.1.10 # user: mqtt_user # password: mqtt_passWhat’s turned on, and the parts worth knowing:
- Object detection (
detect.enabled) runs on every camera, trackingperson,car,dog, andcat. The bundled model uses the COCO label set; detecting packages, license plates, and the like needs a custom / Frigate+ model — see Detection tuning. - Recording (
record.enabled) is tiered: 1 day of continuous 24/7 footage, 14 days of motion-only segments, and 30 days of event clips (alerts and detections). Continuous is the disk-hungry tier (~25–40 GB per 1080p camera per day) — setcontinuous.days: 0for event-only recording, or raise any tier if you have the disk. See Recordings & retention. - Snapshots (
snapshots.enabled) saves a JPEG per tracked object, kept 30 days. - Live view uses go2rtc: each camera has one
go2rtc.streamsentry pointing at the real camera URL, and ffmpeg pulls from go2rtc (127.0.0.1:8554) so a single connection feeds detection, recording, and the browser. Thelive.streamskey maps the camera’s friendly stream name(s) to their go2rtc stream name(s) — the web UI uses this to serve MSE/WebRTC live tiles. If it’s missing or the name doesn’t match a go2rtc stream, the live view silently falls back to low-quality jsmpeg.
Each of these is a global default; set the same key under a specific
cameras.<name>: block to override it for one camera.
For every option not shown here, Frigate’s full configuration reference documents the complete schema and its stock defaults. One caveat when reading it: on a new install only, Fregata seeds a handful of features that stock Frigate ships off, so the defaults in that reference won’t match what a fresh Fregata install writes for you:
| Setting | Stock Frigate | Fregata (new install) |
|---|---|---|
detect.enabled | false | true |
record.enabled | false | true |
record.continuous.days | 0 | 1 |
record.motion.days | 0 | 14 |
record.alerts / record.detections retain | 10 days | 30 days |
snapshots.enabled | false | true |
snapshots.retain.default | 10 days | 30 days |
objects.track | ["person"] | ["person", "car", "dog", "cat"] |
These are written only when Fregata creates a config for the first
time. An existing config.yml — or one imported from Frigate — is
left exactly as-is: Fregata never flips these on a returning user, and
every other default matches upstream Frigate.
Next steps
Section titled “Next steps”- Add more cameras the same way.
- Tune detection — masks, zones, per-object thresholds, custom models.
- Hook Fregata into Home Assistant via the official Frigate HACS integration.