Modern application security is no longer about running a single scanner.
It’s about coordinating multiple engines, covering different ecosystems, and extracting consistent signals from heterogeneous outputs.
That coordination problem is what led to the creation of Soak.
Soak is a zero-dependency Docker image that aggregates a curated set of open-source security scanners into a single, reproducible execution environment.
Its purpose is simple:
Provide deep-tissue static analysis through a unified, containerized execution layer.
ecurity scanners are powerful — but fragmented.
Each tool:
Managing multiple scanners across local development, CI, and production becomes operationally expensive.
If your execution layer is unstable, everything built on top of it becomes unreliable.
Soak removes that instability.
Soak is:
It is intentionally:
If you have Docker, you can run Soak. Nothing else is required.
Soak performs what we call deep-tissue static analysis.
Instead of running one scanner, it:
This provides multi-layer visibility across:
All from a single execution context.
Soak bundles a broad range of open-source tools across ecosystems:
This provides horizontal coverage across application, dependencies, configuration, and container layers.
Soak follows a clear internal structure:
Detection Layer - Identifies project language and ecosystem metadata.
Execution Layer - Runs relevant scanners inside the container in isolation.
Aggregation Layer - Collects raw JSON outputs and produces soak_summary.json.
This separation allows Soak to act as a pure execution component that can integrate seamlessly with higher-level orchestration systems.
Running Soak is intentionally simple:
soak /home/user/my-awesome-project
Behind the scenes, the container mounts the target repository, performs detection, executes scanners, and writes a structured summary file.
Because the entire runtime is containerized:
This dramatically reduces environmental inconsistencies.
Within the ArmoredCode ecosystem, Soak serves as the execution layer behind Signal-Engine.
The architectural separation is deliberate:
Soak does not:
It generates structured, multi-engine signals.
Signal-Engine transforms those signals into intelligence.
Many scanners provide official Docker images.
However, using them independently introduces:
Soak centralizes the contract.
Instead of managing N scanner containers, orchestration systems interact with one unified execution environment.
This reduces complexity and increases control.
Soak executes scanners against potentially untrusted code.
Therefore:
Execution should not increase the attack surface.
Isolation is a design principle, not an afterthought.
Security analysis at scale requires architectural discipline.
Execution, ingestion, correlation, and scoring must be separated.
Soak exists to make the execution layer:
It provides deep-tissue static analysis through a single, consistent interface.
And in a fragmented scanner ecosystem, consistency is power.