
Recon-Scan: open‑source passive reconnaissance with AI‑powered security analysis. Zero‑touch, developer‑first, and privacy‑focused.
ReconScan is a open-source passive recon scanner with a FastAPI backend, async worker pipeline, and a single-page frontend. You can check the deployed site at https://recon-scan.vercel.app/
The point is fast signal: run a scan, get module-by-module findings, and get an AI summary that can now be exported as a polished PDF report.
If you just want it running quickly:
./start.sh
What this does:
.env from .env.example if missing..venv if needed.requirements.txt.http://localhost:8000.USE_ARQ_QUEUE=false for easier no-Redis local startup.Stop with Ctrl+C.
./start-docker.sh
What this does:
.env from .env.example if missing.cp .env.example .env
docker compose up --build
pip install -r requirements.txt
cp .env.example .env
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
arq app.worker.WorkerSettings
http://localhost:8000
Install test dependencies:
pip install -r requirements-dev.txt
Run the full suite:
pytest -q
After a scan completes, click Download PDF in the UI.
Backend endpoint:
GET /scans/{scan_id}/report.pdfThe report includes:
GET /healthPOST /scans
{ "target": "example.com" }{ "target": "example.com", "byoapi_key": "...", "byoapi_provider": "your_provider" }byoapi_key rejected unless ALLOW_BYO_API_KEY=trueuser_id is optional and kept for compatibilityGET /scans/{scan_id}GET /scans/{scan_id}/report.pdfFrom .env.example:
DATABASE_URL (default: sqlite:///./reconscan.db)REDIS_URL (default: redis://localhost:6379)USE_ARQ_QUEUE (default: true)RATE_LIMIT_PER_MINUTE (default: 10)RATE_LIMIT_PER_DAY (default: 200)ALLOWED_HOSTS (default: localhost,127.0.0.1)CORS_ALLOWED_ORIGINS (default: local development origins)ALLOW_BYO_API_KEY (default: )Contributions are welcome, especially around passive recon modules, reporting, frontend UX, and test coverage.
Please read the full contribution guidelines before opening a pull request:
MIT. See LICENSE.
falseOPENROUTER_API_KEY, ANTHROPIC_API_KEY, OPENAI_API_KEY (optional)VIRUSTOTAL_API_KEY, GOOGLE_SAFE_BROWSING_API_KEY (optional)