Skip to content

OpenNVR App SDK

Build a vision app on OpenNVR, the self-hosted AI video platform. Cameras, always-on detection, pluggable inference, an event bus, recordings, an operator alert inbox, users with per-camera permissions, and a catalog every deployment opens — all already running. You write the rule, the model or the workflow; this package is the only import you need.

pip install opennvr-app-sdk

Apache-2.0. Ship your app under any licence, closed included, with no fee to OpenNVR — see Licensing for why that holds even though the platform core is AGPL.

A whole app

from opennvr_app_sdk import App

app = App("driveway-watch", name="Driveway Watch", category="perimeter")
app.param("dwell_s", float, default=30.0)

@app.on_detection("person", zone="driveway", dwell="$dwell_s")
def loitering(event):
    event.alert(f"Person loitering on {event.camera}", severity="high")

if __name__ == "__main__":
    raise SystemExit(app.run())

That app subscribes to the platform's detections, serves the registry contract (/health, /manifest, /state, /openapi.json, config form, actions), registers itself in the App Catalog, is issued its own credential, and fires alerts that reach the operator inbox — none of which you wrote. The zone becomes an editor the operator draws on a camera still; the dwell timer, the once-per-episode latch, the alert envelope and the config file are the SDK's.

Where to go next

  • Quickstart — a running app in about ten minutes, with no broker and no Docker.
  • Concepts — the four archetypes, and how to pick one.
  • Cookbook — one runnable example per class.
  • API reference — every export, in tiers.
  • Specs — the OpenAPI and AsyncAPI your app publishes.

The deal for developers

OpenNVR takes no fee on apps. Your app is yours, under your licence, at your price; the platform gives you the licence hook and stays out of the transaction. See Selling an app and the developer program.