HunterX - AI-Assisted Vulnerability Discovery, Validation & Proof Engine (V7)
5.0K
HunterX is an open-source, AI-assisted vulnerability discovery, validation and proof engine for authorized security testing. It does not stop at candidate detections: it plans and orchestrates missions, reasons over hypotheses, validates findings with evidence, engineers and replays proofs and PoCs, and produces report-ready output.
This image runs the HunterX v7.0.0 CLI (and REST API) inside a minimal, non-root container.
Discover → Fingerprint → Reason → Hypothesize → Probe → Verify → Prove → PoC → Replay → Correlate → Report
# Pull the current release
docker pull nullc0d30/hunterx:7.0.0
# Verify the version you pulled
docker run --rm nullc0d30/hunterx:7.0.0 version
# Show the command reference
docker run --rm nullc0d30/hunterx:7.0.0 help
The image entrypoint is the hunterx CLI, which uses subcommands (for example hunterx version, hunterx help, hunterx hunt ...). Running the container with no arguments prints the usage text.
HunterX is an AI-assisted vulnerability discovery, validation and proof engine and red-team framework. It orchestrates the open-source security-tool ecosystem rather than replacing it: HunterX executes tools with structured contracts, normalizes their output, correlates results, reasons over hypotheses, validates with evidence, engineers and replays minimal safe proofs/PoCs, and produces professional reports.
A traditional scanner stops at "possible SQL injection". HunterX is built to investigate the hypothesis, verify the behavior, prove the finding, reproduce the evidence, assess the impact, and turn the result into a report-ready, validated finding:
Detection → Evidence → Verification → Reproduction → PoC → Validated Finding
hunterx mission, hunterx hunt)TIDB persistence layer| Tag | Purpose |
|---|---|
latest | Most recent build of main (currently HunterX v7.0.0) |
stable | Latest tagged stable release (currently HunterX v7.0.0) |
7.0.0 | Version-pinned release |
7.0 | Minor-version tag |
7 | Major-version tag |
6.0.0, 6.0, 6 | Legacy HunterX v6 images (not current) |
4.0.1, 4.0, 3.1 | Historical images (not current) |
Versioning.
latestandstableare convenient but move as new builds are pushed. For reproducible deployments, pin a version tag such asnullc0d30/hunterx:7.0.0.
docker run --rm nullc0d30/hunterx:7.0.0 version
# HunterX v7.0.0
# Show the resolved configuration
docker run --rm nullc0d30/hunterx:latest config
# Show platform composition
docker run --rm nullc0d30/hunterx:latest platform
# List the integrated toolchain
docker run --rm nullc0d30/hunterx:latest tools list
# Start a full-spectrum mission against an authorized target
# (requires a target you own or are explicitly authorized to test)
docker run --rm nullc0d30/hunterx:latest hunt full_security_assessment https://YOUR-AUTHORIZED-TARGET
Missions, findings, reports and target memory persist to the configured database (SQLite by default), so chained invocations such as hunterx mission create ... → hunterx mission start <mission_id> work across container runs when the same database volume is mounted.
The image ships the FastAPI application. Start it and point a browser at http://localhost:8080/health:
docker run -d --name hunterx-api -p 8080:8080 \
--entrypoint uvicorn nullc0d30/hunterx:latest \
--factory hunterx.api.app:create_app --host 0.0.0.0 --port 8080
curl http://localhost:8080/health
# {"status":"ok"}
API-key authentication is opt-in. When enabled, every request (except /health) requires a valid X-API-Key header:
docker run -d --name hunterx-api -p 8080:8080 \
-e HUNTERX_API_AUTH_ENABLED=true \
-e HUNTERX_API_KEY=YOUR_ADMIN_KEY \
--entrypoint uvicorn nullc0d30/hunterx:latest \
--factory hunterx.api.app:create_app --host 0.0.0.0 --port 8080
HunterX persists mission state to the database. The image stores it in the
application data directory (/opt/hunterx/data, image default
sqlite:////opt/hunterx/data/hunterx.db). Mount a volume there:
docker run -d --name hunterx-api -p 8080:8080 \
-v hunterx-data:/opt/hunterx/data \
--entrypoint uvicorn nullc0d30/hunterx:latest \
--factory hunterx.api.app:create_app --host 0.0.0.0 --port 8080
The container runs as the non-root hunterx user and /opt/hunterx/data is writable by it.
docker run -it --rm --entrypoint sh nullc0d30/hunterx:latest
The repository ships a docker-compose.yml with two services:
docker compose up -d hunterx-api # API service (port 8080)
docker compose run --rm hunterx help # CLI service
Configuration is resolved in this order (each level overrides the previous):
hunterx.yaml profileHUNTERX_CONFIG environment variable, or hunterx.yaml in the working directory (/app)HUNTERX_* environment variables| Variable | Default | Description |
|---|---|---|
HUNTERX_LOG_LEVEL | INFO | Root logging level |
HUNTERX_DATA_DIR | /opt/hunterx/data (image default) | Application data directory (created automatically) |
HUNTERX_DATABASE_URL | sqlite:////opt/hunterx/data/hunterx.db (image default) | SQLAlchemy database URL; the image defaults to the writable /opt/hunterx/data volume so persistent state is never lost |
HUNTERX_CACHE_BACKEND | memory | Cache backend (memory, redis, null) |
HUNTERX_QUEUE_BACKEND | memory | Queue backend (memory, redis, null) |
HUNTERX_API_HOST | 127.0.0.1 | API bind host |
HUNTERX_API_PORT | 8080 | API port |
HUNTERX_API_AUTH_ENABLED | false | Require an API key on every request |
HUNTERX_API_KEY | (empty) | Admin API key; when set, authentication is enforced |
HUNTERX_API_READ_ONLY_KEY | (empty) | Optional read-only API key |
HUNTERX_CONFIG | (empty) | Path to a YAML profile file |
HUNTERX_ENVIRONMENT | production | Environment name (dev, staging, production) |
AI is optional: with no provider configured HunterX runs on a safe NullAIClient
fallback. Provider and model are selected independently; each provider uses its
own key variable:
| Provider | HUNTERX_AI_PROVIDER | HUNTERX_AI_MODEL (example) | API key variable |
|---|---|---|---|
| OpenAI | openai | gpt-4o-mini | HUNTERX_AI_OPENAI_KEY |
| Anthropic / Claude | anthropic | claude-3-5-sonnet-latest | HUNTERX_AI_ANTHROPIC_KEY |
| DeepSeek | deepseek | deepseek-chat | HUNTERX_AI_DEEPSEEK_KEY |
| OpenRouter | openrouter | deepseek/deepseek-chat | HUNTERX_AI_OPENROUTER_KEY |
| Google Gemini | gemini | gemini-1.5-flash | HUNTERX_AI_GEMINI_KEY |
| xAI / Grok | grok | grok-2-latest | HUNTERX_AI_GROK_KEY |
Each provider resolves its own API endpoint (for example openai → api.openai.com,
deepseek → api.deepseek.com, openrouter → openrouter.ai); HunterX never
silently reroutes one provider to another and never rewrites the configured
model. Missing credentials, invalid keys, invalid models, rate limits and
provider outages are reported truthfully. Every provider route is implemented
and unit-tested; live completion requires your own credential for the selected
provider.
Example:
docker run --rm \
-e HUNTERX_AI_PROVIDER=openai \
-e HUNTERX_AI_MODEL=gpt-4o-mini \
-e HUNTERX_AI_OPENAI_KEY=YOUR_API_KEY \
nullc0d30/hunterx:7.0.0 config
Example:
docker run --rm \
-e HUNTERX_LOG_LEVEL=DEBUG \
-e HUNTERX_DATABASE_URL=sqlite:////opt/hunterx/data/hunterx.db \
nullc0d30/hunterx:7.0.0 config
Secrets. Do not commit API keys or credentials. Pass secrets at runtime via
HUNTERX_*environment variables or Docker secrets, and never place real credentials in a checked-inhunterx.yaml.
hunterx user (UID 999) and exposes a single writable volume at /opt/hunterx/data for persistent state.python:3.11-slim, and publishes OCI labels (source, license, version) for supply-chain inspection.nullc0d30/hunterx:7.0.0) for reproducible deployments.HUNTERX_API_AUTH_ENABLED, use a strong HUNTERX_API_KEY, and do not expose the API port beyond your trusted network.HunterX is intended exclusively for authorized security testing: penetration testing, in-scope bug bounty programs, red-team operations, defensive security research, and laboratory environments. You are responsible for obtaining written authorization before testing any system and for complying with all applicable laws and terms of service. HunterX is licensed under Apache 2.0 and provided "AS IS" without warranty.
See Responsible Use and the Security Policy.
| Problem | Likely cause | Action |
|---|---|---|
docker run ... prints usage text | The CLI uses subcommands; no default command was supplied | Use hunterx help or a specific command such as hunterx version |
attempt to write a readonly database / permission denied writing state | The database path is not writable by the hunterx user (UID 999) | The image defaults to HUNTERX_DATABASE_URL=sqlite:////opt/hunterx/data/hunterx.db. Ensure /opt/hunterx/data is writable by UID 999: use the compose named volume (hunterx-data), or for a bind mount run chown -R 999:999 ./data on the host dir |
API returns 401 | Authentication is enabled and the request has no/incorrect key | Send a valid X-API-Key header |
| Wrong version behavior | Running a legacy 6.x/4.x image or an old latest | Pull a v7 tag and run hunterx version to confirm |
| Config looks wrong | Env var name or YAML profile error | Run docker run --rm nullc0d30/hunterx:latest config to inspect the resolved configuration |
If HunterX is useful to your authorized security work, consider supporting its continued development:
HunterX is created and maintained by Ahmed Awad (NullC0d3), released under the Apache License 2.0.
Content type
Image
Digest
sha256:b6872048b…
Size
64.5 MB
Last updated
about 1 month ago
docker pull nullc0d30/hunterx