Run Silent.
Run Deep.
Track Everything.

CMMC-Ready NDR for Industrial Infrastructure

ML detection on OT and IoT protocols. Built for compliance.

Built on the SIGMA Algorithm (patent pending) — predictive behavioral detection that catches what signatures miss. Air-gap native. No cloud. No telemetry. The plant's data stays at the plant. $999 perpetual per site. Buy once. Own forever.

Four detection engines. One layered prediction.

Each card is an algorithm or engine. Arrows show how output feeds the next layer — no detector stands alone. Together they turn a stream of mystery scores into a single predictive alert.

INPUT EVE + windowed feature vectors flow / dns / tls tcp_perf / udp_perf payload_entropy 15-min asset windows iFOREST Isolation Forest (offline) "Is THIS flow anomalous?" → per-flow weirdness anomaly_score 0–1 catches encrypted / novel tooling HBOS Histogram outlier (online) "Did THIS HOST drift from itself?" → per-host context drift events SLA breaches Welford streaming SIGMA Behavioral tokenizer "Is the drift security-meaningful?" → ATT&CK narrative tactic + surprisal token vocabulary 15-min windows · uses HBOS OCCAM HMM Viterbi predictor "Does the SEQUENCE match an attack?" → predictive alert disposition pre-intrusion alerts consumes SIGMA tokens Suricata + plugins raw events per-flow score Anomalies page per-host context Reliability page security narrative SIGMA page predictive alert Occam page
Layer 1 · iForest

Per-flow anomaly scoring

An Isolation Forest — an unsupervised ML algorithm trained offline on representative traffic and applied to every flow. Catches what signatures don't: encrypted threats, novel malware, custom tooling.

  • Builds many random decision trees; anomalies isolate quickly — short paths = high score
  • No distribution assumptions — works on encrypted payloads where deep inspection fails
  • Pre-trained baseline ships with Rockfish; supports retraining against your own corpus
  • Output: anomaly_score in [0 .. 1] per flow
  • Surfaces in the report's Anomalies page
Isolation Forest scoring
# How a flow gets scored flow ──► [tree₁ tree₂ ... tree₁₀₀] │ ▼ avg_path_length │ ▼ anomaly_score = 2^(−avg / c(n)) # Practical outputs 0.05 normal traffic 0.50 borderline / unusual 0.85 strong anomaly 0.95+ near-certain anomaly
Layer 2 · HBOS

Per-host drift & reliability

Histogram-Based Outlier Score (Goldstein & Dengel, 2012) running online with Welford streaming per asset. Maintains a per-host baseline of expected feature ranges and flags windows that deviate — the same machinery catches network reliability issues and the early signal of host compromise.

  • One baseline per asset, updated incrementally — no training data needed
  • Per-feature histograms make drift interpretable: "TCP retransmits 4.2σ above this host's norm"
  • Catches dual-use signal: degraded servers and stealthy compromise
  • Output: drift events, SLA-breach windows, per-feature surprisal in bits
  • Surfaces in the report's Reliability page; also feeds SIGMA
HBOS per-asset baseline
# Per-feature histogram → outlier score asset_10.0.12.45 (15-min window) ├── tcp_handshake_rtt surprisal 4.2σ ├── dns_failure_ratio surprisal 3.1σ ├── retransmit_ratio surprisal 1.4σ └── ... HBOS_score = Σ −log P(feature_i) # Verdict state = drift (4.2σ > threshold) state = sla_breach (DNS fail > 0.30)
Layer 3 · SIGMA

Behavioral tokenization & ATT&CK mapping

Every 15 minutes, for every asset, SIGMA aggregates window stats and emits tokens — short labels representing observed behavior categories — each with a surprisal score in bits and an ATT&CK tactic. Translates raw drift into a security narrative an analyst can actually read.

Note: Rockfish's SIGMA is a behavioral tokenizer, not the public SIGMA-rules YAML grammar at sigmahq.io. Same name, different thing.

  • Token vocabulary: encrypted-ratio-high, unusual-port-mix, slow-handshake, …
  • Each token mapped to one of MITRE ATT&CK's 14 tactics
  • Surprisal score computed from HBOS — "rare for this asset" is the standard, not "rare for the network"
  • Patent-pending behavioral signal compression
  • Surfaces in the report's SIGMA page; consumed by OCCAM
SIGMA tokenizer output
# Token emitted per asset / 15-min window { "asset": "10.0.12.45", "window": "2026-04-29T14:00Z", "token": "encrypted-ratio-high", "tactic": "exfiltration", "surprisal": 8.7, "features": [ "entropy_toserver=7.94", "pcr=0.92", "bytes_sampled=8192" ] }
Layer 4 · OCCAM

Sequence prediction & pre-intrusion alerts

A Hidden Markov Model over the SIGMA token sequence per asset. Named for Occam's razor: when several attack paths could explain the observed sequence, pick the simplest. The Viterbi algorithm scores how strongly the recent sequence resembles a known attack path.

  • Forecasts attacks while they're still in progress — before exfil completes
  • Disposition per token: suppressed / investigate / present / elevated
  • Suppresses isolated anomalies that don't match any known sequence — major false-positive cut
  • Explainable via Viterbi paths: "this token completed the recon → lateral → exfil path"
  • Surfaces in the report's Occam page; pre-intrusion alerts route to MQTT/Kafka
OCCAM Viterbi prediction
# Recent SIGMA tokens for asset 10.0.12.45 t-45m recon-scan-light surprisal 5.1 t-30m unusual-port-mix surprisal 6.0 t-15m encrypted-ratio-high surprisal 8.7 t- 0m outbound-volume-spike surprisal 7.8 # Viterbi match (best HMM path) recon → discovery → exfiltration ↑ likelihood: 0.91 ➜ disposition: elevatedPRE-INTRUSION ALERT

All four engines, on one screen.

The Radial Sonar is the operator-facing view of the analytics stack. Every flow plotted by protocol (spoke) and by risk (radius). The radius is the compounded output of the four engines — a single visual where the layered prediction becomes obvious at a glance.

How the layers map to the sonar

  • Normal — iForest score low & HBOS within baseline. Inner rings.
  • Internal — benign asset-to-asset traffic, similar inner-ring placement.
  • Suspect — iForest elevated or HBOS drift fired. Mid-ring placement; SIGMA token attached.
  • Alert (pulsing) — OCCAM disposition elevated. Outer-ring perimeter, where your eye lands first.

The dashed threshold ring is the operator's risk-cutoff knob — everything outside it deserves attention. Time-window control replays the last 1–60 minutes so you can scrub through an unfolding incident frame by frame.

See a Sonar Demo

Ready for CMMC compliance?

Deploy Rockfish NDR in minutes. Single binary. No dependencies. Full pipeline.

We built this for Defense Industrial Base contractors.

Now we want to prove it.

We are looking for defense contractors and C3PAOs to deploy Rockfish NDR in a production environment at no cost. Slots are limited.

Requirements are simple: you run it, we support it, you tell us what you think. If that sounds like a fair trade, let's talk.