# Recordings & retention

Fregata can record continuously, only when something happens
(motion, an object detection, an "alert" event), or some mix of the
two. The behavior is configured per-camera in `config.yml` and the
data lands under `~/Fregata/media/` by default.

## Two kinds of recording

- **Continuous recording** lives under `recordings/` — segmented
  MP4s that cover the full timeline. Disk-hungry but invaluable when
  something happens *between* triggers.
- **Event clips** live under `clips/` — short MP4s tied to a
  detection event (a person walked through the front-porch zone,
  a car pulled into the driveway). Cheap to keep for a long time.

The web UI's **Review** tab is built on event clips; the
**Recordings** tab plays continuous segments. Both work even when
detection is paused.

## Configuring per-camera

Recording is configured per-camera in `config.yml` under the
`record:` and `snapshots:` blocks — same schema as upstream
Frigate, no macOS-specific keys.

The full reference (continuous vs. motion-only retention, event
clip rules, snapshot quality, copy-vs-re-encode) lives in
[Frigate's recording docs](https://docs.frigate.video/configuration/record).
We don't mirror it here; the upstream docs stay current with
every Frigate release.

## Disk budgeting

A rough rule of thumb for an H.264 1080p main-stream camera at 15 fps
and a sane bitrate:

| Mode | ≈ per camera per day | 14-day retention |
| --- | --- | --- |
| Continuous, all segments | 25–40 GB | 350–560 GB |
| `mode: motion` (typical street) | 4–10 GB | 60–140 GB |
| `mode: motion` (low-traffic) | 1–3 GB | 15–40 GB |
| Event clips only | 0.1–0.5 GB | 1–7 GB |

HEVC (H.265) cuts roughly 30–40 % off these numbers if your camera
encodes it. On Apple Silicon, encoding event clips with
`hevc_videotoolbox` is essentially free — see
[Performance](/guides/performance/).

:::tip
When you're sizing a new install, the safest approach is **start
with `mode: motion` and short retention**, watch the actual disk
growth for a week, then dial up.
:::

## Where recordings land

```
~/Fregata/media/
├── recordings/<camera>/<YYYY-MM-DD>/<HH>/<MM.SS>.mp4
├── clips/<camera>-<event-id>.mp4
├── clips/thumbs/                  # event thumbnails (jpg)
├── clips/triggers/                # synthetic clips for trigger pipeline
└── exports/                       # user-initiated exports
```

The path layout is the same as upstream Frigate. If you've been
running Frigate in Docker before, the Recordings tab and your file
shape will be familiar.

## Changing the media location

**Tray menu — Settings → Folders → Change Media Location…**
Pick a new folder. Fregata will move the existing files on next
launch, or let you move them yourself.

The destination should be on large enough disk to store all the recordings you wish to keep.
External USB drives or NAS network shares are common.

## Pruning by hand

Fregata prunes on a 24-hour cycle. To reclaim space immediately:

```bash
# Drop everything older than 7 days right now.
find ~/Fregata/media/recordings -type f -mtime +7 -delete

# Then trigger Frigate's index cleanup the same way it would on its
# next prune cycle, via Fregata's loopback API port (5000 — plain HTTP
# and unauthenticated, localhost-only; the main port 8971 is HTTPS +
# login-protected):
curl -X POST http://127.0.0.1:5000/api/recordings/cleanup
```

The first command frees the disk; the second updates the SQLite
index so the web UI doesn't show ghost segments.

## TimeLapse / hyperlapse exports

The web UI's Recordings tab has an **Export** button — pick a time
range, optionally apply a speed multiplier, and Fregata renders an
MP4 to `~/Fregata/media/exports/`. Encoding is hardware-accelerated
on the dedicated media engine, so a multi-hour timelapse usually
finishes in less time than the source footage's running time.
