Back to News & Insights
Artificial Intelligence September 26, 2026 ยท 5 min read

Okay, I've been sitting on this post for a while and I'm finally writing it. ๐Ÿ˜„

For months now I've been working on OpenNVR, an open-source NVR (network video recorder) for IP...

Okay, I've been sitting on this post for a while and I'm finally writing it. ๐Ÿ˜„

For months now I've been working on OpenNVR, an open-source NVR (network video recorder) for IP cameras. And the part I'm most excited about: you can literally ask your cameras questions, and the AI answering you runs on your own machine. Not some vendor's cloud. Yours.

Think about how most cameras work today. You buy one, it connects to the manufacturer's cloud, and your footage goes... somewhere. They hold the keys. They run the AI. If they get breached, you get breached.

And this isn't hypothetical. In 2016 the Mirai botnet took over hundreds of thousands of IP cameras and used them for one of the biggest DDoS attacks ever. In 2021 someone got into a camera vendor's cloud and could watch around 150,000 cameras, in hospitals, schools, prisons.

That always bothered me. A camera in your house should work for you. So OpenNVR is built the other way round: your cameras, your hardware, your AI, and nothing leaves the box unless you decide it should.

You get a small setup wizard. Every question already has a default, so honestly you can just keep pressing Enter. At the end it gives you a URL and a one-time token. Open it, set a password, add a camera, and in about 30 seconds you'll see detection boxes on your live feed.

I'll be honest though: the first run takes 8 to 15 minutes because it's downloading Docker images. Go get a chai. โ˜• After that it starts in seconds.

Don't have an IP camera? No problem. The camera agent can use your laptop webcam, or you can install the OpenNVR Cam app on an old Android phone and it becomes a real ONVIF camera.

This is the thing I show everyone first. There's a camera agent: a small local LLM (Ollama, qwen2.5:1.5b by default) that can call vision tools on your live cameras. So you can ask things like: "Is anyone in the kitchen?" and it runs YOLOv8 on the current frame "What's at the back gate?" and it describes the scene "Did anyone walk past in the last ten minutes?" and it checks recent events "Did a red truck come by earlier?" and it searches the history

You can use it by voice (Whisper listens, Piper talks back) or just type with --chat. Both run on a normal CPU. No API keys, no account.

Recording never depends on the AI. Video gets recorded in one-minute chunks no matter what. If every model crashes, your footage is still there. This part has to be boring, and it is.

A cheap detector decides when the expensive stuff runs. A small model watches a low frame rate copy of each stream. Only when it sees something interesting does it wake up the heavy models like face recognition or plate reading. That's how the whole thing fits on a mini PC.

Models and rules are separate. Models answer "what is this?". Apps answer "should I care?" (this zone, these hours, this plate list). So you can swap a model without rewriting your rules.

One place for history. Everything worth remembering goes into one event store, so "was a red van here on Tuesday?" gives the same answer from the search page, the agent, or an app you install next month.

This is the developer part I love. If your model sits behind a REST or WebSocket endpoint, it can plug into OpenNVR. A trimmed down version looks like this:

Run it with uvicorn, register the URL, done. The SDK is Apache-2.0, so your adapter can use whatever license you want. Full version is in the SDK README.

Once it's running there's an App Catalog with thirteen one-click apps: number plate recognition, a doorbell that recognises faces, intrusion zones, loitering, people counting, line crossing, abandoned objects, package delivery, gate control, "find the red truck" footage search, alert routing, a Home Assistant bridge, and more.

Each app has to say up front which cameras and network hosts it needs, and an admin approves that before install. No app can quietly get access it never asked for.

Want to write your own? pip install opennvr-app-sdk && opennvr-app new my-app gives you a starter where you fill in one method: your rule.

Want to discuss this further?

Book a free strategy call with our team to see how these insights apply to your specific business goals.

Book a consultation