Audience mix
A rough age and gender breakdown of who passes a section or a display, sampled at an interval, to inform merchandising — without a per-face cloud fee.
Estimate age, gender and emotion per face — locally with InsightFace, or via an opt-in vision API with a monthly budget cap.
Interface preview coming soon
Understanding who is in front of a camera — rough age band, gender split, mood — usually means a paid cloud analytics contract. Demography does it on an open local model you own, at an interval you set, and only optionally routes snapshots to a vision API when you decide the cost is worth it.
A rough age and gender breakdown of who passes a section or a display, sampled at an interval, to inform merchandising — without a per-face cloud fee.
Estimate the demographic and mood of viewers in front of a screen to measure engagement, with no identity stored — just aggregate age / gender / emotion.
Sample the crowd periodically for an aggregate profile of attendees over a day or an event.
A worker samples the live stream over HLS at your configured interval. You can draw an optional region of interest on a live frame so only faces inside it are analysed.
By default InsightFace (buffalo_l) runs locally for age, gender and emotion. Switch the engine to OpenAI or DeepSeek to send snapshots to a vision API instead, guarded by a monthly budget cap that hard-stops over spend.
Each face emits demography.face with age, age range, gender, emotion and the engine used, through the app's HMAC-signed callbacks (webhook + MQTT).
Recent faces show in the app tab; every record persists in the app's own demography database for your aggregate reporting.
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.
Numbers are the plugin authors' honest measurements, not marketing. GPU is optional on every vision plugin except where noted.
Every Studio app is a first-class application, not a config modal — and it does not have to live inside StreamHub.
Opens as its own page inside the tenant app — zones, live panels, history and settings on one surface, not squeezed into a dialog.
Keeps its state in a dedicated per-app SQLite database — reads, alerts, occupancy and evidence rows — that you own and can query.
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.
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.