Viseron
Self-hosted NVR with local AI object detection
Viseron is a self-hosted, local-only network video recorder with built-in object detection and face recognition. It is designed to keep all processing on your own hardware without cloud dependencies.
Key features
- Local AI object detection
- Face recognition
- Hardware acceleration support
- Cloud-free operation
Pros & cons
Strengths
- Fully local processing
- Supports Coral and GPU acceleration
Trade-offs
- Configuration via YAML
- Resource intensive with AI
Viseron replaces
Last reviewed Sep 13, 2026 · 876 words
Viseron is the NVR to run when you want Frigate's local object detection but do not want Home Assistant at the centre of your camera system. It records, detects people and cars, recognises faces, and reads number plates on your own hardware, with no cloud account anywhere in the chain. It needs about 2 GB of RAM before you add a detector and is configured through one YAML file. That file is both its strength and the reason it sits at 3,477 stars while Frigate has a following many times larger.
One YAML, structured by component
Everything in Viseron is a component that you enable and configure, and cameras are declared once and referenced by every other component. The minimal config for one camera with CPU detection looks like this:
ffmpeg:
camera:
front_door:
host: 192.168.1.50
port: 554
path: /stream1
username: viewer
password: change-me
substream:
port: 554
path: /stream2
width: 640
height: 360
darknet:
object_detector:
cameras:
front_door:
fps: 1
labels:
- label: person
confidence: 0.7
trigger_recorder: true
nvr:
front_door:
Two habits carry over from every other NVR: run detection on the substream at 1 to 2 fps and record the main stream, and start with one label at a high confidence before adding cars, cats, and packages. Viseron's web UI on port 8888 shows live feeds and recordings but the config is edited in the file; there is no settings page that writes YAML for you, and that is the configuration cost the catalogue is honest about.
CPU handles two cameras; past that, buy a Coral
The Darknet detector on a modern x86 CPU manages 2 or 3 cameras at 1 fps before it starts stealing cycles from recording. Beyond that the answer is an accelerator. Viseron's edgetpu component drives a Google Coral (USB or M.2) and handles a dozen cameras with room to spare; the CUDA image variants use an NVIDIA GPU for both detection and decoding, and there are VAAPI-capable builds for Intel integrated graphics. The project publishes separate image tags per architecture and accelerator, so pick deliberately: the plain roflcoopter/viseron tag on a box with a Coral plugged in will not use it until you switch to a tag and component that do. Pass the device through in compose:
services:
viseron:
image: roflcoopter/viseron:latest
devices:
- /dev/bus/usb:/dev/bus/usb
- /dev/dri:/dev/dri
volumes:
- ./config:/config
- /srv/cctv:/recordings
ports:
- "8888:8888"
restart: unless-stopped
With a Coral and 4 cameras the whole thing settles around the 2 GB minimum; with the CUDA image and face recognition on, plan for 3 to 4 GB. Those are homelab observations, not published figures.
Face and plate recognition are built in, not bolted on
This is where Viseron pulls ahead of Frigate for some users. Face recognition is a first-class component: point it at a folder of images per person and it labels detected faces on events. Number-plate recognition works the same way. Frigate users get equivalent results by running Double Take and a separate recognition service alongside; Viseron ships it in one container. The trade-off is that recognition is far more sensitive to camera placement and lighting than object detection, so treat it as a nice-to-have on the doorbell camera rather than the reason to buy 6 cameras.
MQTT is the integration, and it is optional
Viseron publishes events, snapshots, and camera state over MQTT and supports Home Assistant's discovery convention, so Home Assistant picks it up as sensors and cameras without a custom integration. The important word is optional. Frigate has a first-party HA integration and increasingly assumes you have it; Viseron works exactly as well with no MQTT broker at all, which is the whole reason a standalone-NVR person picks it. If you want to put it behind SSO, its web UI supports a built-in login, and the usual reverse proxy with forward auth works in front of it.
When Frigate is the safer pick
Bigger community, more detector backends, a live-restreaming layer, a settings UI that keeps growing, and a proper HA integration. If your house already runs on Home Assistant, or you expect to lean on forum answers at 11 pm when a camera drops, Frigate is the lower-risk choice and the rest of the video surveillance category will tell you the same. Viseron wins when you want one container, one YAML, built-in recognition, and no obligation to run anything else. ZoneMinder remains the answer only if you need a decade of plugin history and can live without modern detection.
What I'd do
Viseron for a 2-to-6 camera house that does not run Home Assistant, on a small x86 box with a USB Coral and a dedicated recordings disk with a retention of 14 days. One camera, one label, one component at a time until the events look right, then add faces on the door camera only. Back up the config directory; the recordings are replaceable, the YAML you tuned over three evenings is not. If Home Assistant is already the hub, take Frigate instead and do not look back.
Compare Viseron
17 head-to-head comparisons.
- Viseron vs go2rtc
- Viseron vs ZoneMinder
- Viseron vs motionEye
- Viseron vs Motion
- Viseron vs Shinobi
- Viseron vs Moonfire NVR
- Viseron vs iSpy
- Viseron vs RPi Cam Web Interface
- Viseron vs Double Take
- Viseron vs Kerberos Agent
- Viseron vs Camera.UI
- Viseron vs Kerberos.io Machinery
- Viseron vs Frigate Notify
- Viseron vs MotionPlus
- Viseron vs DOODS2
- Viseron vs Pikrellcam
- Viseron vs Agent DVR
Similar video surveillance apps
MediaMTX
Video SurveillanceReady-to-use media server and RTSP/WebRTC proxy
Replaces Wowza
go2rtc
Video SurveillanceUltimate camera streaming gateway with low latency
Replaces Nest Cam
OpenALPR
Video SurveillanceAutomatic license plate recognition library
Replaces Rekor Scout, Plate Recognizer
CompreFace
Video SurveillanceSelf-hosted face recognition service with REST API
Replaces Amazon Rekognition
OpenCvSharp
Video Surveillance.NET wrapper for OpenCV computer vision
Replaces Commercial vision SDKs
ZoneMinder
Video SurveillanceFull-featured closed-circuit television software suite
Replaces Blue Iris, Milestone XProtect