AI defence work

Vigil

Perception software. It watches live video, decides what is happening, grades how serious it is, and keeps the clip that proves it. It does not identify anybody, and that is deliberate.

Vigil · the wall

Preview

Every camera on one wall. One line each.

This is the screen Vigil reports to. Each camera sits on the wall with a single line under it — all clear, watching someone, or reported — so a wall of feeds is read at a glance instead of watched. Open a camera and it shows who it is looking at, and why.

An operator at night in front of a video wall showing the Vigil wall: six camera tiles, one watching a person in yellow and one with a red report.
A laptop on a desk at night showing one camera opened on the wall, with a red report card beside the picture.
A tablet held in a city square at dusk showing the wall of cameras, with a security camera on the building behind.

Green, yellow, red

One word per camera. Green is the answer almost every street gives almost all of the time; yellow means it is watching one person; red means it has reported, and it says what it saw.

Open a camera

The picture fills the screen and every person keeps a number. The panel beside it says what the AI is doing there in one card, and the button on any box says why that person is the colour they are.

A person decides

Vigil recommends; it never calls anyone. A report stays on screen, framed in red, with the clip that proves it, until somebody acts on it.

Request a demo

A walkthrough of the live wall, with your questions answered.

Illustrations, made with AI from screens of the Vigil wall running on MEVA test footage (Kitware & IARPA, CC BY 4.0, acted by paid actors). The verdicts shown are examples.

Platform

01

Vigil

Motion detection fires on a bin bag in the wind. Vigil answers the question a person would ask: what is happening, how bad is it, and can you show me.

A running prototype today, with a local console, live camera input and a stored event history. It reads pose rather than pixels, which is what lets it tell a person who sat down from a person who went down.

01
Events, not motion
Vigil classifies what it is looking at — a person on the ground, someone who has stopped moving, a crowd breaking apart, an animal somewhere it should not be — instead of reporting that some pixels changed.
02
A decision, not a grade
Vigil does not return a score for somebody else to interpret. It answers the question an operator is actually asked — what do you make of this, and what should we do — and commits to one of a short list of actions, with the reason it chose that one over the next one up.
03
Many subjects at once
Every person in frame is tracked independently, and a label stays with a body rather than with a position — each track is matched to where that person should have got to, not to where they last were, which is what keeps numbers stable while people walk. Two paths that cross close together can still swap labels, and the system is built so that nothing important rests on the label being right: a report is about what happened in a place, not about a number.
04
Not only people
The same reasoning works on animals, because the features are self-referencing — proportions measured against the subject's own body rather than against a human template. Nothing in the geometry assumes two legs.
05
Evidence that holds
An event without its footage is an opinion. Every frame is kept in order and addressed by its position in the recording, so any moment can be pulled back up — by an operator, or by Vigil itself when a scene only makes sense with what came before. Unconfirmed events keep their clip for three days and delete themselves; confirmed events are kept.
06
Where each part runs
Pose, tracking, the recording and the evidence store are local, on the box, and never leave the site. The reasoning is a call to a hosted model, and a handful of stills go with it. We would rather say that plainly than imply otherwise: it is the one step that leaves, it is the step that reads what is in a hand, and for sites that cannot send anything anywhere it can be turned off — leaving local detection alone.

Vigil · from frame to record

Schematic
  1. 01 · RecordEvery frameKept in order, named by time
  2. 02 · NoticeSomething movedFree, constant, decides nothing
  3. 03 · AcquireIs anyone thereOn the box. Nobody, and it stops here
  4. 04 · NameWhat is heldA second model, on the hand
  5. 05 · DecideOr ask for moreAct · watch · look back
  6. 06 · Hand overTo a personWho makes the call
Unconfirmed3 days, then gone
ConfirmedKept indefinitely

Prototype pipeline. Steps 02 and 03 run on the box and cost nothing; on an empty street the chain never reaches step 04. Nothing in it identifies a person, and nothing in it dials — see sections 03 and 05.

How it decides

02

Two models, four moves

