OptiArms

AI workflow

A visible firearm becomes a frame, a band, and a phone ringing.

The whole path, from a camera already on the wall to a dispatcher on the phone. Ten stages, and the module behind each one.

A plaza seen through a camera view with a tracking box drawn on it

The problem

What this is for

Most buildings already have the cameras. What they do not have is anybody watching them at two in the afternoon. No camera calls for help on its own. The gap is between a weapon being visible and the right people knowing it.

The workflow

10 stages, and what runs where

Each stage names the module behind it. The chip says whether it runs on your network or ours.

  1. On the camera

    Rate every camera before it is trusted

    Each camera is measured against its own lens, resolution, and working distance. One that cannot resolve a firearm is refused rather than sold.

    coverage-advisor.ts. The floors come from sweeping a corpus across inference sizes, not from a sales conversation.

  2. On the appliance

    Analyse on your own network

    An appliance on site opens the streams and runs the detector there. Raw video never leaves the building.

    appliance/supervisor/main.ts. One process, one heartbeat, a child per camera.

  3. On the appliance

    Two looks at every frame

    The detector runs at two inference scales and folds the boxes that agree. A checkpoint is verified by sha256 before it loads.

    detector.py against models/MANIFEST.json. One pass may agree with itself at most once.

  4. On the appliance

    One subject, one track

    Boxes are associated across frames by overlap, so somebody walking a corridor stays one subject. A track reports its first frame at once.

    tracker.py and pipeline.py. Every later frame that beats the track's own peak is reported too.

  5. In the cloud

    Record everything, including what is refused

    Gates run cheapest first. A frame that trips one is written down with the reason. A quiet camera and a suppressed one look different.

    intakeDetection in alerts/engine.ts. Every refusal is a disposition on the row.

  6. In the cloud

    Evidence rises, and repetition is discounted

    Sightings accumulate and decay with time. A repeat look at one lens is worth half the last, so a recurring confuser cannot walk to certainty.

    EVIDENCE_CORRELATION_KAPPA is 0.5 in evidence.ts. A single frame still yields its own value in full.

  7. In the cloud

    A band anybody can recompute

    Possible, probable, or critical, against this camera's own thresholds. Day and night are read from the pixels rather than from a clock.

    bands.ts and lighting.py. check:detection re-derives a whole incident by hand and asserts the code agrees.

  8. In the cloud

    Two cameras, one incident

    A second lens inside the join window joins the open incident instead of paging the site twice. Pooled evidence only ever rises.

    fusion.ts. Association is time, site, and weapon class. Never appearance, never an embedding.

  9. With a person

    A person decides before police are called

    Your response mode chooses who looks first: a monitoring agent, your own reviewer, or your staff. A dispatch follows a human verdict.

    alert.verifiedEscalate. No clock in this system decides on its own to send police.

  10. In the cloud

    Reach the roster, and keep climbing

    Push, SMS, email, and voice, in the order each person set. An alert nobody answers widens to the whole roster, then asks an agent to look.

    ackStage and ackDeadlineAt on the alert row. Only a real acknowledgement stops the ladder.

A dome camera mounted under a ceiling

What it runs on

A school or district campus, running the Schools configuration. Segments are settings over one codebase, never separate products.

Your cameras

IP cameras over RTSP or ONVIF, or channels on an existing recorder. Each is rated per weapon class before it is analysed or billed.

One appliance per site

A small box on your network. It holds the detector, the camera credentials, and a spool that survives the uplink going down.

Your roster

The people who are told, the channels they take, and the rota deciding who is first. A rota can never page nobody.

A response mode

Four modes, from staff-only to a monitoring agent reviewing every frame before dispatch. Set per site, changed by an administrator.

Why this shape

What the design buys

Runs on the cameras you own

RTSP, ONVIF, and channels behind a recorder. The appliance reads what is already installed, and the advisor says which of it works.

Every band is reconstructible

Given the rows and the published constants, anybody can recompute how a band was reached. These timelines are exported into police reports.

Fails toward telling somebody

A review nobody opened escalates. A verification that times out escalates. An alert that dies silently is the failure being designed against.

Limits

What it refuses

Stated here rather than found later. Each of these is enforced somewhere in the code, not only written on a page.

A concealed weapon cannot be detected

This sees what a camera sees. A firearm in a bag, under a coat, or out of frame is not visible, so it is not detected.

Your own false-alert rate

Counted from the dismissals your people recorded, in place of a published accuracy figure.

A camera can be refused

Working distance and resolution decide what a lens resolves. A camera that cannot is not analysed, and it is not billed either.

Doors fail secure

A lockdown secures doors and can send no other signal. Releasing them is done on site, by a person.