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:

InvocationScope
rank doctorBinaries 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:

BinarymacOSLinux
nmapbrew install nmapsudo apt install nmap
nucleibrew install nucleigo install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
dalfoxbrew install dalfoxgo install github.com/hahwul/dalfox/v2@latest
shodanpipx install shodanpipx 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 doctor confirms the binaries your local tools call are installed.
  • rank env registers 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.