All Studio apps
Vision & CCTV Edge

Occupancy

zones · sessions

Track how many people or vehicles are inside each zone, how long they stay, and alert when a zone stays over its limit.

streamhub.studio/studio/occupancy

Interface preview coming soon

The problem

Counting a total across a whole frame hides what you actually care about: which area is busy, for how long, and whether it is over capacity right now. Occupancy answers that per zone — a waiting room, a parking bay, a queue lane — with live dwell sessions and a limit alert, straight off the camera you already have.

Use cases

Retail / Venues

Zone dwell & capacity

Mark a queue lane, a waiting area or a section and watch live occupancy; an alert fires when a zone stays over its limit past a configurable dwell, so staff can open a till or a second lane.

Parking / Logistics

Bay & spot occupancy

Switch a zone to detect vehicles instead of people to see which bays or spots are taken and how long each stay lasts — no in-ground sensors.

Workplace

Space utilisation

Session start/end per zone builds an honest picture of how meeting rooms, desks or common areas are actually used over the day.

How it works

Input

Live HLS + polygon zones

A worker samples the app's live stream over HLS with an adaptive sampler. You draw multi-point polygon zones on a live frame in the dashboard and tag each one; geometry persists per stream as normalized points.

Detect

YOLO11 + ByteTrack sessions

Person or vehicle detection with ByteTrack tracking opens a dwell session when a track enters a zone and closes it when it leaves — with a count-based alert when a zone stays over its limit.

Signed callback

session_started / ended / alert

occupancy.session_started, occupancy.session_ended and occupancy.alert flow through the app's HMAC-signed callbacks (webhook + MQTT), each carrying the zone, its tag and the kind counted.

Your system

Overview + your workflow

Live sessions and today's events show in the app tab; every session persists in the app's own occupancy database for your reporting and escalation.

Events it emits

Declared in the plugin manifest and relayed through the app's HMAC-signed callbacks (webhook + MQTT). Anything a worker tries to emit that is not on this list is rejected — no core-event spoofing.

occupancy.session_started occupancy.session_ended occupancy.alert

Scope & limits

  • It counts presence inside a zone — not identity or activity. Per-stream zone geometry, tags and thresholds resolve as model defaults → tag config → per-stream override.
  • Camera placement drives accuracy: an overhead or high-angle view of the zone counts reliably; frontal, low-angle or heavily occluded views miss.
  • Runs co-located on the master or distributed per-stream on edge nodes — one worker per stream, scheduled onto whichever node has capacity.

Minimum requirements

  • CPU-only is fine for a handful of streams: YOLO11 resizes to 640 px regardless of source, so budget ~0.5 core per stream plus HLS decode headroom.
  • RAM: ~1.5 GB per worker (CPU torch + ultralytics + opencv). The yolo11n weights (~6 MB) auto-download on first run.
  • GPU optional: any CUDA GPU drops inference under 10 ms/frame — budget ~200 MB VRAM per stream when you distribute onto a GPU edge node.

Numbers are the plugin authors' honest measurements, not marketing. GPU is optional on every vision plugin except where noted.

Runs as a full app

Every Studio app is a first-class application, not a config modal — and it does not have to live inside StreamHub.

Full-page dashboard view

Opens as its own page inside the tenant app — zones, live panels, history and settings on one surface, not squeezed into a dialog.

Its own database

Keeps its state in a dedicated per-app SQLite database — reads, alerts, occupancy and evidence rows — that you own and can query.

Exportable bundle

Download the app as a self-contained bundle — worker, Dockerfile, compose and an env template — to self-host on your own infra and extend, talking back over the REST API and signed webhooks.

Have cameras or streams to put to work?

Tell us what you are monitoring and we will scope the right apps, wire them into your systems and run them with you. The software is open source — the deployment and operation is what we do.