
frigate-configurator
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.
- Installs
- 117
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/nodnarbnitram/claude-code-extensions --skill frigate-configurator- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads frigate-configurator automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
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)
FAQ
What does the frigate-configurator skill do?
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.
How do I install frigate-configurator?
Run npx skills add https://github.com/nodnarbnitram/claude-code-extensions --skill frigate-configurator in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/frigate-configurator/ (personal) or .claude/skills/frigate-configurator/ (project).
Which AI agents can use frigate-configurator?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is frigate-configurator safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains frigate-configurator?
It is published by nodnarbnitram in nodnarbnitram/claude-code-extensions. It has 117 recorded installs.
More from nodnarbnitram/claude-code-extensions
tauri-v2
nodnarbnitram/claude-code-extensions
Tauri v2+ cross-platform app development with Rust backend. Use when configuring tauri.conf.json, implementing Rust commands ([tauri::command]), setting up IPC patterns (invoke, emit, channels), configuring permissions/capabilities, troubleshooting build issues, or deploying desktop/mobile apps. Triggers on Tauri, src-tauri, invoke, emit, capabilities.json.
code-reviewer
nodnarbnitram/claude-code-extensions
Review code for best practices, security issues, and potential bugs. Use when reviewing code changes, checking PRs, analyzing code quality, or performing security audits.
ha-voice
nodnarbnitram/claude-code-extensions
Configure Home Assistant Assist voice control with pipelines, intents, wake words, and speech processing. Use when setting up voice control, creating custom intents, configuring TTS/STT, or building voice satellites. Activates on keywords: Assist, voice control, wake word, intent, sentence, TTS, STT, Piper, Whisper, Wyoming.
esphome-config-helper
nodnarbnitram/claude-code-extensions
This skill should be used when the user asks to "create an esphome config", "set up an esp32 device", "configure esphome yaml", "add a sensor to esphome", "fix esphome compile error", or mentions "gpio pin assignment", "wifi setup", "ota update", or error messages like "Unknown platform", "GPIO already in use", "Could not compile", or "WiFi connection failed". Provides rapid ESPHome configuration generation, troubleshooting, and validation.
ha-energy
nodnarbnitram/claude-code-extensions
Open the skill to read its SKILL.md instructions.
ha-automation
nodnarbnitram/claude-code-extensions
Open the skill to read its SKILL.md instructions.
Popular other skills
hyperframes-cli
heygen-com/hyperframes
The HyperFrames CLI by job - scaffold, check, look at frames, edit the timeline, preview, render locally or in the cloud, publish, project history - plus reading its JSON and recovering from build or render failures.
triage
mattpocock/skills
Move issues and external PRs through a state machine of triage roles, categorise, verify, grill if needed, and write agent-ready briefs.
ask-matt
mattpocock/skills
Ask which skill or flow fits your situation. A router over the skills in this repo.
to-questionnaire
mattpocock/skills
Turn a decision you can't fully answer into a questionnaire for someone else to fill in.
loop-me
mattpocock/skills
Grill me about specs for the workflows I want to build, within this workspace.