Real telemetry. Real protocols. Replayable physics.
Continuous, physics-honest sensor telemetry over Modbus/TCP, OPC-UA, BACnet, MQTT and DNP3. Driven by a deep library of plant templates and a disturbance library, captured to pcapng + parquet + alarms, cryptographically sealed — and ready to feed an IDS, an analytics pipeline, an operator trainer, or an ICS attack mix on top.
- Plant templates
- 67
- Protocols (live)
- 6
- Min cycle
- 2 ms
- Streams
- Live + sealed
Six things every SCADA run guarantees.
These behaviours aren’t toggles — they’re built into the engine. Every motif, every protocol, every disturbance respects them, so a run from a junior engineer ships with the same evidence quality as a run from the platform team.
Physics anchors every signal
Every analog tag is driven by a calibrated physics-honest response model; every discrete equipment state is driven by an event-driven state machine with safety interlocks. The result is telemetry that doesn't just look real on a chart; it satisfies the physical constraints your IDS or analytics expect.
Real protocols on the wire
Six SCADA protocols in the engine today — Modbus TCP, OPC-UA, BACnet/IP, MQTT, DNP3, IEC 61850 (MMS/GOOSE/SCL). Standard Virtual SCADA produces batch frame traces for all six (NDJSON / Parquet / pcapng records of what went on the wire). Enterprise VPLC upgrades the same six protocols to live TCP servers on real ports inside a real-time-capable Docker container on your infrastructure — IDS, operator consoles, and red-team tooling can connect as if it were a production plant.
Deep plant-template library
A broad library of pre-built plant templates spanning water, power, manufacturing, oil & gas, HVAC, and more. Each template carries the response models and state machines for every loop in the plant, mapped to the right protocol surface for the vertical.
Realistic disturbance library
Realistic disturbances bake in: storm-surge inflow, blower failure, sensor drift, valve seize, breaker trip — all on a deterministic schedule that replays byte-equal across runs.
Composable with ICS Security
A Virtual SCADA run is a first-class input to the ICS Security engine. Inject MITRE ATT&CK ICS classes against a live process; the truth file labels the result; one bundle ships both telemetry and adversary ground truth.
Same evidence chain as the rest
pcapng + signals.parquet + alarms.json + commands.json + asset_inventory.json all hashed and chained with BLAKE3 into a sealed .tar.zst. Verifiable offline, replayable forever.
Six industrial protocols. Live servers, real ports.
Every protocol below runs as a real server on a real TCP/UDP port — not synthetic packet replay. Bind only the ones you need; air-gapped registries supported.
Modbus / TCP
:502Live server, holding/input registers, coil semantics, function-code coverage 1–6, 15, 16.
OPC-UA
:4840Anonymous and certificate auth, address space generation per plant motif.
BACnet / IP
:47808AHU / VAV / chiller object models, COV subscription, Read/WriteProperty round-trip.
MQTT 3.1.1 / 5
:1883Sparkplug-B compatible payloads; configurable QoS and retained-message behaviour.
DNP3 (IEEE 1815)
:20000Master/outstation, integrity polls, unsolicited responses, CRC-16 frame integrity.
IEC 61850 MMS
:102Substation IED scenarios on the Enterprise VPLC tier; report control blocks supported.
Six stages from motif to sealed bundle.
Same six stages as the synthetic-data engines, with two domain-specific steps: a wire capture (pcapng) and an optional adversary mix.
Pick a plant template
Choose from our deep library of pre-built plant templates (water, power, pipeline, buildings, logistics, process-batch). Each template declares its tags, protocol bindings, regime schedule, and disturbance hooks; overrides land as JSON on the run request.
Configure run options
Duration, sample cadence, jitter (p50 + p95), which protocols to bind, where the evidence volume lives. Defaults are sensible; everything is overridable.
Drive the process
The motif schedule plays out: setpoints move, regimes change, Tier 2 disturbances hit on the pinned schedule. Live protocol traffic mirrors the process in real time.
Capture wire + state
pcapng captures the wire exactly as it appeared on the LAN; signals.parquet captures the per-tag time series; alarms.json records what an operator would have seen.
Quality + chain seal
Distribution checks, cycle-time accounting, protocol conformance verified before sealing. BLAKE3-chained .tar.zst lands in your bucket.
Optional ICS attack mix
Compose with the ICS Security engine to inject MITRE ATT&CK ICS classes on the same SCADA run. Truth labels travel inside the same bundle.
Plant templates we ship out of the box.
Each template bundles calibrated response models and event-driven state machines for the full loop set of the plant, mapped to a real protocol surface. Use the stock ones, or hand us a P&ID and we’ll fit a custom pack inside a week.
Water & wastewater
Pumps, clarifiers, blowers, aerators with realistic chemistry — pH, ORP, dissolved oxygen, turbidity.
Power & grid
Substation, breakers, RTU telemetry; SCADA/EMS integration patterns; IEDs on the VPLC tier.
Manufacturing
Conveyor, stamping, robotic-cell motifs with discrete-event behaviour and per-cycle accounting.
Oil & gas midstream
Pipeline, compressor, custody-transfer skids; regulator-grade response dynamics per loop.
Building / HVAC
BACnet AHU, VAV, chiller plant; occupancy and outside-air-driven cycles; trend logging.
Custom plant
Bring your P&ID — we calibrate the response model per loop and ship the pack inside a week.
Six rungs above random-walk telemetry.
Each rung is a published mechanism, not a marketing claim: authorable dwell-time regime scheduler, cross-signal coupling graph with analytic ρ→g inversion, diffusion-form aware integrator dispatch, adaptive dynamics calibration, swing-equation substation load flow, and a unified live/batch integrator that keeps stream and sealed bundle byte-equal.
Authorable regime scheduler
Per-plant dwell-time distributions (LogNormal/Weibull/Gamma/Deterministic) drive the regime timeline. Setpoints are regime-conditional — DO sags in fault, pumps cycle in high-load, valves lean in maintenance. No geometric-Markov artifacts.
Cross-signal coupling
Catalogued archetypes wire signal-to-signal influence (flow→pressure, DO→NH₄⁺, P→voltage-sag) through an analytic coupling graph. Target correlation converts to edge gain in closed form — no hand-tuned knobs.
Diffusion-form aware integrators
Each signal declares its process class (additive, multiplicative, CIR). The integrator dispatcher picks Euler-Maruyama, log-Euler, or Milstein per signal, with Strang splitting when a block is stiff and coupled. Feller-safe CIR keeps dissolved-oxygen, reaction rates, and frequency deviations off boundary pins.
Adaptive dynamics calibration
A short pre-roll measures observed utilisation per signal; one Newton correction retunes the stochastic scale to the authored target. The same 1-hour substation run reaches realistic coefficient-of-variation without human parameter-fitting.
Grid-aware substation load flow
Substation V/f/P/Q are driven by a swing equation + AVR + voltage-dependent load block at IEEE C37.010 nominals. Stochastic noise rides on the deterministic load-flow solution — not the other way round.
Unified live + batch
The same integrator feeds a per-tick SSE stream and the sealed batch bundle. Consumers subscribe at /v1/client/runs/{run_id}/stream; late joiners replay from the ring buffer. A missed frame never silently drops — the sealed transcript is the source of truth.
Train on your real plant without shipping raw rows.
Bring a CSV, Parquet, or PI System export; the engine fits a sanitised statistical summary under a differential-privacy budget with Rényi-DP accounting. Multi-site deployments aggregate across facilities under MPC, TEE, or trusted-aggregator modes — the coordinator never sees raw tuples, and every run ships a privacy_evidence.json audit trail.
Bring your historian
Point at a CSV, Parquet, or PI System export; the Differentially-Private Historian Extension fits a sanitised statistical summary under an (ε, δ) budget with Rényi-DP accounting. Raw rows never leave the ingest boundary.
Federate across sites
k-site aggregation runs under MPC additive secret sharing (three-server), SGX/SEV/Nitro TEE, or trusted-aggregator mode. Each site publishes only its sanitised summary; the coordinator sees the aggregate, never the raw tuples.
Privacy evidence travels with the bundle
Every run ships a privacy_evidence.json carrying the epsilon/delta ledger, per-signal sensitivity bounds, aggregation backend, and participant receipts. Audit-ready on the first read.
Where Virtual SCADA earns its keep.
IDS / NDR vendor benchmarking
Generate reproducible, labelled traffic for detection-rule training and regression-testing. Same bundle, different runs, same outputs from your detector — that's the test.
Digital-twin & analytics
Drive your real analytics pipeline against synthetic-but-honest telemetry. Catch the bug before it points at production.
Operator training
A behaviourally-identical plant the trainee can stress, mis-operate, and recover without ever touching the live process.
PLC / vendor PoC sandbox
Stand up a clean SCADA + Virtual PLC environment per vendor evaluation; reset to the sealed baseline between PoCs.
Posture you don’t configure.
Tenant-isolated
Per-tenant Fernet at rest, per-tenant artefact prefix, ORM-level row filtering — same as the rest of the platform.
Real protocols
Live server implementations on real TCP/UDP ports, not synthetic packet replay.
Physics honest
Per-tag calibrated response model; event-driven state machines with safety interlocks for discrete equipment state. No random-walk telemetry.
Sealed by default
Every run produces a BLAKE3-chained .tar.zst; offline verifier flags any in-place mutation.
Bring a P&ID. We’ll ship a sealed run.
45-minute working session: tell us the plant, the protocols, and one disturbance you want to drive. We’ll cut the contract, run the SCADA engine, and walk you through the bundle.