netscope is a CLI network diagnostics tool.
It runs multiple checks in parallel and produces terminal, JSON, and health JSON reports.
- Parallel collection via
asyncio+httpx - Modular checks:
ip,routing,dns,speed,host,security,subscription - Graceful degradation: one failed provider does not break the full run
- Output modes: terminal report,
--json,--health-json,--save FILE
- Python
3.11+ - Linux
- System tools:
mtr,traceroute,dig,whois,nmap
Example (Arch Linux):
sudo pacman -S mtr nmap bind whois tracerouteFrom repository root:
./run-local-check.sh
./run-local-check.sh --json
./run-local-check.sh --health-jsonInstall local launcher:
chmod +x scripts/install-netscope.sh scripts/doctor.sh
./scripts/install-netscope.sh
./scripts/doctor.sh- Modules:
--all,--ip,--routing,--dns,--speed,--host,--security - Fast mode:
--fast(skips slow modulesspeedandrouting) - Output:
--json,--health-json,--save FILE,--brief,--explain - Integration:
--target,--profile-name,--run-id - Subscription:
--subscription-url https://... - AI (optional):
--ai-summary,--ai-model
netscope --fast
netscope --host --target 8.8.8.8
netscope --all --save report.txt
netscope --health-json --profile-name home-vpn --run-id "$(date -Iseconds)"
netscope --subscription-url "https://example.com/subscription"
netscope --brief --explainConfig loading priority:
NETSCOPE_CONFIG(path to JSON)./config/netscope.config.json~/.config/netscope/config.json
Templates:
.env.exampleconfig/netscope.config.example.json
Local setup:
cp .env.example .env
cp config/netscope.config.example.json config/netscope.config.jsonAI mode is optional and enabled only when OPENROUTER_API_KEY is set.
- Create/update
.env:
cp .env.example .env- Set values:
OPENROUTER_API_KEY=your_openrouter_key
OPENROUTER_MODEL=openrouter/auto- Run with AI summary:
netscope --brief --ai-summary- Optional model override:
netscope --brief --ai-summary --ai-model "openai/gpt-4.1-mini"If the key is missing, netscope runs normally without AI summary.
- Never commit real keys in
.envorconfig/*.json --subscription-urlaccepts only publichttpsURLs- Insecure HTTP providers are disabled by default
- Rotate keys if they were exposed in git history or logs
See SECURITY.md.
python -m pip install -r requirements-dev.txt
pytest -q