Docs / Start

Configuration

All settings load from environment variables via pydantic-settings. The .env.example documents every variable with REQUIRED / OPTIONAL / SECRET labels; the key ones are below.

Core

VariableDefaultDescription
LOG_LEVELINFODEBUG · INFO · WARNING · ERROR · CRITICAL
JSON_LOGStrueSingle-line JSON logs (recommended in production)
DEBUGfalseVerbose API errors — never true in production
HOST / PORT0.0.0.0 / 8000Uvicorn bind (Docker maps host :8001)

Secrets & integration

VariableDescription
GITHUB_TOKENDefault PAT (scopes: repo, read:org). Overridable per scan request; leave blank to require per-request tokens.
GITHUB_API_BASEOverride for GitHub Enterprise Server (default api.github.com)
PERISCOPE_API_KEYAPI key for /agent/* routes — required in production (startup fails without it)
PERISCOPE_SECRET_KEYFernet key(s) for encryption at rest; multiple keys enable MultiFernet rotation

Database

DATABASE_URLsqlite:///scanner.db (dev) or postgresql+psycopg2://… (production)
FINDINGS_WRITE_MODEimmediate (crash-safe, default) or batch (faster)
DB_WRITE_TIMEOUT / DB_WRITE_MAX_RETRIES30 s per attempt · 3 retries with exponential backoff
FINDINGS_BATCH_FLUSH_SIZEFindings per transaction chunk (default 50)

Scanning defaults

DEFAULT_SCAN_TYPEshallow | deep
DEFAULT_SCAN_HEAD_FILES / _WORKFLOWS / _ALL_BRANCHESPer-flag overrides, all true by default
DEFAULT_SCAN_ALL_COMMITSfalse — enables deep history walking when true
DEFAULT_MAX_COMMITS / DEFAULT_MAX_BRANCHES500 commits · 50 branches per repo in deep scans
AUTO_TRIGGER_AGENT / ENABLE_SARIF_OUTPUTAuto-run the agent loop after scans · write SARIF alongside text reports

Source: backend/.env.example (379 lines, 40+ variables) · radar_scanner/core/config.py

← Getting startedDeployment →