agentleFS
nodnarbnitramnodnarbnitram/claude-code-extensions/.claude/skills/frigate-configurator/SKILL.md

frigate-configurator

Skill16 starsChanged 7 months agoMITView on GitHub

Configure Frigate NVR with optimized YAML, object detection, recording, zones, and hardware acceleration. Use when setting up Frigate cameras, troubleshooting detection issues, configuring Coral TPU/OpenVINO, or integrating with Home Assistant.

The file

Show its rules and text

We split this skill into the rules it gives an agent

20 rules. About 0 are common, 14 are distinctive, and 6 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈14

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 6

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    No alerts triggered due to misconfigured required_zones

    line 30
  2. Distinctive:

    Why this matters: Start with the absolute minimum to verify camera connectivity before adding complexity.

    line 56
  3. Distinctive:

    Why this matters: Use separate streams for detect (low-res) and record (high-res) to optimize performance.

    line 102
  4. Very specific:

    Use width and height that match your camera's ACTUAL resolution (verify with VLC)

    line 108
  5. Very specific:

    Use separate streams for detect (sub-stream) and record (main stream)

    line 110
  6. Distinctive:

    Create motion masks for timestamp overlays and areas with constant motion

    line 112
  7. Very specific:

    Use environment variables for credentials: {FRIGATE_RTSP_PASSWORD}

    line 113
  8. Distinctive:

    Test RTSP URLs in VLC first before adding to Frigate config

    line 114
  9. Very specific:

    Never use localhost or 127.0.0.1 for MQTT inside Docker containers

    line 118
  10. Distinctive:

    Never set detect resolution higher than 1280x720 (wastes detector capacity)

    line 119
  11. Distinctive:

    Never enable recording without specifying retention policy

    line 120
  12. Very specific:

    Never mount /media/frigate on network storage without relocating database

    line 121
  13. Distinctive:

    Never mix multiple detector types for object detection (e.g., Coral + OpenVINO)

    line 122
  14. Distinctive:

    Never use UDP RTSP transport without explicit configuration (TCP is default)

    line 123
  15. Distinctive:

    Add Coral TPU for object detection

    line 554
  16. Very specific:

    Verify detector is configured and running: check /api/stats

    line 561
  17. Distinctive:

    Check object filters aren't too restrictive (min_area, threshold)

    line 562
  18. Distinctive:

    Ensure detect stream resolution is correct

    line 563
  19. Distinctive:

    Verify objects list includes desired types

    line 564
  20. Distinctive:

    Before deploying Frigate, verify:

    line 586

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Frigate NVR Configuration Expert

Comprehensive Frigate NVR configuration assistance with optimized YAML generation, detector setup, and troubleshooting.

BEFORE YOU START

This skill prevents 12+ common errors and saves ~60% tokens on Frigate configuration.

MetricWithout SkillWith Skill
Setup Time2-4 hours30-45 min
Common Errors12+0
Token Usage~15,000~6,000

Known Issues This Skill Prevents

  1. Bus errors from insufficient shared memory allocation
  2. Green/distorted video from incorrect resolution configuration
  3. Database locked errors when using network storage for SQLite
  4. Missing audio in recordings due to default audio stripping
  5. MQTT connection failures from using localhost in Docker
  6. Coral TPU not detected due to missing device passthrough
  7. High CPU usage from missing hardware acceleration
  8. False positives from missing motion masks on timestamps
  9. No alerts triggered due to misconfigured required_zones
  10. Recording corruption from h265 streams without transcoding
  11. go2rtc WebRTC failures from missing STUN configuration
  12. Object detection misses from wrong detect stream resolution

Quick Start

Step 1: Create Minimal Configuration

mqtt:
  enabled: false

cameras:
  front_door:
    ffmpeg:
      inputs:
        - path: rtsp://user:pass@192.168.1.100:554/stream1
          roles:
            - detect
    detect:
      width: 1280
      height: 720
      fps: 5

Why this matters: Start with the absolute minimum to verify camera connectivity before adding complexity. Frigate requires explicit detect stream role assignment.

