Live on PyPI Pre-1.0, open source
Security findings you can actually prove.
A local, autonomous security agent for financial applications. A finding is marked verified only after code re-executes it, and each one ships with an evidence bundle anyone can re-check offline.
$ finlexpurple scan --target http://127.0.0.1:5000/ Recon: discovered 6 endpoints. Scan complete: 18 findings (4 verified) across 6 detector calls. [VERIFIED] sqli http://127.0.0.1:5000/lookup [VERIFIED] ssrf http://127.0.0.1:5000/settings/fetch-logo [VERIFIED] sqli http://127.0.0.1:5000/login [VERIFIED] sqli http://127.0.0.1:5000/login [REPORTED] idor http://127.0.0.1:5000/lookup [REPORTED] xss http://127.0.0.1:5000/search (+ 12 generic_misconfig, reported) $ finlexpurple verify-bundle evidence/<finding>.bundle.json content hash matches (sha256:5064009ee8dd56aad04f144d9e830a5d80228a24ccf025b8e13cc050412a8c05). no signature to verify (signing mode: hash-only); integrity rests on the content hash. OK: bundle verified.
What it is
Proof, not confidence.
FinLexPurple tests a financial app and everything it trusts, then keeps only the claims it can back with evidence.
-
Deterministic verification
A finding is verified only when code replays it: a SQL error reproduced, an SSRF confirmed by an out-of-band canary. Never on a model's say-so. Every verified finding gets an evidence bundle that
verify-bundlere-checks with no scan and no network. -
Local and air-gapped
Runs on your own hardware, fully local through Ollama, with cloud model providers optional. Egress is default-deny, iteration caps are on by default, and reports are written owner-only.
-
The whole surface
One engagement for the app, its AI agents and MCP tools, its dependencies, and its containers. The web path runs end-to-end in
scantoday; the MCP, supply-chain and container modules run standalone.Coming soon Running all surfaces from a single
scan.
Get started
From install to proof in three steps.
Requires Python 3.10 or newer.
-
Install
One package from PyPI. External scanners it wraps are optional and detected at runtime.
$ pip install finlexpurple -
Check and configure
See your hardware and installed tools, then pick a model provider and hardware tier.
$ finlexpurple doctor --tools $ finlexpurple setup -
Scan, then verify the evidence
Scan a target you are authorized to test, then re-check any verified finding offline.
$ finlexpurple scan --target https://app.example.com/ $ finlexpurple verify-bundle ./finlexpurple-reports/<run>/evidence/<id>.bundle.json
Installs
Counted without knowing who you are.
The counter is opt-in and private by architecture: there is nothing in it that could identify a person or a machine.
- Each opted-in install sends one random local ID, generated once and not derived from your hardware, network, or name.
- The endpoint stores only that ID with first- and last-seen times, and publishes nothing but the distinct count.
- No IP, hostname, or scan data is part of the count.
Opted-in installs
—
Coming soon The live count arrives with the opt-in telemetry release.