Features
Everything, listed rather than summarised.
A capability page is easy to write and hard to check. This one is organised so you can check it: the tools by name and side-effect class, then the loop that schedules them, then the rules that bound what the report is allowed to say.
The arsenal
Twenty-one tools. Nine of them never touch the target.
Side-effect class is a mandatory field on every registry row, and it is what the executor checks. Passive tools read public records and run on the free allowance; active tools send traffic to the target and are refused until an authorization record covers it.
Passive9 tools
no authorizationReads public data. Runs without authorization.
| subfinder | Subdomain enumeration from public sources. |
|---|---|
| dns_resolve | Resolves names to addresses and records. |
| httpx_probe | HTTP fingerprinting — status, title, technology. |
| tlsx_probe | TLS certificate and cipher inspection. |
| cdncheck_probe | Identifies CDN and WAF fronting. |
| crtsh_lookup | Certificate transparency search via crt.sh. |
| certspotter_ct | Certificate transparency via the Cert Spotter API. |
| whois_lookup | Registration and ownership records. |
| wayback_urls | Historical URLs from the Wayback Machine. |
Active12 tools
authorization requiredSends traffic to the target. Gated on authorization.
| naabu_portscan | Fast scan of the common port range. |
|---|---|
| naabu_full_portscan | Full 65535-port sweep. |
| nmap_scan | Service and version detection. |
| nmap_default_scripts | Nmap's default script set against found services. |
| nuclei_scan | Template-driven vulnerability checks. |
| nuclei_cve_scan | CVE templates only. |
| nuclei_exposure_scan | Exposed panels, files and endpoints. |
| nuclei_misconfig_scan | Common misconfiguration templates. |
| nuclei_takeover_scan | Dangling-record subdomain takeover checks. |
| katana_crawl | Crawls the site for reachable URLs. |
| katana_js_crawl | Extracts endpoints from JavaScript. |
| ffuf_content_discovery | Directory and content fuzzing. |
All twenty-one ship enabled; an administrator can disable any of them for an instance, and the agent then treats that capability as a visible gap rather than silently skipping it. Tool images are pinned by digest against an allowlist — an image outside it is refused, not pulled.
The loop
Planning that reacts to what it finds.
A fixed pipeline runs the same nine commands whatever the target looks like. Zero-Recon builds a task graph, reads each result, and decides what is worth doing next — recording why.
- 01
Scope from one sentence
The agent decides whether the message is a reconnaissance request at all, and what the mission's scope is if it is. Anything outside that scope is refused later regardless of what a result suggests.
- 02
Plan, then wait
A multi-phase task graph with the tool behind each step, the reasoning, and the estimated cost — shown to you before anything runs. Approve, reject, or describe a change and get a revised plan.
- 03
Resolve capabilities, not tool names
The planner asks for a capability — subdomain discovery, port discovery, CVE detection. The registry answers with the best available tool, preferring passive, then quality, then coverage, then cost.
- 04
Replan on evidence, record the reason
New entities trigger new decisions, each written down as a record: what was scheduled, what was held for authorization, and which capabilities had no tool to satisfy them.
The model proposes an entity and a capability — never a target and never a tool. The target is derived from the entity by ordinary code and the tool is resolved from the registry, so a prompt-injected result cannot redirect a scan at a host outside the mission's scope.
Correlation & reporting
One graph per target, one report bounded by coverage.
Nine tools produce nine shapes. Merging them is where findings get dropped by hand, so it is done once, deterministically, with stable identities.
- Deterministic identities
- The same host found by three tools stays one node. Merging is by identity, not by string equality on whatever the tool printed.
- Confidence, not duplication
- Corroborating evidence raises a finding's confidence instead of adding a second copy of it to the list.
- Coverage counted from task status
- Arithmetic over the plan's own tasks. No model participates, so it cannot fail open when a provider is down.
- The gate is re-applied on read
- A report written before the coverage rule existed cannot be trusted to have passed through it, so the check runs again every time the report is served.
What a report carries
- Findings
- with evidence
- Entity graph
- deduplicated
- Coverage
- counted, not estimated
- Score
- only at full coverage
- Decisions
- why each step ran
- Gaps
- named capabilities
- Formats
- md · json
Platform
The parts around the recon.
Accounts, tenancy, billing and the audit trail. Unglamorous, and the reason a shared mission is safe to share.
Accounts and sign-in
email · google · github
Email registration with verification, alongside Google and GitHub. Whether email sign-up is open is a deployment setting an administrator controls.
Organizations and roles
owner · admin · member · viewer
Team workspaces with email invitations and member management. A personal workspace can be converted; until it is, team controls are shown disabled with the server's own reason attached.
Tenant scoping
enforced at the repository layer
Missions, findings and reports are readable only within the account or organization that produced them — enforced below the API rather than by each endpoint remembering to filter.
Z-Coin metering
per execution
Tool executions cost by runtime and resources; an ordinary chat message costs five. Running out pauses the mission and you keep the partial report.
Append-only audit log
added to, never edited
Missions, authorization records and administrative actions are written to a log that has no update path.
Realtime mission view
websocket
Task status, streamed output and the decision timeline as the mission runs, rather than a spinner until it finishes.
Run the passive nine for free.
The daily allowance covers a real passive mission end to end. Nothing active runs until you prove you are allowed to run it.