Step 2: Add Hardware-Accelerated Detector

detectors:
  coral:
    type: edgetpu
    device: usb

# OR for Intel with OpenVINO:
detectors:
  ov:
    type: openvino
    device: GPU

Why this matters: CPU detection is not recommended for production. Even a single USB Coral TPU dramatically reduces CPU usage and improves detection latency.

Step 3: Enable Recording with Retention

record:
  enabled: true
  retain:
    days: 1
    mode: motion
  alerts:
    retain:
      days: 14
  detections:
    retain:
      days: 7

cameras:
  front_door:
    ffmpeg:
      inputs:
        - path: rtsp://user:pass@192.168.1.100:554/stream1
          roles:
            - detect
        - path: rtsp://user:pass@192.168.1.100:554/stream2
          roles:
            - record

Why this matters: Use separate streams for detect (low-res) and record (high-res) to optimize performance. Retention modes prevent storage from filling up.

Critical Rules

Always Do

  • Use width and height that match your camera's ACTUAL resolution (verify with VLC)
  • Set detect fps between 5-10 (higher wastes resources, lower misses events)
  • Use separate streams for detect (sub-stream) and record (main stream)
  • Allocate adequate shm-size in Docker (64MB minimum per camera)
  • Create motion masks for timestamp overlays and areas with constant motion
  • Use environment variables for credentials: {FRIGATE_RTSP_PASSWORD}
  • Test RTSP URLs in VLC first before adding to Frigate config

Never Do

  • Never use localhost or 127.0.0.1 for MQTT inside Docker containers
  • Never set detect resolution higher than 1280x720 (wastes detector capacity)
  • Never enable recording without specifying retention policy
  • Never mount /media/frigate on network storage without relocating database
  • Never mix multiple detector types for object detection (e.g., Coral + OpenVINO)
  • Never use UDP RTSP transport without explicit configuration (TCP is default)

Common Mistakes

Wrong:

cameras:
  cam1:
    ffmpeg:
      inputs:
        - path: rtsp://192.168.1.100/stream
          roles:
            - detect
            - record
    detect:
      width: 1920
      height: 1080
      fps: 30

Correct:

cameras:
  cam1:
    ffmpeg:
      inputs:
        - path: rtsp://192.168.1.100/substream
          roles:
            - detect
        - path: rtsp://192.168.1.100/mainstream
          roles:
            - record
    detect:
      width: 1280
      height: 720
      fps: 5

Why: Using 1080p@30fps for detection wastes resources. Detection works best at 720p or lower at 5fps. Always use the camera's sub-stream for detection and main stream for recording.

Known Issues Prevention

IssueRoot CauseSolution
Bus ErrorInsufficient shared memorySet shm-size: 256mb in docker-compose
Database LockedSQLite on network storageUse database.path: /config/frigate.db
Green/Distorted VideoWrong resolution in configMatch camera's actual output resolution
No Audio in RecordingsDefault audio removalUse preset-record-generic-audio-aac
MQTT Connection Failedlocalhost in DockerUse host IP address instead
Coral Not DetectedMissing device passthroughAdd /dev/bus/usb to Docker devices
High CPU UsageMissing hwaccelAdd appropriate preset (vaapi/qsv/nvidia)
Missing AlertsNo required_zonesConfigure zones with review.alerts.required_zones
UDP Stream FailuresTCP is default in FrigateAdd preset-rtsp-udp to input args

Configuration Reference

config.yml Structure

# MQTT Configuration (optional but recommended)
mqtt:
  enabled: true
  host: 192.168.1.50
  port: 1883
  user: "{FRIGATE_MQTT_USER}"
  password: "{FRIGATE_MQTT_PASSWORD}"

# Detector Configuration
detectors:
  coral:
    type: edgetpu
    device: usb  # or pci for M.2/PCIe

# Global Object Settings
objects:
  track:
    - person
    - car
    - dog
    - cat
  filters:
    person:
      min_area: 5000
      max_area: 100000
      threshold: 0.7

