MarlinSpike is a passive OT/ICS topology mapper and analyst workbench.
The product takes packet captures in, sends no traffic back into the environment, and turns passive observations into topology, asset inventory, responder-grade findings, and portable JSON report artifacts. It is the open-source core behind Fathom and is intentionally built as a shared web workbench rather than a single-user thick client.
The modern GrassMarlin, built for shared engagements.
MarlinSpike picks up where GrassMarlin left off. Same first principle — passive OT/ICS visibility from packet captures alone — but rebuilt for the way responders actually work today: a shared web workbench instead of a single-user thick client, a portable JSON report contract instead of a session-bound view, and a multi-stage extensibility model that takes Rust engines, Python plugins, and YAML rule packs.
We're not a fork; we're a successor. The product is independent code, ground-up architecture, and a deliberate alignment with what GrassMarlin originally promised the OT community: passive analysis, vendor-neutral protocol coverage, and tooling that respects the operational reality of the plant floor.
The report artifact is the contract
MarlinSpike keeps the engine standalone and treats the generated report artifact as the handoff between packet analysis and downstream review.
Designed for temporary field hosts and team access
The preferred install path is a reverse-proxied Docker Compose deployment that multiple responders can share during an assessment, outage investigation, or tabletop.
From raw capture to responder-facing output.
The analysis pipeline stays intentionally legible: ingest and validation, protocol dissection, topology building, risk surfacing, and report generation.
OT-aware by default, with L2 context preserved.
MarlinSpike is built around industrial protocol visibility, then enriches that with network-discovery context so infrastructure relationships are not thrown away.
Context that supports operator and security review.
The public story stays bounded to what the platform actually exposes today. MarlinSpike supports standards-oriented review without pretending to be a broader compliance suite.
IEC 62443
MITRE ATT&CK
Purdue / ISA-95
One Flask web app, one Python engine, one optional Rust DPI substrate.
MarlinSpike is intentionally extensible for working OT/ICS responders, not just systems programmers. Three formal extension surfaces cover the breadth of customization.
Rust engines
marlinspike-dpi substrate ships 34 protocol dissectors and is built into the Docker image at a pinned ref.
Python plugins
YAML rule packs
rules/<plugin>/base.yaml; per-deployment overrides via env vars.
Docs, deployment, and the package status — all in one place.
Continue with deployment, architecture, and download channels.