Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Getting started

Install

# crates.io
cargo install cntrdct

# macOS / Linux via Homebrew
brew tap ktrysmt/cntrdct
brew install cntrdct

# pre-built archive (no compile); requires cargo-binstall
cargo binstall cntrdct

# install script (Linux x86_64/aarch64, macOS aarch64, Windows x86_64)
curl -fsSL https://raw.githubusercontent.com/ktrysmt/cntrdct/master/scripts/install.sh | bash

The cargo install path additionally ships a cargo-cntrdct shim so cargo cntrdct scan works alongside cntrdct scan.

First scan

cntrdct scan ./src                    # JSON to stdout (default)
cntrdct scan ./src --format sarif     # SARIF 2.1.0 for code-scanning tools

The default scan is fully offline: walker → tree-sitter parsers → Layer 1 detectors → Layer 2 ranker → Layer 4 SARIF emitter. No network access, no telemetry. See Network access policy for the design property and the CI gate that enforces it.

Optional: LLM adjudication

scan --adjudicate routes the top-N findings through the Layer 3 Anthropic Messages API for a second-opinion verdict. Gated behind the ANTHROPIC_API_KEY environment variable; off by default.

ANTHROPIC_API_KEY=... cntrdct scan ./src --adjudicate

See scan for the full flag reference.

Examples

Three runnable end-to-end examples live under examples/: a plain scan, a calibration run against a labelled corpus, and an adjudication run against a mock API.