# Recording Settings
record:
  enabled: true
  retain:
    days: 1
    mode: motion
  alerts:
    retain:
      days: 14
  detections:
    retain:
      days: 7

# Snapshot Settings
snapshots:
  enabled: true
  retain:
    default: 7

# Camera Configuration
cameras:
  front_door:
    enabled: true
    ffmpeg:
      inputs:
        - path: "rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@192.168.1.100:554/stream1"
          input_args: preset-rtsp-restream
          roles:
            - detect
        - path: "rtsp://{FRIGATE_RTSP_USER}:{FRIGATE_RTSP_PASSWORD}@192.168.1.100:554/stream0"
          input_args: preset-rtsp-restream
          roles:
            - record
      output_args:
        record: preset-record-generic-audio-aac
    detect:
      width: 1280
      height: 720
      fps: 5
    motion:
      mask:
        - 0,0,200,0,200,100,0,100  # Timestamp area
    zones:
      front_yard:
        coordinates: 100,500,400,500,400,720,100,720
        objects:
          - person
          - car
    review:
      alerts:
        required_zones:
          - front_yard

Key settings:

  • detect.fps: 5 is optimal for most cameras (reduces detector load)
  • detect.width/height: Must match actual camera sub-stream resolution
  • record.retain.mode: Use motion or active_objects to save storage
  • motion.mask: Define polygons as comma-separated coordinates
  • zones.coordinates: Bottom-center of bounding box determines zone presence

Hardware Acceleration Presets

Intel (6th Gen+)

# For Intel gen8+ (prefer QSV)
ffmpeg:
  hwaccel_args: preset-intel-qsv-h264  # or preset-intel-qsv-h265

# For Intel gen1-gen7 (use VAAPI)
ffmpeg:
  hwaccel_args: preset-vaapi

NVIDIA GPU

ffmpeg:
  hwaccel_args: preset-nvidia

Requires NVIDIA Container Toolkit:

# docker-compose.yml
services:
  frigate:
    runtime: nvidia
    environment:
      - NVIDIA_VISIBLE_DEVICES=all

AMD GPU

ffmpeg:
  hwaccel_args: preset-vaapi

# docker-compose.yml
environment:
  - LIBVA_DRIVER_NAME=radeonsi

Raspberry Pi

# Raspberry Pi 4/5
ffmpeg:
  hwaccel_args: preset-rpi-64-h264  # or preset-rpi-64-h265

Requires: gpu_mem=128 in /boot/config.txt and device mapping in Docker.

Object Detector Types

USB Coral TPU

detectors:
  coral:
    type: edgetpu
    device: usb  # Single USB Coral
    # device: usb:0  # First of multiple USB Corals

Docker device mapping:

devices:
  - /dev/bus/usb:/dev/bus/usb

M.2/PCIe Coral TPU

detectors:
  coral:
    type: edgetpu
    device: pci
    # device: pci:0  # First of multiple PCIe Corals

OpenVINO (Intel)

detectors:
  ov:
    type: openvino
    device: GPU  # or CPU

model:
  path: /openvino-model/ssdlite_mobilenet_v2.xml
  width: 300
  height: 300

ONNX (Multi-GPU)

detectors:
  onnx:
    type: onnx
    # Automatically uses: ROCm (AMD), OpenVINO (Intel), TensorRT (NVIDIA)

Advanced Features

Zone-Based Speed Estimation

zones:
  driveway:
    coordinates: 100,500,400,500,400,720,100,720
    distances:
      - "100,500|400,500|20ft"  # 20 feet between points
    speed:
      threshold: 15  # Minimum mph to register

Audio Detection

audio:
  enabled: true
  listen:
    - bark
    - fire_alarm
    - scream
    - speech

cameras:
  front_door:
    ffmpeg:
      inputs:
        - path: rtsp://camera/stream
          roles:
            - audio

GenAI Event Descriptions

genai:
  enabled: true
  provider: ollama
  base_url: http://192.168.1.100:11434
  model: llava

Face Recognition (Frigate+)

face_recognition:
  enabled: true
  threshold: 0.6

