The whole job of a perimeter intent alert is to suppress every customer with a valid code.
A self-storage facility on a normal Tuesday night runs 50 to 200 person-detected events between 18:00 and 23:00. Almost all of them are customers with valid codes pulling things in and out of their units. An alerting layer that fires on every one of those is muted by Friday of week one. The job of an intent classifier on a self-storage perimeter is to silence those events and to fire only on the small number of patterns that do not correlate with a keypad open.
That comes down to two checks. Which side of the fence polygon the tracked centroid is on, and whether the same track has a matching keypad event in the prior 90 seconds. The rest of this page walks through how those two checks are wired, the four perimeter patterns that survive them, and what it costs to retrofit onto a recorder that is already in the office today.
A self-storage perimeter intent alert fires only when one of two things is true: (1) a tracked centroid lands outside the fence polygon with dwell over the configured threshold (30 seconds for a person, 60 seconds for a vehicle), or (2) it lands inside the fence with no matching keypad event in the prior 90 seconds. A third path overrides both: any of four elevated postures (hands-on-fence-with-tools, throwing-over, climbing-prep, masked-at-perimeter) fires HIGH immediately. Every customer who entered the gate with a valid code is suppressed by check (2), because their track originates at the keypad and the controller log carries the open event. The decision runs on an edge box that plugs into the recorder over HDMI, no camera replacement, no cloud round-trip.
What the recorder already has, and what the intent layer adds on top
Most self-storage facilities run an analog DVR or a low-end IP NVR with 8 to 32 channels. The recorder is wired to a wall display in the office over HDMI, painting every camera onto a 3x3 or 4x4 multiview composite. The intent layer plugs into that HDMI output and reads the same composite the office staff sees. Nothing changes about the cameras, the coax, the storage drives, or the existing remote viewing app. The intent layer is a single box on the desk next to the recorder.
What the recorder cannot do today is correlate a person on the inside of the fence with a keypad open at the gate, because the recorder has no connection to the keypad controller. The keypad lives on its own serial or IP loop, and the controller log is a separate file the office manager opens once a week to investigate complaints. The intent layer subscribes to that log live and uses it to silence the legitimate population.
Perimeter event flow on a self-storage site
The four perimeter patterns that survive both checks
Once the keypad correlation is suppressing every legitimate visit and the posture overrides are catching the obvious tool-and-climb cases, four patterns are left over. These are the ones that page on-call. Each one reads slightly differently in the camera feed and each one has its own failure mode. The reason to enumerate all four explicitly is that the tuning conversation in week two of operation is always about which of these four was the source of last night's false HIGH, and the right answer needs to name the pattern.
Person on the wrong side of the fence with no keypad in 90 seconds
The classic climb-in. A track appears on the inside of the polygon, the bounding-box centroid is inside, and the keypad correlation step returns no match for any code in the prior 90 seconds. There is no way a customer is inside the perimeter without that match. Either someone came over the fence, came under a section of fabric, or piggybacked through the gate behind a paying customer that left over 90 seconds ago. The pipeline routes this to climb-in and pages on-call. False positives here are usually a misdrawn polygon that clips a corner of the gate area, which the operator catches the first time a known customer trips it and adjusts the polygon by 10 to 15 pixels.
Vehicle dwelling outside the fence over 60 seconds without approaching the keypad
The casing pattern. A vehicle pulls up on the public side of the perimeter and parks. Sixty seconds later it has not moved toward the keypad. Two minutes later it is still there. Either it is a rideshare driver dropping a passenger off (rare on a self-storage lot) or a vehicle whose occupants are watching the property. The pipeline routes this to scouting. The dwell threshold of 60 seconds is what lets a customer waiting for the gate to open after entering their code pass through unflagged. Operators who run busy facilities with regular semi-truck traffic at the gate sometimes raise the threshold to 90 seconds for the camera that covers the truck-approach lane.
Person on foot dwelling at the fence line over 30 seconds
The fence-line scout. A person on foot stops at the perimeter and stays there. They might be testing how high the fence is. They might be tracing it to find a section that is loose or a corner that is hidden from the office. They might be looking for a camera blind spot. A jogger on the public sidewalk is gone in under 4 seconds. A neighbor walking a dog is gone in under 12. A person who is still at the fence at the 30-second mark is doing something that does not have a benign explanation on a self-storage lot. This pattern often precedes a Pattern 1 climb-in by two to seven days, and catching it at the dwell stage is the difference between a paged investigation and a paged incident.
Elevated posture override at the fence regardless of dwell
The four postures that bypass every other check: hands-on-fence-with-tools, throwing-over, climbing-prep, and masked-at-perimeter. These do not wait for the dwell timer. The moment a posture classifier returns one of the four labels with confidence above the per-posture threshold, the pipeline routes the event to elevated-posture and pages on-call. The reason this is its own track instead of a dwell-promotion rule: a determined attacker can be over a 6-foot chain link in under 8 seconds, which is below the default dwell threshold of 30. Waiting on dwell would mean watching a climb-in happen and paging the operator after the fact. The posture overrides exist to fire during the climb, not after.
How the fence polygon and the keypad feed are configured
One config row per camera that sees the perimeter. The polygon is a list of pixel coordinates on the recorder's multiview output, captured at install by clicking the corners of the fence in the on-screen camera tile. The keypad feed is a vendor identifier (PTI, OpenTech, Storlogix, Sentinel, or none for sites without a controller) and a port. The dwell thresholds and the posture override list are tunable per camera, so a front-gate camera with regular semi-truck traffic can run a 90-second vehicle dwell while the back-corner camera that watches an empty alley can run the default 60.
The actual decision function is short. Posture override first, side of the polygon second, dwell threshold for outside, keypad correlation for inside. Anything that survives the function is what the operator phone rings on.
What the volume reduction looks like on a real Tuesday night
The numbers below are illustrative for a single mid-size facility (about 450 units, 8 cameras around the perimeter, keypad gate access from 06:00 to 22:00) on a normal Tuesday between 18:00 and 23:00. Object-only motion alerts are what most legacy DVRs and basic AI bolt-ons emit. Intent-classified alerts are what the two-check classifier emits with the keypad feed wired in. Both are firing on the same camera feeds.
Two of the four pages were Pattern 1 climb-ins (one was the maintenance tech who showed up unscheduled and the keypad code had been deactivated; one was an actual unauthorized entry). One was a Pattern 2 vehicle-dwelling casing event that resolved itself when the vehicle drove off after 4 minutes. One was a Pattern 4 climbing-prep posture that turned out to be a kid jumping the fence to retrieve a soccer ball. None of those four outcomes are catastrophic, and all four are the kind of event the operator wants to see, not the kind they want to mute. That is the whole bar.
Failure modes worth being honest about
Two failure modes show up regularly in week one of operation and both are worth naming so the operator does not interpret them as the system being broken.
False HIGH from a misdrawn polygon. The polygon is drawn at install on a still frame from the recorder. If the camera has been bumped between install and steady state, or if the polygon was clipped a few pixels short of the fence, customers walking the inside-of-fence pathway in front of their unit can register as outside-the-fence. The first false HIGH from this mode is usually a known customer at a known unit, which makes it trivial to diagnose. Re-drawing the polygon takes under a minute on the office laptop.
Suppressed climb-in from a piggybacked entry. If a paying customer drives in and a second vehicle follows close enough that the gate has not yet started to close, both vehicles are inside the fence and only one keypad event was logged. The second vehicle's track does correlate with a keypad event in the prior 90 seconds, even though that event was not its own. The mitigation is the per-track keypad lookup, which only marks a code as consumed when the first track to enter through the gate associates with it. Tracks that arrive after that window with the same code already-consumed bit set fire climb-in. This logic adds one small piece of bookkeeping to the keypad ring buffer, and it is on by default in the standard config.
See it run on your recorder
Bring the make, model, and channel count of the DVR or NVR you have today. We will show how the fence polygon and the keypad feed wire up, and what the first 24 hours of intent-classified alerts look like on your site.
Questions self-storage operators ask before installing this
Frequently asked questions
What is a perimeter intent alert at a self-storage facility?
A perimeter intent alert is a notification that fires only when an observed track at the fence line is classified as either climb-in or scouting. The classification reads two checks at the moment of detection: which side of the fence polygon the bounding-box centroid is on (inside or outside), and whether the same track has a matching keypad event at the gate in the prior 90 seconds. A customer who pulls up to the keypad, types their code, and drives in, generates a track that originates at the keypad reader and crosses the gate during the green-light window. That track is suppressed. A person who scales the fence in the back lot generates a track that appears on the inside of the fence with no keypad correlation in the prior 90 seconds. That track pages on-call. Every self-storage facility has both populations on a normal Tuesday night. The intent layer is the difference between getting paged and getting paged at the right moment.
Why do object-only motion alerts collapse at a self-storage site by week two?
Because most self-storage facilities run 24-hour gate access via keypad, and a fully legitimate customer base will trigger 50 to 200 person-detected events on any given Tuesday night between 18:00 and 23:00. The detector is doing its job. It is firing on every customer pulling a couch out of unit 412 at 21:45. The phone buzzes for the customer pulling skis out of climate-controlled at 19:30. The phone buzzes for the locksmith at the gate at 22:15 who was scheduled by the office. By Friday of week one the operator has stopped opening the alerts. By week two they have muted the channel. By week three the system is a recording archive again. The only way to keep the operator engaged is to suppress every alert that the keypad logs already explained.
How does the system know a person is on the wrong side of the fence?
At install, the technician draws a polygon around the inside of the fence on the recorder's HDMI multiview output, one polygon per camera that sees the perimeter. The polygon is stored as a per-camera config row: an array of pixel coordinates that close back on the first point, plus a side label (inside or outside). At runtime, the per-frame detector emits a bounding box on every detected person or vehicle. The centroid of that box is tested against the polygon using a standard point-in-polygon ray-cast. If the centroid is inside and the track was first seen inside, the system trusts the keypad correlation step. If the centroid is outside the polygon and the track has been there for over the configured dwell threshold (typically 30 seconds for a perimeter zone), the system fires scouting. If the centroid is inside and there is no keypad event in the prior 90 seconds for any of the active codes, the system fires climb-in.
What is the keypad event correlation, and what happens when there is no keypad system?
Most self-storage gates run on a keypad controller from one of the common access vendors (PTI, OpenTech, Storlogix, Sentinel). The controller logs every code entry with a timestamp and a unit identifier. The intent layer subscribes to the controller log over a local serial or IP feed and keeps a 90-second ring buffer of valid codes that opened the gate. When a track appears on the inside of the fence polygon, the system asks one question: is there a keypad open in the last 90 seconds for any unit? If yes, suppress. If no, page. When there is no keypad system at all (a small operator with a manual rolling gate during business hours, or a gate that has been broken for a month), the correlation step is skipped and the inside-fence detection becomes a time-of-day rule instead. Outside business hours, anyone inside the fence is high threat by default. Inside business hours, only the perimeter checks and the elevated posture rules fire.
What is the dwell threshold for a perimeter zone, and how is it tuned?
The default dwell threshold for a perimeter zone is 30 seconds for a person on foot and 60 seconds for a vehicle. The reasoning: a person walking past the property on the public sidewalk crosses the camera frame in 6 to 12 seconds. A jogger does it in under 4. A delivery driver pulling up to the gate spends roughly 15 to 25 seconds at the keypad. Anything longer than 30 seconds spent at the fence line, by a person who is not entering through the gate, is the start of a scouting pattern. For vehicles the threshold is 60 seconds because a customer waiting for the gate to open after entering their code spends 20 to 40 seconds idling at the gate. A vehicle parked outside the perimeter for over 60 seconds, especially one that has not approached the keypad, is the start of a casing pattern. Both numbers are tunable per camera. The metric the operator should track is the seven-day rolling false-HIGH rate; below 1 per camera per week is the tolerance most ops teams hold for staying engaged with the stream.
What postures fire HIGH threat at the fence regardless of dwell?
Four postures override every other input and fire HIGH immediately. (1) Hands-on-fence-with-tools: the bounding box geometry shows arms raised at the fence line and the carry classifier returns a non-empty hand signature (bolt cutter, angle grinder, ladder rung). (2) Throwing-over: the trajectory of a tracked secondary object (a bag, a drill, a tire) crosses the fence line from one side to the other while a person stands at the fence. (3) Climbing-prep: posture sequence of one foot off ground with hand contact at the top rail, even for under 5 seconds. (4) Masked-at-perimeter: the face classifier returns covered or non-detected for a person dwelling at the fence line for over 15 seconds. Any of these four overrides the keypad correlation entirely. A customer with a valid code does not climb the fence to enter. A maintenance vendor does not throw a duffel bag over a chain link.
Does the perimeter intent layer need cloud compute to run?
No. The whole pipeline runs on the same on-device accelerator that does the per-frame detection. A typical edge unit handles up to 25 camera tiles in parallel, runs object detection at composite frame rate, accumulates dwell across a small ring buffer, looks up the fence polygon and the keypad correlation from local config, runs posture inference on the bounding-box crops that matter, and emits the classified event in well under a second end to end. For a self-storage operator, the practical implication is that no footage leaves the building, the alert latency does not depend on the cellular uplink at the property, and the cost is a one-time hardware spend plus a flat monthly software fee, not a per-camera cloud inference bill. The Cyrano edge unit specifically is $450 one-time and $200 per month from month two, plugs into the recorder over HDMI, and supports up to 25 feeds.
Can this retrofit onto an existing analog DVR or older NVR without replacing cameras?
Yes, and that is the whole point. The recorder is already drawing every camera onto a multiview composite for the wall display. An edge box reads that HDMI output, splits it into per-tile crops using a fixed tile-grid template captured at install (2x2, 3x3, 4x4, or 5x5), and runs the detection plus intent stack on each tile. Cameras stay. Coax stays. Recorder stays. The only new piece of hardware is the edge box, and it plugs in with one HDMI cable. Install on site is roughly two minutes. The fence polygon and keypad correlation step are software on top of the detection layer the box was going to run anyway. Operators who are running a five-year-old Hikvision or Dahua DVR with 16 channels of analog get the same intent layer as operators on a brand-new IP NVR.
How is this different from the alerts a typical self-storage gate vendor already offers?
Gate vendors (PTI, OpenTech, Storlogix, Sentinel) alert on access events: invalid code attempts, gate forced open, gate held open too long, after-hours entry. Those alerts read the keypad and the gate switch. They do not read the cameras. They cannot see a person who scaled the fence in the back lot, because the back lot has no gate switch and no keypad. They cannot see a vehicle parked outside the perimeter for an hour, because nobody tried to enter through the gate. They cannot see a person at the fence with bolt cutters until the moment the cutters meet the chain link, and even then only if the cut triggers a separate fence-mounted sensor. The perimeter intent layer reads the cameras the operator already has on the property and answers a different question: is anyone where they should not be, and what are they doing about it.
What is the cost comparison versus hiring a guard for after-hours patrols?
A live unarmed guard from a regional security service runs roughly $25 to $40 per hour in most US markets. For after-hours-only coverage from 19:00 to 07:00 (12 hours per day), that is roughly $9,000 to $14,400 per month per facility. A roving patrol service that swings by every hour or two for a 5-minute walk-through runs $400 to $1,200 per month and catches an incident only if the incident happens during the 5-minute window. The Cyrano edge unit is $450 upfront and $200 per month from month two, watches every camera tile in real time for the full 12-hour after-hours window, and pages on-call the moment a perimeter event clears the intent classifier. The math typically pencils for the operator after the first paged event that did not become a claim.
Related guides
AI security camera intent alerts: the six-input decision
The canonical breakdown of class, zone, time, dwell, badge, and posture, recalibrated here for self-storage perimeters.
Apartment trespassing detection real-time alerts
How the same intent stack handles the multifamily case where tenants are on-site at every hour.
AI upgrade for existing CCTV without camera replacement
Why the HDMI multiview retrofit is the cheapest way to add intent classification to a recorder you already own.
Comments (••)
Leave a comment to see what others are saying.Public and anonymous. No signup.