Onset, not a fully involved room
The useful signal is a seam of flame or a thin plume—not a room already filled with smoke.
Custom development agency — Applied AI, web, and mobile
Computer Vision · Edge AI
A multi-class vision agent on existing CCTV: fire, smoke, and extinguishers localized in-frame—so operations see the source before a ceiling head trips.
3
Detection classes
13
Scene types evaluated
8
Lighting / weather regimes
0
New cameras required
What the agent sees
Eval frames from the detector. One head, three classes, instance boxes—not a scene-level “fire / no fire” flag. The same payload an on-call lead would get: camera ID, UTC time, clip, and classed regions.
GSD CAM 01 · Entrance
Night infrared
Yard cam · Courtyard
Daylight alley
Indoor · Kitchen
Communal interior
Bay door · Perimeter
Overcast wildland
CAM 04 · Pole 1
Industrial alley
Forecourt · Dusk
Fuel site, low light
CAM 04 · Street
Rain, night
Loading yard
Fog / haze
Alley · 02:14
Snow, night
CAM 04 · Petrol North
Daylight fuel site
Woodland · Dusk
Low light outdoor
Warehouse · Loading dock
Indoor industrial, low light

The problem
On a woodland pole, a fuel island, a kitchen table, or a high-ceiling aisle, fire usually starts as a small flame or a thin plume—often metres from the nearest ceiling head. Smoke must rise, hit a trigger concentration before the alarm sounds. The cameras already on that asset see the first flicker in the same second, but nobody is watching the feed.

What we had to solve
The useful signal is a seam of flame or a thin plume—not a room already filled with smoke.
A scene-level fire flag is not enough. Alerts must point to the source, the plume, and the nearest extinguisher.
Night IR, rain, snow, and fog versus a real plume. The same three classes have to hold when atmosphere lies.
Camera ID, UTC time, clip, and classed boxes into the channels ops already use. Without proof, the detector gets turned off.
Architecture we shipped
01
Connect to cameras the site already operates (RTSP / ONVIF). Normalize frames from mixed vendors, including night-IR streams, so one agent runtime covers the estate.
02
Agents trained on early flame and plume signatures run continuously next to the streams. Detection does not wait for smoke to reach a ceiling head. Inference stays on existing site compute.
03
On a positive, the system writes camera ID, location, UTC time, a short clip, and instance boxes (class + region). That payload is both the operational signal and the evidence record.
04
Adapters push the event into the channels operations already live in. The same record is stored so a later insurance or inspection review has a complete trail of every fire-related signal the cameras saw.
Stack
Multi-class detector
Fire, smoke, extinguisher instances
Edge inference
On-site GPU / existing compute
Stream ingest
RTSP / ONVIF mixed estates
Event schema
Camera, UTC, clip, classed boxes
Channel adapters
Slack, WhatsApp, Telegram, webhooks
Evidence store
Timestamped clips and audit trail
System profile
Figures below are from the shipped design and the evaluated scene set—not a lab mAP card. They describe what the agent must do on a live estate.

3
Classes per frame
Fire, smoke, and fire extinguisher as separate instance heads. A fuel-island frame can carry one flame box, one plume, and three extinguishers.

13
Scene types
Woodland pole, night entrance IR, brick courtyard, indoor kitchen, warehouse bay, petrol dusk/day, rain, fog, and snow.

8
Regimes
Daylight, dusk, night IR (no RGB), rain, snow, fog/haze, indoor, and live fuel-site. Colour is not a required cue.

N-box
Instance output
Multiple boxes per class on one asset—cabinet-door seams, ground plus wall kit—not a single scene label.

<60s
Visual path
Design target versus a ceiling head: first visible flame or plume, not wait-for-smoke physics. Typical alarm lag on the same incident is minutes.

Edge
Inference locus
Detection stays on site compute already present. No new cameras, no specialist fire head per aisle, no cloud round-trip to decide.

5-field
Event payload
camera_id, site location, UTC timestamp, clip URI, detections[{class, box}]. Enough for Slack and for an insurer later.

Dual
Sensor class
Runs beside the certified alarm. The alarm is not replaced. The camera estate becomes a second, faster path.
Outcome

Seconds
vs. minutes
The vision path fires on the first visible plume or flame, while the ceiling sensor is still waiting for smoke to arrive.

3-class
localized alert
The on-call lead gets source, plume, and nearest extinguisher—not a raw stream and not a binary “possible fire.”

Zero
new cameras
Deployment sits on infrastructure the site already paid for. No specialist fire camera per aisle. No alarm replacement.
Our point of view
Cameras are already sensors. The missing layer is the software that treats them that way—continuously, on the edge, and with enough discipline that operations can trust the signal. That is the class of applied AI we build: not a demo on a clean video, but a second sensor that has to live next to a certified alarm and still be useful at 02:47.
Real-time
Continuous monitoring
Edge AI
Local, fast, reliable
Certified alarms
Actionable and trustworthy

Tell us what you're trying to accomplish. We'll be honest about what will work, what won't, and what comes next.