App Catalog
The App Catalog (titled App Store in the app) is where you install and run detector apps built on the OpenNVR App SDK. Each app subscribes to the platform’s inference stream and turns raw detections into higher-level events (intrusion, loitering, license-plate reads, and so on). You’ll find it under AI & Detections → App Catalog in the sidebar.
[!NOTE] This tab requires the
ai.viewpermission. One-click install and uninstall are opt-in and gated by theapps.installpermission — if they’re disabled or you lack permission, the app shows the manual install command to run on your host instead.

What you can do here
- Browse two groups: Installed apps and Available to install.
- Install an app (one-click when enabled, otherwise copy the command / compose to run on your host).
- Enable / Disable, Configure, and Uninstall installed apps.
- Open an app’s own full-page dashboard (live state, quick actions).
- Configure app parameters, including drawing detection zones and tripwires, setting time windows, and managing chip lists (e.g. plate watchlists).
Each card checks its required AI tasks against the tasks advertised by adapters registered with KAI-C, so a green “requires … — available” badge means the backing model is present; a yellow “requires … — not installed” badge means it isn’t.
Install an app
- In Available to install, find the app and click Install.
- The Install dialog offers Install (one-click) — this POSTs an install intent that the reconciler applies. Status shows as
pending→applied(orfailed). - If one-click is disabled or unpermitted (a normal, expected path), copy the Command or docker-compose.yml shown and run it on your OpenNVR host. The app self-registers and appears under Installed.
- Click Done.
[!NOTE] An install intent can sit
pendingif the opt-in app-installer service isn’t running. After ~5 minutes the UI stops polling and hints that the installer may not be running — fall back to the command shown.
Enable, configure, and uninstall
On an Installed card:
- Enable / Disable — toggles the app. First enable takes you straight to the app’s own page.
- Configure — opens the config form (see below).
- Check — probes the app’s health and shows a status badge; refresh with the ↻ icon.
- Manifest-declared action buttons appear here too (enabled only when the app is enabled).
- Uninstall — asks the reconciler to remove the app (confirmation required).
Click the app name to open its full-page view with a Live dashboard, Quick actions, and an About panel (emitted events, contract URL).
Configure an app
Click Configure to open Configure
Parameter controls you’ll encounter:
| Parameter type | Editor |
|---|---|
int / float |
Number input |
bool |
Checkbox (Enabled) |
string |
Text input |
list (of strings) |
Chip list editor (see below) |
time_range |
Time-window picker (see below) |
geometry.polygon |
Zone drawing editor (see below) |
geometry.tripwire |
Tripwire drawing editor (see below) |
other / dict / json / per-camera |
JSON textarea |
Draw a zone (geometry.polygon)
The geometry editor lets you draw directly on a live camera still (it falls back to a grid if the camera is offline). Coordinates are stored normalized 0–1 and keyed per camera.
- Pick a camera from the Camera selector (a
✓marks cameras that already have geometry). - Click on the image to add polygon points — you need at least 3.
- Drag a point to move it; double-click a point to delete it.
- Clear removes this camera’s zone.
Draw a tripwire (geometry.tripwire)
- Pick a camera.
- Click to set the line (first click sets point A, second sets B); drag the A/B endpoints to adjust.
- Choose a count direction: both ways, A→B, or B→A.
Set a time window (time_range)
Used for things like an intrusion app’s restricted hours. Pick a start and end time. A window where start > end (e.g. 22:00 to 06:00) is treated as overnight — spans midnight; setting start = end means the whole day.
Edit a chip list (list)
Used for plate watchlists, watched labels, and similar. Type a value and press Enter or comma to add a chip; click × to remove one. You can paste a comma- or newline-separated batch to add several at once.
[!TIP] Geometry, time-window, and chip-list values are all stored as the same JSON shapes the app already consumes — the editors just save you from hand-typing coordinates or arrays.
📸 Screenshots to capture
Save these to opennvr-site/public/screenshots/:
app-catalog-overview.png— the App Store with the Installed and Available to install groups.app-catalog-install-dialog.png— the Install dialog showing one-click plus the command / compose fallback.app-catalog-config-geometry.png— the Configure modal with the polygon/tripwire geometry editor drawing on a camera still.app-catalog-app-view.png— an app’s full-page view with its Live dashboard and Quick actions.