Repo model
| Repository | Role |
|---|---|
marlinspike | The suite repo, integration home, and one-clone option. |
marlinspike-msengine | The core analysis engine repo. Internal package and CLI name: msengine. |
marlinspike-workbench | The web UI and collaboration surface that reads report artifacts and can optionally invoke the engine. |
marlinspike-plugins | The Python plugin monorepo for report-consuming extensions. |
marlinspike-engines | The Rust engine workspace for packet-facing and event-heavy components. |
One clone for everything
The suite repo vendors component repos via git subtree. The docs frame that as a practical middle ground:
- Users still get normal
git clonebehavior. - Teams avoid a git-submodule setup burden.
- Component repos can keep their own release cycles.
- The suite repo can pin a known-good combination for operators who want the whole stack together.
Contract boundary
The portable report artifact is the handoff between components:
msengineproduces a report artifact from captured traffic.marlinspike-workbenchconsumes that artifact for review, triage, and collaboration.- Python plugins consume the same finished report and emit sidecar artifacts.
- Rust engines may produce upstream artifacts or event streams that feed the engine or other components.
The workbench is intentionally usable even when the report was generated elsewhere and no local engine binary is present.
Current transition state
The docs are honest that the current repository still contains both engine and workbench code while the split is being prepared.
- The root
marlinspikerepo still carries operational engine and Flask UI code today. - The first bootstrap subtree prefix is
msengine/. - Until cutover is complete, root
_ms_engine.pyremains the operational engine source. - The helper script
scripts/sync-msengine-bootstrap.shmirrors the operational engine into the subtree copy.
Ownership boundaries for contributors
The contribution docs already encourage developers to think in future component boundaries even before the extraction finishes:
- Packet-facing parsing, observables, and engine CLI work belong to the
msengineboundary. - Flask routes, templates, auth, projects, and report-review UX belong to the
workbenchboundary. - ATT&CK, IEC 62443, PERA, and other report-consuming overlays belong to the future
pluginsboundary. - Packet-heavy Rust parsers belong to the future
enginesboundary.