13 apps · Apache-2.0 SDK · no fee on app sales

Apps that ship with OpenNVR

Every deployment opens the same catalog. These 13 are first-party and install with one compose command; anything you build gets listed the same way, by a pull request against a public index.

An app never names an adapter. It declares the tasks it needs, and any adapter advertising one satisfies it — which is why swapping a plate reader for a better plate reader touches no app code. Each card below resolves its tasks against the adapters that exist today.

13 appsperimeter 4analytics 1safety 1vehicle 1automation 1notifications 1doorstep 2forensics 1integration 1

analytics

Alerts on zone occupancy threshold crossings (over / under / cleared).

runs on a stock install
needs
object_detection

automation

Opens the barrier for allowed vehicles — pulses an HTTP relay per gate camera on the LPR app's access.decided.v1 allow decisions; deny and unknown fail closed.

no AI required

doorstep

Watches a porch ROI for package arrivals, lingering boxes, and pick-ups with an owner-vs-stranger severity heuristic.

runs on a stock install
needs
object_detection

doorstep

Recognises faces at the door and keeps the People directory — family, residents, staff, contractors with expiry dates, a watchlist; strangers alert with a snapshot you can enrol from.

needs an adapter enabled
needs
face_recognition

forensics

Indexes inference events (labels + captions) into SQLite and answers natural-language footage queries like 'red truck at the dock yesterday'.

no AI required

integration

Bridges the opennvr.alerts.* fan-out into Home Assistant entities via MQTT discovery or the HA REST API, with auto-off windows so sensors read like an event log.

no AI required

asks to reach the Home Assistant host the operator configures

notifications

The guard's phone: pushes alerts at/above a severity bar to Telegram and/or any webhook (SMS gateways, Slack, sirens) — one alarm, one push, flood-safe.

no AI required

asks to reach api.telegram.org, the webhook URL the operator configures

perimeter

Alerts when a watched object sits stationary in a zone past a dwell threshold with no person nearby.

needs an adapter enabled
needs
object_detectionmulti_object_tracking

perimeter

Alerts when a watched object enters a restricted zone during restricted hours.

runs on a stock install
needs
object_detection

perimeter

Tripwire counting and alerts — tallies every tracked object crossing a drawn line per direction and hour, and alarms on each crossing, on a count threshold, or only at night.

needs an adapter enabled
needs
object_detectionmulti_object_tracking

perimeter

Alerts when a watched object dwells in a zone beyond a threshold.

runs on a stock install
needs
object_detection

safety

Checks that the guard wands every person entering — left arm, right arm, front, back — and flags what the scanner finds.

needs an adapter enabled
needs
pose_estimation

vehicle

Reads license plates via a YOLOv8 to crop to fast-plate-ocr chain and routes severity through allow/deny watchlists.

needs an adapter enabled
needs
object_detectionlicense_plate_recognition

Your app belongs here too

The SDK is Apache-2.0, so ship under any licence you like, closed included. OpenNVR takes no fee on app sales — you get the licence hook and the platform stays out of the transaction. Getting listed is a pull request against this index, not a partnership call.

A whole app

app = App("driveway-watch")
app.param("dwell_s", float, default=30.0)

@app.on_detection("person", zone="driveway",
                   dwell="$dwell_s")
def loitering(event):
    event.alert("Loitering", severity="high")