cameras:
  front_door:
    detect:
      width: 1280  # Higher res improves face detection

License Plate Recognition

lpr:
  enabled: true

cameras:
  driveway:
    lpr:
      enabled: true

go2rtc Integration

go2rtc:
  streams:
    front_door:
      - rtsp://user:pass@192.168.1.100:554/stream1
      - "ffmpeg:front_door#video=copy#audio=opus"
  webrtc:
    candidates:
      - 192.168.1.50:8555
      - stun:8555

Docker Compose Template

services:
  frigate:
    container_name: frigate
    image: ghcr.io/blakeblackshear/frigate:stable
    restart: unless-stopped
    shm_size: "256mb"
    devices:
      - /dev/bus/usb:/dev/bus/usb  # USB Coral
      - /dev/dri/renderD128:/dev/dri/renderD128  # Intel GPU
    volumes:
      - ./config:/config
      - ./storage:/media/frigate
      - type: tmpfs
        target: /tmp/cache
        tmpfs:
          size: 1000000000
    ports:
      - "8971:8971"  # Web UI
      - "8554:8554"  # RTSP feeds
      - "8555:8555/tcp"  # WebRTC
      - "8555:8555/udp"  # WebRTC
    environment:
      FRIGATE_RTSP_USER: admin
      FRIGATE_RTSP_PASSWORD: ${RTSP_PASSWORD}
      FRIGATE_MQTT_USER: frigate
      FRIGATE_MQTT_PASSWORD: ${MQTT_PASSWORD}

Bundled Resources

Templates

Located in templates/:

  • docker-compose.yml - Production-ready compose file
  • config-minimal.yml - Minimal starter config
  • config-full.yml - Full-featured config template

References

Located in references/:

  • detector-comparison.md - Detector performance comparison
  • ffmpeg-presets.md - All available FFmpeg presets
  • mqtt-topics.md - MQTT topic reference

Scripts

Located in scripts/:

  • validate-config.sh - Validate config syntax before applying

Dependencies

Required

PackageVersionPurpose
Docker20.10+Container runtime
docker-compose2.0+Service orchestration

Optional

PackageVersionPurpose
NVIDIA Container ToolkitLatestNVIDIA GPU support
Coral Edge TPU runtimeLatestCoral TPU support

Official Documentation

Troubleshooting

Camera Shows Offline

Symptoms: Camera fps shows 0, web UI shows offline status

Solution:

# Test RTSP URL directly
ffprobe -rtsp_transport tcp "rtsp://user:pass@ip:554/stream"

# Check Docker logs
docker logs frigate 2>&1 | grep -i "camera_name"

High CPU Usage

Symptoms: CPU consistently above 80%, system becomes unresponsive

Solution:

  1. Enable hardware acceleration (see presets above)
  2. Reduce detect fps from 10 to 5
  3. Lower detect resolution to 720p or below
  4. Add Coral TPU for object detection

No Objects Detected

Symptoms: Motion detected but no object events created

Solution:

  1. Verify detector is configured and running: check /api/stats
  2. Check object filters aren't too restrictive (min_area, threshold)
  3. Ensure detect stream resolution is correct
  4. Verify objects list includes desired types

Recording Not Working

Symptoms: Events show but no recordings available

Solution:

# Ensure record role is assigned
cameras:
  cam1:
    ffmpeg:
      inputs:
        - path: rtsp://camera/stream
          roles:
            - record  # Must be explicitly set
    record:
      enabled: true  # Must be true

Setup Checklist

Before deploying Frigate, verify:

  • Docker and docker-compose installed
  • RTSP URLs tested in VLC (note actual resolution)
  • Camera credentials ready for environment variables
  • Storage volume has adequate space (100GB+ recommended)
  • Shared memory size configured (64MB per camera minimum)
  • Hardware acceleration device mapped (if applicable)
  • Coral TPU device mapped (if using)
  • MQTT broker accessible (if integrating with Home Assistant)
  • Port 8971 available for web UI
  • Firewall allows required ports (8554, 8555 for streaming)

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.