The hot path
A log line becomes a scored entity before it is written.
raw logverdict + mesh
- 01 TurboVM SIMD parse. Same bytecode on amd64 and aarch64.
-
02
mmenrich
CTI and GeoIP lookup. Emits
$!threat. No entity state. - 03 mmwake Per-entity counters, adaptive thresholds, pheromone deposit.
- 04 mmsigma Compiled Sigma. Hash-sharded correlation across a peer ring.
- 05 waked Sixteen detectors, in Python, after the C path. Not the mesh.
The idea, and the surface
No box has to see everything.
Detection runs where the evidence is. Agreement happens between peers. An operator sees ranked entities and pushes decisions back down.
The decentralized SOC
Why the decision belongs on the collector, how weak signals from separate hosts become one detection by quorum, and what happens when the uplink dies.
Read the concept → // operatorThe console
Triage ranked by agreement rather than arrival, the lineage behind every verdict, and decisions that become edge state instead of a saved filter.
See the loop →Underneath
What it takes to run detection on hundreds of hosts.
Fleet
Enroll, apply, drift, WireGuard. We needed a small headless way to keep a mesh of edges configured and observable, so we built one.
// osThe OS
FreeBSD pkgbase, MARLINOS kernel, ZFS root, jails, PF. Dual-arch, native builds. No fork.
// deliveryPlatforms
One YAML document per host role: wake-edge, soc-console, hosting, nas, and the rest.
// hard edgeOffline by design
NMEA 2000 over the native CAN stack, five jails, days without an uplink. The proof that the edge stands alone.