Introduction

OpenNVR is a self-hosted network video recorder with operator-controlled AI. Cameras stay on an isolated network, every frame and inference stays on your hardware, and you choose which models run.

On this page

Introduction

OpenNVR records your IP cameras and runs AI over the footage, on hardware you own. No cloud account, no per-camera licence, no vendor holding your video.

It is a normal NVR first — discovery, recording, retention, live view, playback, users and permissions — with three things a normal NVR does not have.

The three things

Cameras cannot reach the internet

Cameras are the weakest device on most networks: default credentials, firmware nobody updates, and a manufacturer’s cloud they phone home to. OpenNVR assumes that and puts them behind it.

On a dual-NIC host the cameras sit on their own subnet with no route out. The recorder reaches them; they reach nothing. Apps you install run on a third network with no route to the cameras or the internet, and any host an app wants to reach is a grant you make explicitly and can see in the audit log.

You choose the models, and they stay yours

Inference is decoupled from recording. A small always-on detector — Tier-0 — runs motion, region selection, detection and tracking on every camera, and anything heavier is an adapter: a container that advertises what it can do and answers when asked.

That means you can run YOLOv8 on a CPU offline, swap in a better plate reader next month, or point at a cloud provider if you decide the trade is worth it. Reaching a cloud model is off unless you turn it on, and audited when you do. Model weights are fingerprinted, so a model swapped underneath a deployment is detectable rather than silent.

It answers questions

The OpenNVR Agent turns the estate into something you can ask. What’s at the back gate right now? runs a real inference on a live frame and answers from what it saw — locally, with the tool calls and their timings visible, so you can tell the difference between an answer and a guess.

What you actually get

Recording Continuous and event-based, per-camera retention, seek-to-time playback
Live video WebRTC in the browser, multi-camera wall, substreams for low bandwidth
Detection Always-on tracking on every camera with no adapter required
AI Any conformant adapter — detection, pose, plates, faces, captions, speech
Apps A one-click catalog, each app declaring what it needs and what it can reach
Governance Per-camera permissions, MFA, an encrypted credential vault, your own TLS keys, audit trail
Integration REST, WebRTC, ONVIF, RTSP, MQTT, webhooks, a NATS event bus

Everything runs in Docker. The same images run on a Raspberry Pi 5, a laptop or a rack server; the difference is how many cameras and how heavy a model.

Where to go next

To run itDocker setup is the ten-minute path, then first-time setup for the admin account and MFA.

To understand itArchitecture overview shows where each piece sits, and Platform features is the full capability list.

To build on it — the developer corner covers both SDKs: one for apps, one for publishing a model. An app is nine lines, and the platform gives it detections, a settings form, zones the operator draws, and the alert inbox. The three references are generated from the code: the App SDK, the Adapter SDK, and the operator API.

To evaluate itOpenNVR compared against Frigate, ZoneMinder, Shinobi and Verkada, and the §889 assessment for procurement.

The licence, briefly

The platform is AGPL-3.0. Both SDKs are Apache-2.0, so an app or adapter you write is yours under any licence you choose, closed included, and OpenNVR takes no fee on what you sell. The architecture is documented in a peer-reviewed paper.