WHAXON
One platform. Every layer of security.
WHAXON turns your pentest tools into a pipeline. One catalog, three interfaces (terminal, desktop, web). Three things it does that most tools do not:
- Deterministic auto-chaining. When nmap finds an HTTP port on
127.0.0.1:8090, WHAXON queues nikto against that specific port automatically. Rule-based, no LLM in the loop — just a rule that fires on findings. Turn it off withWHAXON_AUTOCHAIN=false. - Cross-tool correlation. nmap says port 8090 is open. nikto says
/login.phpis on 8090. WHAXON emits aweb_login_surfacefinding that says both, because that is what a pentester wants to know. Eight rules today, all deterministic, all testable offline. - AI with hard guardrails. An optional AI layer proposes the next action. A deterministic executor validates every proposal before anything runs: catalog check, scope check, target lock, dedup guard, stagnation stop. The planner proposes; the executor disposes.
Status
v0.2 — adapter architecture, deterministic automation, cross-tool correlation, optional AI with executor guardrails, three working interfaces.
Working now
| Feature | Status |
|---|---|
| Headless core (catalog + runner + event bus) | Working |
| Terminal interface (Textual) | Working |
| Desktop interface (PySide6 + QWebEngineView) | Working |
| Web interface (Flask + SSE + Basic auth) | Working |
Production WSGI server (whaxon serve --daemon) |
Working |
| Tool catalog with argument templates | Working (11 tools) |
| Adapter layer | Working (7 adapters) |
| Enriched findings (CVSS, CWE, impact, remediation) | Working |
| Fail-closed scope enforcement | Working |
| Deterministic auto-chain (nmap -> nikto per web port) | Working |
| Correlation engine | Working (8 rules) |
| Pivot chain graph + rendering | Working |
| Burp XML import | Working |
| SQLite persistence across all interfaces | Working |
| Reports (per-job MD/HTML/PDF + engagement MD/JSON/PDF) | Working |
| Evidence attachments | Working |
| Metasploit RPC integration | Working |
| AI layer (Ollama / OpenAI / Anthropic / Google) | Working, opt-in |
| Plugin API (entry-point adapters) | Working |
| Test suite | 122 passing |
Planned
| Feature | Priority |
|---|---|
| Published to PyPI | Near term |
| Web UI file upload for Burp XML | Near term |
| Multi-user auth + projects | Medium term |
| Demo GIF + video walkthrough | Near term |
Quick start
git clone https://github.com/andreipath26/WHAXON.git
cd WHAXON
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[tui,gui,web]"
Requires Python 3.11+.
whaxon init # create data/ with strict default scope
whaxon tui # Terminal UI (Textual)
whaxon gui # Desktop app (PySide6)
whaxon serve --daemon # Production web server
whaxon web # Web, foreground (dev)
Web UI: http://127.0.0.1:5001/ui
Configuration
| Variable | Default | Purpose |
|---|---|---|
WHAXON_HOST |
127.0.0.1 |
Bind address |
WHAXON_PORT |
5001 |
Port |
WHAXON_DATA |
data |
Data directory |
WHAXON_AUTH_USER |
whaxon |
Basic auth username |
WHAXON_AUTH_PASS |
whaxon |
Basic auth password (hashed at startup) |
WHAXON_AUTH_PASS_HASH |
(unset) | Pre-hashed password; takes priority over WHAXON_AUTH_PASS |
WHAXON_AUTOCHAIN |
true |
nmap -> nikto auto-chain on web ports |
WHAXON_MSF_AUTOCHAIN |
false |
Run post modules after a Metasploit exploit session opens |
WHAXON_MSF_TIMEOUT |
(unset) | Timeout for Metasploit RPC calls |
WHAXON_OLLAMA_HOST |
http://127.0.0.1:11434 |
Ollama backend endpoint |
WHAXON_OPENAI_HOST |
(OpenAI default) | OpenAI-compatible endpoint override |
WHAXON_ANTHROPIC_HOST |
(Anthropic default) | Anthropic endpoint override |
WHAXON_GOOGLE_HOST |
(Google default) | Google/Gemini endpoint override |
Change the auth credentials before exposing WHAXON on any network.
Adapters
Every tool can have an adapter — a Python class that parses its output and enriches findings.
Built-in: nmap, nikto, sqlmap, burp, hashcat, impacket, msf.
Catalog tools without an adapter still run; their output just isn't enriched.
See docs/adapters.md.
Scope
Fail-closed. Missing data/scope.json gets a strict default on first load. Unreadable config raises.
whaxon scope --show
whaxon scope --check <target>
whaxon scope --set scope.json
whaxon scope --enable / --disable
whaxon scope --clear
See docs/scope.md.
Interfaces
- Terminal (
whaxon tui):rrun,xcancel,gchain,ssave report,Ctrl+Qquit. - Desktop (
whaxon gui): native window hosting the web UI in aQWebEngineView. - Web (
whaxon serve --daemon): Flask + SSE. API + browser UI at/ui. - CLI: 16 subcommands — see docs/interfaces.md.
Reports
whaxon report <job_id> # Per-job, Markdown
whaxon report <job_id> --format html # Per-job, HTML
whaxon report <job_id> --format pdf --out scan.pdf # Per-job, PDF
whaxon report --engagement default --format md # Engagement, Markdown
whaxon report --all --format whaxon # Engagement, signed .whaxon
curl -u whaxon:whaxon "http://127.0.0.1:5001/api/report?format=md" # Engagement via HTTP
HTML output is escaped — a raw_line with <script> can't execute in a browser.
Testing
python -m pytest tests/ -q
266 tests passing.
Documentation
docs/ — getting started, architecture, adapters, tools, scope, interfaces, findings, reports, API, deployment, troubleshooting, changelog.
Responsible use
Authorized testing only. Use on systems you own or have explicit permission to assess.
Licensing
AGPL-3.0-or-later. See LICENSE-COMMERCIAL.md and LICENSE-ENTERPRISE.md.
Metadata
Release files for whaxon 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| whaxon-0.3.0.tar.gz | 138.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| whaxon-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 309.4 kB
Release files / whaxon-0.3.0.tar.gz
| Download URL | whaxon-0.3.0.tar.gz |
|---|---|
| Size | 138.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3e8757dc7710439f991ffd0194b3bd532ffa78bf189cbf79255a241f36eaabcf
|
|
BLAKE2b-256 checksum How to use checksums |
fa789fae2d0c734f787a9b9aef3c68122b59cdd388101fa24e458c4167fa2f45
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Release files / whaxon-0.3.0-py3-none-any.whl
| Download URL | whaxon-0.3.0-py3-none-any.whl |
|---|---|
| Size | 171.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fbf5bf59b0772aecc788dba309e0c64efcfedc0984fbbb345adc56f52543d4fc
|
|
BLAKE2b-256 checksum How to use checksums |
ad887af4649ae08eb344f8c6bd582d65ba9f8d49511ddad7e62355242810ee57
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Security for whaxon 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.