Sage Grande · Summer of AI · 2026

Mortimus

Honest edge-AI wildfire smoke detection.

A smoke detector that runs on the camera node itself — and reports its own false positives as carefully as its detections. Built on one rule: move the work, not the data.

pywaggle plugin / Sage / Waggle nodes / edge cascade → Beehive

The problem

Off-the-shelf detectors look brilliant in the lab and collapse in the field.

Every camera in the wild is full of things that look like smoke — fog banks, sunset cloud, marine layer, city glow, even a volcano. A model trained on clean datasets meets them all at once, and its field precision falls off a cliff.

We measured it. A well-known research detector scored a field precision of 0.127. And on an independent 3.47-million-frame archive of a per-frame vision-language detector's “fire” verdicts, we checked the largest bursts against county fire-department records: zero of the 36 biggest were real reported fires — they were per-camera artifacts, storms, and lava glow.

fogsunset cloudmarine layercity glowvolcanolens flaredust

The approach

Cheap first, expensive last — and only small results leave the node.

Almost every frame is boring, so almost every frame should cost almost nothing. Mortimus runs a cascade on the node and escalates only when the evidence earns it.

01

Change gate

A low-cost frame difference. A static scene stops here.

cost: negligible
02

CPU smoke heuristic

Tiled contrast & color analysis of what actually changed. A clear scene stops here.

cost: low
03

VLM escalation

Only suspicious frames reach the node's vision-language model for a smoke / clear / unknown verdict. Fail-closed: missing evidence never becomes an alert.

cost: paid rarely, on purpose
04

Publish, don't stream

Compact smoke scores go to Beehive — plus at most one snapshot per alert. Raw video never leaves the edge.

move the work, not the data

Why it's different

The framework is the deliverable.

False positives, published

Every model is scored against human-labeled field imagery — and the errors are reported by condition (sunset, fog, night, glow), not hidden behind a single accuracy number.

No fire scores itself

Evaluation is event-grouped and leave-one-incident-out. A fire never appears in both training and test, so the numbers mean what they say.

Every result is traceable

Frame → dataset fingerprint → model → benchmark → deployed champion. A model that can't name what made it doesn't ship.

From frame to map

Two or more cameras triangulate a plume onto the terrain. Fixing one systematic geometry error took localization from 6.84 km to 1.03 km.

Measured, not asserted

Numbers we can trace to their inputs.

0.127
Off-the-shelf field precision
A research detector, run on real field cameras. The gap between the lab and the world.
3.47M
Frames stress-tested
An independent archive of per-frame VLM “fire” verdicts we audited against ground truth.
0 / 36
Top bursts that were real fires
Largest “fire” bursts corroborated against fire-department records. Off-the-shelf detection is FP-dominated.
1.03km
Multi-camera fire localization
Down from 6.84 km after correcting a systematic panorama-geometry error.

In-domain benchmarks (e.g. an F1 of 0.884 on a matched dataset) are reported as exactly that — in-domain, not a claim about the field. The distinction is the point.