Quickstart
Get ScanRook installed and running in under two minutes. This guide covers the three installation methods, your first scan, cache setup, and how to read the output.
Installation
Choose the method that fits your environment.
Shell installer (recommended)
Downloads the latest release binary for your platform and places it in your PATH.
curl -fsSL https://scanrook.sh/install | bashCargo
Build from source using Rust's package manager. Requires a working Rust toolchain (1.75+).
cargo install scanrookDocker
Run ScanRook as a container without installing anything on the host.
docker run --rm -v "$(pwd)":/work ghcr.io/devinshawntripp/scanrook:latest \
scan --file /work/artifact.tar --format json --out /work/report.jsonGitHub Actions
Add ScanRook to your CI pipeline. See the full GitHub Actions integration guide for a complete workflow example.
- name: Install ScanRook
run: curl -fsSL https://scanrook.sh/install | bashYour first scan
ScanRook auto-detects the file type: container tar, source archive, ISO, or binary.
# Save a Docker image to a tar file
docker save myapp:latest -o myapp.tar
# Scan it
scanrook scan --file ./myapp.tar --format json --out report.jsonscanrook scan --file ./myapp.tar --mode deep --format json --out report.jsonscanrook bin --path ./myapp --format json --out report.jsonscanrook sbom import --file ./sbom.cdx.json --format json --out sbom-report.jsonCache setup
ScanRook caches vulnerability API responses locally to speed up repeated scans.
By default, responses are cached under ~/.scanrook/cache/. You can override this with SCANNER_CACHE or --cache-dir. Set SCANNER_SKIP_CACHE=1 to disable caching entirely.
scanrook db checkscanrook db update --source all --file ./myapp.tarscanrook db clearCaching layers
ScanRook checks three caching layers in order:
- File cache (
~/.scanrook/cache/) -- default, disable withSCANNER_SKIP_CACHE=1 - PostgreSQL -- persistent CVE data via
DATABASE_URLenv variable; schema auto-initialized - Redis -- fast distributed cache for multi-worker deployments
Example output
ScanRook produces structured JSON reports with findings, evidence, and a summary.
{
"scanner": {
"name": "scanrook",
"version": "0.4.2"
},
"target": {
"file": "./myapp.tar",
"type": "container",
"sha256": "a1b2c3..."
},
"findings": [
{
"cve": "CVE-2024-12345",
"package": { "ecosystem": "npm", "name": "lodash", "version": "4.17.20" },
"severity": "HIGH",
"cvss": 7.5,
"confidence": "ConfirmedInstalled",
"evidence": [{ "source": "InstalledDb", "path": "/usr/lib/node_modules/..." }],
"fixed_in": "4.17.21"
}
],
"summary": {
"total_findings": 12,
"critical": 1,
"high": 3,
"medium": 5,
"low": 3,
"packages_scanned": 142
}
}See the Confidence Tiers page to understand what ConfirmedInstalled vs HeuristicUnverified means for your triage workflow.