Frigate vs Viseron: AI-Powered NVR Compared
Quick Verdict
Frigate is the better choice for most self-hosters. It has a larger community (18,000+ GitHub stars vs 2,500), deeper Home Assistant integration, better Coral TPU support, and go2rtc built in for efficient RTSP restreaming. Viseron offers face recognition out of the box and a more standalone experience if you don’t use Home Assistant, but its smaller community means fewer guides, slower bug fixes, and less hardware testing.
Overview
Both Frigate and Viseron are self-hosted NVRs that use AI to detect objects in your camera feeds. They replace cloud NVR services like Ring, Nest, and Arlo with fully local processing — no subscriptions, no cloud uploads, no privacy compromises.
Frigate (v0.17.0) focuses on real-time object detection with tight Home Assistant integration. It uses Google Coral TPUs or Intel OpenVINO for hardware-accelerated inference and includes go2rtc for RTSP restreaming and WebRTC live viewing. Written in Python with a React frontend.
Viseron (v3.4.1) aims to be a more standalone NVR with built-in face recognition, multiple AI backend support (TensorFlow, YOLO, Darknet), and NVIDIA CUDA GPU acceleration. It has its own web UI for viewing recordings and events. Written in Python with a TypeScript/React frontend.
Feature Comparison
| Feature | Frigate 0.17.0 | Viseron 3.4.1 |
|---|---|---|
| Object detection | Yes (Coral TPU, OpenVINO, CPU) | Yes (TensorFlow, YOLO, Darknet, Coral) |
| Face recognition | No (detection only) | Yes (built-in) |
| License plate recognition | Community models only | Yes (via OpenALPR/PaddleOCR) |
| Hardware acceleration | Google Coral USB/M.2/PCIe, Intel OpenVINO, AMD ROCm | NVIDIA CUDA, Google Coral, Hailo-8 |
| NVIDIA GPU support | Limited (NVDEC for decode only) | Full (CUDA inference + decode) |
| Live streaming | go2rtc built-in (WebRTC, MSE, HLS, RTSP) | go2rtc integration (WebRTC, MSE) |
| RTSP restreaming | Yes (via go2rtc, reduces camera load) | Yes (via go2rtc) |
| Web UI | Built-in (event browser, live view, config editor) | Built-in (recordings, snapshots, live view) |
| MQTT | Yes (native) | Yes |
| Home Assistant | Deep integration (companion integration, automations, camera entity) | Basic (MQTT sensors, manual config) |
| API | RESTful + WebSocket | RESTful |
| Recording modes | Continuous, event-based, snapshot-only | Continuous, event-based |
| Sub-stream support | Yes (detect on sub, record on main) | Yes |
| Zone-based detection | Yes (custom zones per camera) | Yes |
| Birdseye view | Yes (combined multi-camera view) | No |
| Audio detection | Yes (speech, bark, car horn, etc.) | No |
| Configuration | YAML | YAML |
| Docker image size | ~1.5 GB (standard), ~2.5 GB (TensorRT) | ~2.5 GB (standard), ~5 GB (CUDA) |
| GitHub stars | 18,000+ | 2,500+ |
| License | MIT | MIT |
| Language | Python + Go (go2rtc) | Python + TypeScript |
Installation Complexity
Frigate
Frigate’s setup revolves around a YAML config file (config.yml) that defines cameras, detectors, and recording rules. The Docker Compose is straightforward:
services:
frigate:
image: ghcr.io/blakeblackshear/frigate:0.17.0
container_name: frigate
restart: unless-stopped
privileged: true
shm_size: 256mb
ports:
- "5000:5000" # Web UI
- "8554:8554" # RTSP restream
- "8555:8555/tcp" # WebRTC
- "8555:8555/udp"
volumes:
- ./config:/config
- /path/to/recordings:/media/frigate
- type: tmpfs
target: /tmp/cache
tmpfs:
size: 1000000000 # 1 GB cache for recordings
devices:
- /dev/bus/usb:/dev/bus/usb # Coral USB Accelerator
environment:
- FRIGATE_RTSP_PASSWORD=your_camera_password
volumes: {}
The main complexity is the config.yml — you define each camera’s RTSP URL, detection zones, object filters, and recording rules. Frigate’s documentation is extensive, and the community has shared configs for hundreds of camera models.
Viseron
Viseron’s setup is similar in structure — YAML config, single container:
services:
viseron:
image: roflcoopter/viseron:3.4.1
container_name: viseron
restart: unless-stopped
privileged: true
ports:
- "8888:8888" # Web UI
volumes:
- viseron-config:/config
- /path/to/recordings:/recordings
environment:
- TZ=America/New_York
# For NVIDIA GPU:
# runtime: nvidia
# environment:
# - NVIDIA_VISIBLE_DEVICES=all
volumes:
viseron-config:
Viseron’s YAML config defines cameras, object detectors, and recording components. The config is more modular — each feature is a separate “component” you enable — but less battle-tested. Fewer community examples exist, so you’ll rely more on official docs.
Setup verdict: Similar complexity. Frigate has better documentation and more community examples. Viseron is more modular but has a steeper learning curve due to fewer guides.
Performance and Resource Usage
| Scenario | Frigate | Viseron |
|---|---|---|
| Idle (no cameras active) | ~200 MB RAM, <1% CPU | ~300 MB RAM, <1% CPU |
| 1 camera, Coral TPU detection | ~500 MB RAM, 5% CPU | ~600 MB RAM, 5% CPU |
| 4 cameras, Coral TPU | ~1 GB RAM, 15% CPU | ~1.2 GB RAM, 15% CPU |
| 4 cameras, CPU-only detection | ~1.5 GB RAM, 60-80% CPU | ~1.8 GB RAM, 70-90% CPU |
| 4 cameras, NVIDIA GPU | N/A (decode only) | ~1 GB RAM, 10% CPU + GPU |
| Recording storage (1080p, 24/7) | ~15-20 GB/day per camera | ~15-20 GB/day per camera |
Key difference: Frigate is optimized for Coral TPU and Intel QuickSync — it’s extremely efficient with these accelerators. Viseron’s strength is NVIDIA CUDA, using the GPU for both video decode and AI inference. If you have an NVIDIA GPU, Viseron uses it more effectively. If you have a Coral TPU (or plan to buy one at ~$30), Frigate is more efficient.
Both support sub-stream detection (run AI on a lower-resolution sub-stream while recording the full-resolution main stream), which dramatically reduces CPU usage.
Home Assistant Integration
This is where Frigate dominates.
Frigate + Home Assistant:
- Dedicated companion integration (HACS or built-in)
- Camera entities with live view in dashboards
- MQTT events trigger automations directly (“person detected in driveway”)
- Notification blueprints with detection snapshots
- Frigate card for Lovelace (custom card with timeline, event browser)
- Two-way audio support through HA
- Media browser integration for recording playback
Viseron + Home Assistant:
- MQTT sensors for detection events
- Manual camera entity configuration
- No dedicated companion integration
- No custom Lovelace card
- Automations work but require more manual MQTT topic configuration
If Home Assistant is your smart home hub, Frigate’s integration is significantly more polished. Viseron’s HA support works but feels bolted-on rather than native.
Community and Ecosystem
| Metric | Frigate | Viseron |
|---|---|---|
| GitHub stars | 18,000+ | 2,500+ |
| Contributors | 300+ | 30+ |
| Community configs shared | Hundreds (Reddit, HA forums) | Dozens |
| Camera compatibility tested | 100+ models documented | Limited documentation |
| YouTube tutorials | 50+ | <10 |
| Discord/forum activity | Very active (HA community, Reddit) | Small Discord server |
| Documentation quality | Excellent (frigate.video) | Good but less comprehensive |
| Third-party tools | Frigate card, Double Take, notification blueprints | Limited |
Frigate’s community is roughly 7x larger. This matters for troubleshooting camera-specific issues, finding optimized configs, and getting help with edge cases. When your specific camera model has a quirk, someone in Frigate’s community has probably documented it.
Use Cases
Choose Frigate If…
- Home Assistant is your smart home platform
- You want the largest community and most documentation
- You have (or plan to buy) a Google Coral TPU
- You want go2rtc built-in for efficient live streaming
- Audio detection matters (doorbell, dog bark, car alarm triggers)
- You want Birdseye multi-camera combined view
- You prefer the most battle-tested option
Choose Viseron If…
- You have an NVIDIA GPU and want to use it for inference
- Face recognition is a priority (Viseron has it built-in)
- You don’t use Home Assistant and want a standalone NVR
- License plate recognition is needed
- You prefer the Hailo-8 AI accelerator over Coral
- You want a self-contained system without HA dependency
Final Verdict
For Home Assistant users with a Coral TPU, Frigate is the right tool. The integration depth, community size, documentation quality, and ecosystem of companion tools make it the default choice for self-hosted AI surveillance. The 18,000+ GitHub stars and hundreds of community-shared configs mean your specific camera model is probably already documented.
Viseron earns its place for NVIDIA GPU owners and anyone who needs face recognition without adding a separate service. Its standalone web UI is better suited for users who don’t run Home Assistant. But the smaller community (2,500 stars) means more self-reliance when troubleshooting.
If you’re starting fresh: buy a $30 Coral USB Accelerator and run Frigate. The Coral handles detection for 10+ cameras simultaneously at under 1W power draw — it’s the most cost-effective AI inference hardware available.
Frequently Asked Questions
Can I run both Frigate and Viseron?
Technically yes, but there’s no reason to. They serve the same purpose. Pick one based on your hardware (Coral → Frigate, NVIDIA GPU → Viseron) and ecosystem (Home Assistant → Frigate, standalone → Viseron).
Do I need a Coral TPU for Frigate?
No, but it’s strongly recommended. Without a Coral, Frigate uses CPU detection which works for 1-2 cameras but becomes unusable at 4+. A Coral USB Accelerator ($30) handles 10+ cameras simultaneously. OpenVINO on Intel CPUs is the other viable option.
Can Viseron use a Coral TPU?
Yes, Viseron supports Google Coral EdgeTPU. However, Frigate’s Coral integration is more mature and better optimized. If you already own a Coral, Frigate is the better match.
Which handles more cameras?
Both scale similarly. With hardware acceleration, either handles 8-16 cameras on modest hardware (Intel N100 + Coral for Frigate, NVIDIA GPU for Viseron). The bottleneck is recording storage and network bandwidth, not detection processing.
Does Frigate have face recognition?
Not natively. The community project Double Take adds face recognition on top of Frigate using CompreFace or DeepStack backends. Viseron has face recognition built into its core.
Which uses less storage?
Identical for the same recording settings. Both record H.264/H.265 RTSP streams from cameras. Storage depends on resolution, frame rate, and retention policy — typically 15-20 GB per camera per day at 1080p continuous recording. Both support event-only recording to reduce storage.
Related
Get self-hosting tips in your inbox
Get the Docker Compose configs, hardware picks, and setup shortcuts we don't put in articles. Weekly. No spam.
Comments