OFFAT OWASP

Installation#

OFFAT is a set of Python packages that share one data contract (the Bundle), plus a Rust execution engine. The Python side runs anywhere; the engine is only needed when you send live traffic to a target.

Prerequisites#

Need For
Python 3.10+ every stage
Rust 1.88+ building the execution engine (live runs only)
syft, grype, trivy or osv-scanner optional SBOM / dependency CVEs

Install the packages#

git clone https://github.com/OWASP/OFFAT.git
cd OFFAT
pip install ./bundle ./triager './whitebox[graph]' ./graybox ./platform ./reporter

This puts five CLIs on your PATH: offat-platform, offat-whitebox, offat-graybox, offat-triage and offat-report.

The [graph] extra installs the code-graph taint engine's dependencies (networkx for the graph, tree-sitter for JavaScript/TypeScript). Without it the white-box pipeline falls back to its pattern hunter and records why.

Build the execution engine#

make engine          # -> engine-rs/target/release/offat-engine
make engine-http3    # same, with the opt-in HTTP/3 + QUIC transport

offat-platform run finds the engine on PATH, at $OFFAT_ENGINE, or in engine-rs/target/{release,debug}/. Source-only runs never need it.

Container#

make docker                          # builds offat:latest from docker/Dockerfile
docker run --rm -v "$PWD:/src" offat:latest run /src -o /src/app.offat.json

The image contains the engine and every Python package, and runs as a non-root user.

AI backends (optional)#

Everything works offline with a deterministic heuristic. To enable AI triage, the graph-tool agent and spec inference, provide one of:

Provider Needs
anthropic OFFAT_AI_API_KEY (or ANTHROPIC_API_KEY)
claude-code the claude CLI, already signed in
codex the codex CLI, already signed in

Next: Usage.

Edit this page on GitHub