
frigate-configurator
by nodnarbnitram
These are a collection of extension for Claude Code that can typically also be used in opencode.
SKILL.md
name: frigate-configurator description: 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.
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.
| Metric | Without Skill | With Skill |
|---|---|---|
| Setup Time | 2-4 hours | 30-45 min |
| Common Errors | 12+ | 0 |
| Token Usage | ~15,000 | ~6,000 |
Known Issues This Skill Prevents
- Bus errors from insufficient shared memory allocation
- Green/distorted video from incorrect resolution configuration
- Database locked errors when using network storage for SQLite
- Missing audio in recordings due to default audio stripping
- MQTT connection failures from using localhost in Docker
- Coral TPU not detected due to missing device passthrough
- High CPU usage from missing hardware acceleration
- False positives from missing motion masks on timestamps
- No alerts triggered due to misconfigured required_zones
- Recording corruption from h265 streams without transcoding
- go2rtc WebRTC failures from missing STUN configuration
- 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
widthandheightthat match your camera's ACTUAL resolution (verify with VLC) - Set
detectfps between 5-10 (higher wastes resources, lower misses events) - Use separate streams for
detect(sub-stream) andrecord(main stream) - Allocate adequate
shm-sizein 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
localhostor127.0.0.1for MQTT inside Docker containers - Never set detect resolution higher than 1280x720 (wastes detector capacity)
- Never enable recording without specifying retention policy
- Never mount
/media/frigateon 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
| Issue | Root Cause | Solution |
|---|---|---|
| Bus Error | Insufficient shared memory | Set shm-size: 256mb in docker-compose |
| Database Locked | SQLite on network storage | Use database.path: /config/frigate.db |
| Green/Distorted Video | Wrong resolution in config | Match camera's actual output resolution |
| No Audio in Recordings | Default audio removal | Use preset-record-generic-audio-aac |
| MQTT Connection Failed | localhost in Docker | Use host IP address instead |
| Coral Not Detected | Missing device passthrough | Add /dev/bus/usb to Docker devices |
| High CPU Usage | Missing hwaccel | Add appropriate preset (vaapi/qsv/nvidia) |
| Missing Alerts | No required_zones | Configure zones with review.alerts.required_zones |
| UDP Stream Failures | TCP is default in Frigate | Add 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 resolutionrecord.retain.mode: Usemotionoractive_objectsto save storagemotion.mask: Define polygons as comma-separated coordinateszones.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 fileconfig-minimal.yml- Minimal starter configconfig-full.yml- Full-featured config template
References
Located in references/:
detector-comparison.md- Detector performance comparisonffmpeg-presets.md- All available FFmpeg presetsmqtt-topics.md- MQTT topic reference
Scripts
Located in scripts/:
validate-config.sh- Validate config syntax before applying
Dependencies
Required
| Package | Version | Purpose |
|---|---|---|
| Docker | 20.10+ | Container runtime |
| docker-compose | 2.0+ | Service orchestration |
Optional
| Package | Version | Purpose |
|---|---|---|
| NVIDIA Container Toolkit | Latest | NVIDIA GPU support |
| Coral Edge TPU runtime | Latest | Coral 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:
- Enable hardware acceleration (see presets above)
- Reduce detect fps from 10 to 5
- Lower detect resolution to 720p or below
- Add Coral TPU for object detection
No Objects Detected
Symptoms: Motion detected but no object events created
Solution:
- Verify detector is configured and running: check
/api/stats - Check object filters aren't too restrictive (min_area, threshold)
- Ensure detect stream resolution is correct
- 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)
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
3ヶ月以内に更新がある
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon