Doctor
Use rank doctor to verify that the binaries your local tools need are installed, scope the check to a pentest, and read the install hints for missing binaries.
rank doctor diagnoses your local environment for pentests. It detects your operating system,
figures out which command-line binaries your local tools depend on, checks whether each one is on
your PATH, and prints an install command for anything missing. Run it before a
local pentest run so the agents don’t fail mid-execution on a missing tool.
rank doctor
What it checks
Doctor inspects the binaries that local tools invoke — the first command in each tool’s
command template, plus the binaries inside shell pipelines. It only considers tools that can run
locally (execution_mode of local or both, with a command); cloud-only tools, meta-tools
and MCP-backed tools are skipped because they don’t shell out on your machine.
There are three essential base binaries that almost every local tool relies on: bash, curl
and python3. By default, doctor hides these from the report when they are present and focuses on
the tool-specific binaries.
Scoping the check
Without flags, doctor validates the binaries referenced by the embedded example catalog of
local tools — a broad sweep of common scanners and utilities. To check only what a specific
pentest actually needs, scope it with --pentest:
| Invocation | Scope |
|---|---|
rank doctor | Binaries used by the embedded example tool catalog. |
rank doctor --pentest <id> | Only the binaries used by the tools assigned to that pentest. |
rank doctor --pentest 42
The --pentest form requires a configured token (it reads the pentest’s assigned agents and their
tools from the API). If the assigned tools turn out to need no external binaries — for example
they are all meta-tools or MCP tools — doctor says so and exits without a table.
Verbose output
By default, essential binaries that are present are hidden to keep the report short. Pass
--verbose (-v) to include them too:
rank doctor --verbose
Reading the report
Doctor prints the detected OS, then one line per binary: a green check for installed binaries and a red cross plus an install hint for missing ones.
rank doctor · OS detected: macos
Validating 14 binaries (pentest #42 (9 tools assigned)):
✓ amass installed
✓ nmap installed
✗ nuclei NOT found → brew install nuclei
✗ dalfox NOT found → go install github.com/hahwul/dalfox/v2@latest
2 binary(ies) not found:
• nuclei → brew install nuclei
• dalfox → go install github.com/hahwul/dalfox/v2@latest
Install the binaries marked as missing so the agents can use them during local execution.
OS-specific install hints
The install command is tailored to your detected OS (macOS, Linux or Windows). Hints map a binary to the appropriate package manager — for example:
| Binary | macOS | Linux |
|---|---|---|
nmap | brew install nmap | sudo apt install nmap |
nuclei | brew install nuclei | go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest |
dalfox | brew install dalfox | go install github.com/hahwul/dalfox/v2@latest |
shodan | pipx install shodan | pipx install shodan |
When a binary has no specific hint, doctor falls back to a generic “install it with your usual package manager” message.
Exit code
Doctor sets a non-zero exit code when at least one non-essential binary is missing, which lets
you gate a CI step on it. If the only missing binaries are essentials (bash, curl,
python3), the report still flags them but the exit code stays 0.
How it fits the local flow
Doctor is one of two helpers behind local execution:
rank doctorconfirms the binaries your local tools call are installed.rank envregisters the API keys those tools need.
A typical pre-run sequence is: assign your agents and tools, set any required keys with
rank env set, run rank doctor --pentest <id>, install whatever it reports as missing, then
rank pentest run <id> --local. Set RANK_DEBUG=1 for extra diagnostic logging while you work
through it.