Draw the line.We'll watch it 24/7.
Polygon zones with class filters, schedules, and optional PLC handshake for automated e-stop. Catch forklift-pedestrian conflicts, after-hours perimeter breaches, and press-cell incursions before they become incidents.
The worst incidents happen where no one is watching.
Control rooms are shared. Alarms are noisy. Light curtains catch the body after it's already inside the cell.
Four primitives cover every zone we've ever been asked to watch.
Zones, classes, schedules, and an optional PLC handshake. Compose them into rules without writing code.
Polygon zones on any feed
Draw as many zones as you need per camera. Scale to PTZ presets. Version-control every shape.
Class filters
Forbid person, vehicle, or forklift independently — or combine. Allow-lists for known equipment.
Schedules & gating
Activate rules by time-of-day, shift, or PLC input. Exclusion zones that only apply when the cell is running.
PLC handshake (optional)
Siemens S7 and Modbus TCP digital outputs. Trip a beacon, pause a line, or assert e-stop — on-appliance.
Technical measurements, not marketing copy.
Lab-measured figures on reference hardware. Pilot-stage deployment numbers will replace these once available.
Three rules, copy-paste-ready.
Visual editor in the UI — YAML export for version control and OT peer review.
rule: zone-forklift-lane
area: polygon("Forklift Lane A")
schedule: always
forbidden_class: person
allowed_class: forklift
min_confidence: 0.82
dwell_seconds: 1
on_violation:
- notify: teams("#ops-dc-03")
- plc_out: "lane_a.amber_beacon"
- snapshot: s3://evidence/zones/rule: zone-press-cell-5
area: polygon("Press 5 Exclusion")
forbidden_class: person
when:
plc_in: "press5.cycle_active" # Siemens S7
dwell_seconds: 0
on_violation:
- plc_out: "press5.estop"
- notify: teams("#press-ops")
- log: siem("safety.press5")rule: zone-perimeter-night
area: polygon("East Perimeter")
schedule: daily 22:00-05:30
forbidden_class: person, vehicle
dwell_seconds: 3
on_violation:
- notify: sms("on-call-security")
- escalate_after: 90s
- snapshot: s3://evidence/zones/The model that ships with every zone-intrusion release bundle.
Every release bundle carries a signed model card and datasheet. The cross-repo contract below is what the on-appliance inference stack enforces at load time.
| Architecture | RF-DETR-Nano detector + BYTETrack multi-object tracker Detection in a single forward pass; association across frames keeps the track identity stable through occlusions. |
| ONNX signature | input: 1x3x640x640 · output: detection boxes + class probs Frozen across releases — changing it requires a coordinated core-library update. |
| Classes used | person, forklift, agv, pallet-jack, vehicle, negative-background. Zone-intrusion rules filter by class and apply per-zone dwell thresholds. |
| Entry-to-alert latency | < 150 ms to PLC digital-out, lab-measured. Class recognition included; no cloud hop. Field-measured latencies pending first pilot. |
| PLC handshake | Siemens S7, Allen-Bradley CIP, Modbus/TCP, OPC-UA. Outbound write to a digital coil or OPC-UA tag; optional inbound interlock read. |
| Weight provenance | Allowlisted sources only — Apache-2.0 or MIT. Training refuses to start if the base checkpoint is not in configs/weight_allowlist.yaml. |
Entry → PLC output, measured in milliseconds.
Events flow from the camera through the on-appliance event bus to your operator tooling. Everything stays on-premise until the last hop.
What continuous monitoring replaces, in labour hours.
A conservative calculator. Adjust the inputs to your reality. The only number that appears is the one your inputs produce.
formula: (minutes × checks × days / 60) × €/h
Incident-cost avoidance and regulatory-fine exposure are NOT included — those are customer-specific and the founder does not publish estimates without real pilot data.
Mark the zone. Sleep better.
Send us a clip of the area you need watched. We'll draw the zones and return a live preview running on your actual footage.
PLC handshake covered by our OT integration SOW — signed off by site electrical before go-live.