The technical page.
Seven building blocks. One stack. From the ESP-NOW pipe at the wall to DOIL compile targets at the cloud — exactly how the work stack is wired today.
ESP-NOW — peer-to-peer, no access point.
ESP-NOW is Espressif's connectionless layer-2 protocol. We use it for every sensor-to-gateway hop because it removes the access point from the dependency graph.
- Sub-10ms latency between dongle and gateway
- No DHCP, no association, no infrastructure WiFi
- AES-128 unicast encryption between peers
- Up to 20 peers per node; broadcast and unicast modes
- Operates while the same radio also receives CSI from the customer's WiFi
TinyML on ESP32-S3 — quantised, fast, <512 KB.
The dongle isn't a sensor that ships raw data. It's an inference engine that ships eight floats per frame.
Quantised int8
Models are quantised to int8 to fit ESP32-S3 flash and run inside the inference budget.
Sub-100ms latency
End-to-end: CSI frame in → 8 latent fields out → ESP-NOW frame on the wire in under 100ms.
<512 KB flash
Each TinyML model is sized to leave room for OTA: there is always a slot for a replacement model in the same device.
Dynamic model flashing — change the vertical, not the hardware.
The same dongle that sensed a warehouse last week can sense a laundromat this week. We push a new TinyML model over ESP-NOW; the dongle verifies a signature, swaps the slot, reboots, and is back in service in under thirty seconds.
This is why the same hardware is deployable across all 130 verticals in darknoc.org's registry — the vertical lives in the model, not the chip.
RuVector — gateway-resident vector store.
CSI events and latent-field embeddings live in a tiny vector store on the gateway. The cloud queries it; the cloud does not have to ingest raw signal.
- Embedded, single-binary, no external dependency
- Approximate nearest neighbour with bounded recall
- Per-tenant isolation; deletion on demand for compliance
- Backs the "what does this look like?" query the LLM asks every time the customer asks "what happened?"
CSI precursors — what walls know before cameras do.
Fire, flood, and intrusion all leave a CSI signature before they leave a visual one. Water changes RF permittivity. Hot air bends the phase profile. A door that has just been opened changes the multipath.
Fire precursor
Convective hot-air columns deform the CSI phase profile seconds to minutes before flame is visible to a camera.
Flood precursor
Water on a floor changes RF permittivity. CSI amplitude shifts on every subcarrier; the signature is unambiguous.
Intrusion precursor
A door opens; multipath restructures. Presence in a zone that was empty registers in CSI 100s of ms ahead of any camera trigger.
The anticipation map — what's about to happen.
From precursors plus the gateway's vector store plus the cloud's history, we produce an anticipation map: a low-resolution heatmap of what the site is likely to do in the next 5–60 seconds.
It's not magic. It's pattern matching across thousands of similar zones. The LLM doesn't predict the future — it tells the operator which historical pattern this minute looks like, and what happened next those other times.
DOIL — one intent language, two backends.
DOIL is the intent-first language documented at darknoc.dev. It compiles to TMF API agents and to ESP32 firmware. Same intent. Two delivery surfaces.
When a customer says "alert me whenever the back room is occupied between 22:00 and 06:00", that intent compiles to a runtime rule on the gateway and a notification agent on the cloud. Same source. Same DOIL file. Same audit trail.
Why this stack, and not the obvious one.
AI agents should not only read documents; they should operate against executable, deterministic, auditable context — code, intents, tools, simulators, and rollback-safe workflows.
Cameras are an expensive default. WiFi CSI + selective vision + conversational interface is materially better in power, bandwidth, privacy, and resilience for a wide class of industrial monitoring workloads.