OpenNVR
AI Platform

The AI NVR you actually control.

Most "AI cameras" run the vendor's model, in the vendor's cloud, on the vendor's terms. OpenNVR is the opposite: any model behind an endpoint becomes a first-class detector through an open contract, everything runs on your hardware by default — and you can just ask your cameras what they see.

Bring your own model

The AI Adapter Contract is a published wire spec: wrap any model — ONNX, PyTorch, a cloud endpoint, something you fine-tuned on your own data — in about thirty lines of Python with the Apache-2.0 SDK, and OpenNVR treats it as a native capability. No forking the core, no waiting on a vendor roadmap. Ship your adapter under any licence you choose, including proprietary or classified.

Seven adapters ship out of the box as reference implementations: YOLOv8 object detection, ByteTrack tracking, InsightFace recognition, fast-plate-ocr for licence plates, BLIP scene captioning, Whisper speech-to-text, and Piper text-to-speech.

Talk to your cameras

Ask out loud — "is there a person at the front door?" — and a local LLM answers, grounded in a live frame from that camera, spoken back to you. Whisper transcribes, an Ollama-hosted model with tool-calling runs YOLOv8 and BLIP on the frame, and Piper speaks the reply. No cloud, no API keys, running on the same box that records your footage.

Local by default, cloud only if you say so

An AI NVR shouldn't quietly stream your footage to someone else's GPU. Under OpenNVR's default local_only sovereignty policy, any adapter that declares network egress is refused registration outright. Cloud providers like Hugging Face are supported — as an explicit, audited opt-in. You decide what, if anything, leaves the building, and the audit log proves it.

Build a real application, not just detections

Detections are the easy part; the value is what you build on them. OpenNVR ships seven example apps — intrusion detection, loitering, licence-plate watchlists, a smart doorbell, package-delivery tracking, the voice agent, and a Home Assistant bridge — each a copy-as-template starting point. Replace the predicate with your own logic and you have a domain-specific AI NVR.