Asking one model to judge a scene and identify what is in a hand gets you a worse answer to both. So the work is split, and the harder half gets its own model and its own question.

The first watches the place and decides what should happen. The second is shown a close crop of a hand and asked one thing: what is that. It has no idea what else is in the frame, and it is better for not knowing — context is what makes a model reach for a story, and the story is the first model’s job.

Model 01Judgement

The watcher

Sees the whole frame, the people in it, the recording behind it, and the object report. Decides what to do.

Sees
The scene
Asked
What should we do
Knows about people
Yes
Identifies objects
No
Can ask for more
Forwards and back

Model 02Perception

The object model

Sees one hand, at the camera’s full resolution. Says what is held, and says plainly when it cannot tell.

Sees
One hand
Asked
What is that
Knows about people
Nothing by design
Identifies objects
Its only job
Decides anything
Never
01
It can ask for more time
A still once the cheaper stages have found somebody, and four possible answers: nothing here, act now, show me the next few seconds, or show me what led up to this. Earlier versions handed it a fixed burst and demanded a verdict, and it kept replying that it could not tell — true, and useless. “I am not sure yet” is now a move rather than a complaint.
02
Looking backwards is free
Every frame is kept and named by its position in the recording, so a scene that begins halfway — somebody already on the ground, an object already in a hand — can be resolved by going back to where it started. That footage is already on disk, so it costs nothing and arrives instantly.
03
It speeds up when it matters
The moment somebody is a concern, sampling goes from every two seconds to several instants examined at once, and stays there until it resolves. That stretch is where a thing becomes an incident or turns out to be nothing, and it is the one part of a day worth full attention.
04
A call, and which number
Not a severity score for somebody else to interpret. Ignore, log, tell someone on site, notify police, or call emergency services — and when it calls, it names which are needed, because a collapse needs an ambulance and a fire needs both. The test between the last two is simple: would another minute change what happens to the person in frame.
05
Once it has called, it stops judging
A call cannot be unmade and calling twice brings nobody twice. That person is marked, their footage keeps recording as evidence, and attention moves to everybody else in the frame — because an incident is not over because it was reported, and the person nobody has looked at yet is now the one nobody is watching.

What it will not use

Rules in the brief

Not what somebody looks like

Clothing, a hood, a covered face, a bag, skin colour, apparent age or sex. None of it says what a person is doing.

Not what they are wearing

Or not wearing. A report may end up with the police; a description of somebody’s body in their own home belongs nowhere in it.

Not how they seem to feel

Nobody can see a state of mind in a still. People look tense because they are late, cold, ill, or on the phone.

Not where they are, against them

The place decides what an action means: standing still is ordinary in a pedestrian street and deadly in a highway lane. It never decides who a person is. Somebody in a car park at 3am is somebody in a car park.

Not what they might do

Intent is not visible. The action is. One is reportable and the other is a guess wearing a uniform.

But: your own rules

If you write down what normal looks like at your site, a departure from it is an observation — phrased against your rule, and never carried to another site.

The test the model is given, in its own words: if your recommendation would change when you imagine the same actions performed by somebody who looks different, your recommendation is wrong — redo it on the actions alone.

Vigil · see it

Two ways in
Isometric drawing of the finished Vigil camera: a white bullet camera with a sun shield, front window and infrared ring, on a wall arm. The hardware See how it is built Twenty-seven parts, from the wall plate to the sun shield — a build manual you page through. Take the walls off at the end and look inside. Open the blueprint →

Not the Vigil model. Vigil runs YOLOv8-pose on local hardware; nothing of that kind runs in a browser tab, so this demo estimates pose with MediaPipe instead. The classification above it — posture, then stillness over time — is the same reasoning. A pose model is fetched from a CDN on first press, so the demo needs a connection.

What runs when

03

Cheap things decide when expensive things run

A camera watching an empty street should cost nothing. Most cameras watch an empty street almost all of the time.

So the work is arranged as a series of gates, each one cheaper than the next and each one able to do only one thing: ask for a closer look. A stage never concludes anything on behalf of the stage above it. That rule is what makes a false alarm at the bottom harmless — the answer to a leaf in the wind is a second glance that finds nothing, and a second glance costs a fraction of a penny of electricity.

