Skip to content
Sentinel

How it works

A small agent at your site. A control plane in the cloud. Nothing inbound.

That is the whole architecture, and it is why an IT person can approve this in one sentence. The agent opens the camera streams you choose on your own network and runs detection there. What goes up is events — never the video.

No VPN. No port forwarding. No inbound firewall rule.

The shape of it

One connection, and it goes out

How a detection reaches youCameras on your network feed an agent at the site, which sends events out over HTTPS to Sentinel, which alerts you by email, webhook and the panel. Nothing connects inward.

The same five steps are listed in full beside this diagram.

  1. Your cameras stay where they are. The agent opens their streams over your own LAN — a UniFi Protect controller, an ONVIF camera, an NVR, or an RTSP URL you paste in. It forces TCP, because most generic cameras default to UDP and a lossy hop turns that into torn frames rather than a stream that visibly drops.
  2. Detection runs at the site. One always-on Windows or Linux box decodes the frames and runs the model on them. A CPU works; the agent uses an NVIDIA GPU if the machine has one, and it logs which device it chose at startup so nobody has to guess.
  3. It connects out, over HTTPS. Port 443, the same connection a browser makes. Up go events, a snapshot, a short clip and a heartbeat. Full-resolution footage stays on the premises.
  4. Nothing connects in. There is no inbound port, no VPN and no firewall rule to open. If the link drops, events queue on disk at the site and replay when it comes back — they are only deleted once the cloud has acknowledged them.
  5. You get told. Sentinel turns the event into an email or a webhook, and into a row in the panel: the feed, the health page, and your own Respond queue.

Discovery

You pick the cameras off a picture

Point the agent at a UniFi Protect controller with an API key and it lists every camera the console has, turns RTSPS on for any that has it off, and re-syncs every fifteen minutes — so a rotated token repairs itself before anyone notices.

For everything else it multicasts an ONVIF probe, asks each device what streams it offers, and takes the one nearest 720p. Never the 4K main stream: the model resizes every frame to 640px anyway, so a 4K feed is decode cost bought for nothing.

Whatever it finds arrives pending, with a thumbnail. Nothing streams and nothing is billed until someone ticks it. You name each camera off its own picture, and pick the template it starts with.

The footer counts against your plan — 8 on AI Detection, 25 on AI Detection Pro and 100 on AI Detection Pro Plus. Tick one too many and it does the arithmetic in words and refuses the whole selection, rather than activating half of it and leaving you to work out which half.

The discovered-cameras picker: a grid of camera thumbnails, each with a tick box, an editable name and a template chooser, and a footer counting the selection against the plan’s camera limit.
Cameras that produced a stream start ticked. Ones that need a password say so.

Zones, lines and schedules

Say where it matters, and when

Zones are polygons you draw on a still from the camera. The agent tests the bottom-centre of each box — where the object meets the ground — which is what keeps the public sidewalk from alerting all night.

Crossing lines take two clicks and a name. Walk the wire from start to end as you see it in the picture: something passing left to right is going in. There is a Flip button for when the arrow points the wrong way, and each line can count one direction or both.

Dwell is one number: alert if something stays this long. The clock measures time inside the zone, not time on camera, so a truck that spent ten minutes in the driveway has not been in the dock for ten minutes. Leaving stops the clock; coming back starts a new one.

Armed schedules are evaluated in the site’s own timezone, not the host’s clock, and a window closing stops detections mid-stream. An empty or unparseable schedule means always armed — a misconfiguration that silences a security camera is worse than one that produces extra events.

Confidence is per camera, because a person seen from a steep overhead angle lands at 50–75% and a global threshold would either miss them or drown you. Threshold, zone and schedule edits apply without dropping the stream.

A camera’s page with a reference frame from the camera, a zone polygon drawn over the loading bay, a crossing line across the gate with a direction arrow, and the confidence and schedule controls beside it.

Alerts

One alert per event, with the picture

Each camera tracks objects rather than frames, so the rule is once per object per zone. A parked car is reported once, not every cooldown window until dawn. The second person through the door is reported immediately instead of being swallowed by the first one’s cooldown. Someone walking from the lot into the dock is reported again, because that is the bit worth knowing.

The alert carries the snapshot with the box drawn on it. A short clip — eight seconds before the event and four after — follows a few seconds later, once the agent has the tail of it.

Every alert email carries one-click silence links: 1, 4, 8, 12 or 24 hours, without signing in. A silence is scoped to the rule and the camera, because the complaint is always "this camera keeps pestering me" and muting the whole rule would blind the front door because the garage was busy. The link opens a confirmation page rather than acting on the click — corporate mail scanners fetch the links in delivered mail, and a spam filter must never be able to silence your alerts.

Channels are email and webhooks. There is a morning digest too: one recap a day, in your timezone, of what happened overnight and what is still silenced.

An event opened from the feed: the snapshot with a detection box drawn around a person in the lot, the camera, time and confidence beside it, and the short clip above.