01
Nothing is looking most of the time
Until something is actually there, the reasoning model is not called, no stills leave the site, and nothing is billed. This is the whole economic argument for the product and it is also the privacy one: the cheapest system to run is the one that looks at the fewest people.
02
Authority never passes downward
The always-on stage cannot mark a person, cannot raise an alert and cannot write to the record. It can bring the next look forward and nothing else. The same holds at every level: the stage that finds people does not decide what they are doing, and the stage that names an object does not decide what to do about it.
03
The frame is examined in pieces
A person at the far end of a street is a handful of pixels in a whole frame and a recognisable figure in a part of one. Every look is divided, and a verdict is only formed once all the parts have reported — so a camera is never told “nobody is there” on the strength of a look that half failed.
04
Each camera learns its own ground
Over days a camera builds a picture of its own patch: which parts of the view vehicles use and which parts people walk, which way traffic runs, how busy the place is at this hour. That is what separates something unusual from something merely unfamiliar — a vehicle going the wrong way is obvious on a street you know, and invisible on one you do not. Nothing learned is ever shared between cameras: a fact about one street is not a fact about another.
05
And it says when it has not learned enough
A camera switched on this morning knows nothing about its street, behaves exactly as it would without the feature, and reports how much of its view it can yet claim to understand. Ground nobody has ever crossed stays unknown rather than becoming forbidden. What it has learned decays, so a street that changes is re-learned instead of argued with.
06
Vehicles are a different question
A person in frame is worth a look; a car in frame is the most ordinary thing on a road, and a system that escalated for every one would cost more than it is worth. Vehicles are watched locally and for free, and only the handful of things a fixed camera can honestly establish about one ever reach the reasoning model. Speed is not among them: nothing here knows how many metres a pixel is, and a report that converted one into the other would be inventing evidence.

Vigil · what a report may say

Discipline

A report quotes its evidence. It never improves on it.

The close look at a hand returns what it saw and how sure it was, including “I cannot tell”. The reasoning model may act on that and may disagree with it from a wider view — but it may not restate it as something firmer than it was, and it may not borrow a finding about one person and attach it to another. Uncertainty changes the answer rather than being rounded away: an object nobody could identify is a reason for someone to look at the clip, not a reason to send anyone running.

That is enforced twice. It is written into the instructions the model works from, and it is checked mechanically afterwards — every recommendation is compared against the evidence behind it, and one that claims more than the evidence supports is marked as such before a human ever reads it.

And nothing in the system dials anybody. Vigil recommends; a person decides and makes the call. That is deliberate, and it is not a stage we intend to remove.

In practice

04

Three nights

What the stages above look like when something actually happens: who notices, what it costs, and the moment a person takes over.

Pick a night and let it play, or drag along the bar. Every step names the stage that acted. The money only moves when the gate opens, and the last step is always a person.

Local time
--:--:--
Spent on this
$0.000

    Illustrative. These show how Vigil is built to respond, stage by stage, using the prototype's own pipeline and its cost per paid look. They are not recordings of real incidents, and the places and times are invented.

    Limits

    05

    What it will not do

    Vigil does not identify anybody. No face recognition, no biometric matching, no watchlist. It classifies situations, not people.

    This is a design decision, not a missing feature, and it is the one we get asked to reverse most often. Two reasons hold it in place.

    01
    Intent prediction is arithmetic, not tuning
    Screening a crowd for who is about to do something runs into the base rate. At 99% specificity — far better than any fielded system — roughly 889 innocent people are flagged for every real one. No amount of model quality fixes a ratio set by how rare the event is.
    02
    Situations accuse nobody
    A crowd suddenly dispersing is a stronger danger signal than any posture read off one individual, and it makes no claim about any person in it. That is the class of signal Vigil is built on.
    03
    Posture reporting stays off
    The system can describe a body position, and that feature ships disabled. When it is enabled it reports a posture and a confidence — never a person, never an intention, and never the words "dangerous man".