Health

It tells you when it cannot see

A camera that stops producing frames becomes an event, not a silence. So does an agent that goes quiet — and because that takes every camera at the site with it, the row says so in words: “Agent offline — every camera at Northside is dark.”

Health events sit in the same feed as detections and go through the same alert rules, so "the site went dark at 2am" reaches you the same way a person in the lot does.

The site health page: each camera with its last-seen time, two cameras flagged offline, and the agent’s own status above them.

Detection health

A page that refuses to flatter itself

Detection health shows the shape of what your cameras are producing from day one: volume by hour, by camera, by label, and by confidence band. That half needs no input from you.

The accuracy half is different, and this is the part worth reading. Until twenty events have actually been reviewed, the page refuses to draw a false-positive rate at all. It replaces the whole accuracy section with a note saying how many are marked and why that is not enough. A camera nobody has judged reads "not reviewed" — never 0%, because 0% reads as checked, and perfect.

Once there is enough, the threshold sweep says something you can act on: on our own test data, 0.65 cut thirteen of fifteen false positives at no cost to real detections, and 0.70 started costing them. That is the number the page exists to produce.

The detection health page: events by hour and by confidence band, with the accuracy section replaced by a note explaining that only four of twenty-seven events have been reviewed.

Respond

Your staff, your queue

If you have someone at a desk overnight, Respond is the console they work. Events arrive live. They acknowledge one to claim it, add a note, and open Who to call to see your own escalation plan — your contacts, in your order.

Closing an event asks a question rather than just filing it: confirmed threat, nothing there, or unable to verify. "Unable to verify" is a real answer and it is there on purpose — a snapshot too dark to judge is not "nothing there", and calling it that would grade the detector on somebody’s guess.

What you close as nothing feeds detection health. That is the loop this console exists to close: mark what was nothing, and the threshold sweep has something to say about your cameras rather than about cameras in general.

Your cameras, your escalation plan, your triage. Every close is written to the audit log with its finding.

The Respond console: a queue of live events, one claimed by a named member of staff, with acknowledge, note, who-to-call and close controls on the row.

Users, roles and the audit log

Who can see what, and who looked

Footage is a picture of real people, and a security product that cannot say who looked at it is not finished.

Admin

The whole tenant: sites, cameras, users, alert rules, billing. Nothing is hidden from them, and everything they change is in the audit log.

Site manager

Scoped to the sites they are assigned. They configure the cameras at those sites and see those events, and the scoping is enforced in the query layer rather than in the page.

Viewer

Read-only, and can be narrowed further to individual cameras — the guard who should see Building A and nothing else. They see the Respond queue with nothing to press.

Config changes

Every change is a row: who, what, when, and on which camera or site. Silences are revoked rather than deleted, so the record of who silenced what — and who resumed it — survives.

Footage views

Opening an event’s snapshot writes an audit row. So does playing its clip, and so does viewing a camera’s reference frame. Those rows are flagged in the log, because they are the ones a reviewer looks for first.

On the wire

What the agent sends, and what it doesn’t

The short version: enough to tell you what happened, and nothing that would let anyone watch your site from a distance.

What the Sentinel agent sends to the control plane, and what it never sends.
It sendsIt never sends

A heartbeat

Every 45 seconds by default, so a site that goes quiet is noticed rather than assumed fine.

Continuous video

Full-resolution footage is decoded and discarded at the site. There is no upload of a stream, and no recording in the cloud.

Events

What was seen, on which camera, at what time, in which zone, and how confident the model was.

Audio

The agent reads video frames. A clip is built from those frames, so it has no audio track to send.

One snapshot per event

Downscaled to 640px wide at the edge before it is sent — tens of kilobytes in practice, and the control plane refuses anything over 2 MB.

Anything from a camera you did not choose

A discovered camera sits in the picker until someone ticks it. Until then it is not in the agent’s config, so nothing opens its stream.

A short clip

Eight seconds before the event and four after, assembled from the frames the agent already had. It follows a few seconds behind the alert. You can turn clips off for a site on a weak uplink.

The camera password you give the agent

The discovery credentials in the agent’s own settings never leave that machine. A stream URL that embeds a credential is encrypted at rest in the control plane and decrypted in exactly one place.

Camera and agent status

Online, offline, reconnecting — the input for the health page.

A thumbnail of a discovered camera

One small still per camera it finds, so you can pick the ones you want off a picture instead of off an IP address. Capped at 150 KB.

What you need

Three things, and you have two of them

1 box

A small always-on Windows or Linux machine

On the same network as the cameras. A CPU works; an NVIDIA GPU is faster and the agent picks it up by itself.

443 out

Outbound HTTPS, and nothing else

One destination. No inbound port, no VPN, no firewall rule to open.

720p

A substream from each camera

Roughly 1280×720 at 10–15fps. Optional, but it is a quarter of the decode cost and detects exactly the same.

Fourteen-day trial. Prices and camera counts are on the pricing page.

Talk to our team