Garak is a CLI-first LLM vulnerability scanner that probes language models for weaknesses like hallucination, data leakage, prompt injection, toxicity, and jailbreaks, then produces JSONL and HTML reports with DEFCON-rated findings. It began as leondz/garak in mid-2023, moved to the NVIDIA GitHub organization around v0.10.1, and is now maintained there under active development. Everything in garak is a plugin: probes, detectors, generators, harnesses, and buffs are all discovered via garak/_plugins.py, so most extension work means writing a new subclass of one of five base classes.
Orientation and CLI is the first stop, covering the Overview, Installation, CLI entry point, CLI arguments and flags, and Run lifecycle commands — enough to install garak and run a scan end to end. Configuration system documents the three-level YAML/JSON config hierarchy across Default core config, Config loading and precedence, Configurable base class, and HTTP user agent. The plugin subsystems each get their own top-level section: Probes, Detectors, Generators, Harnesses, and the shared machinery in Plugin architecture (plugin types and cache, Attempt and Message, exceptions). Spec and selection explains the unified run.spec grammar and how selectors resolve to concrete plugins, while Context Aware Scanning covers the newer trait/intent taxonomy, the intent service, and intent stubs. Evaluation and reporting covers the Evaluator, Report class, Report digest, and Calibration and scoring; Language providers documents the translation layer used by multilingual buffs; Testing and CI gathers fixtures, CI workflows, and the contribution policy; and Upgrading collects renames and breaking changes.
If you came here to install garak and scan a model, start with Installation and then CLI arguments and flags under Orientation and CLI. If you came here to understand how a run actually works internally, read Plugin architecture, then Harnesses and Evaluation and reporting in that order — they trace an Attempt from probe through detector to report. If you came here to add a new probe, detector, or generator, read the relevant base-class page (Probe base class, Detector base classes, or Generator base class) alongside Configurable base class, and check the matching test-contracts page under each section. If you are upgrading from an older garak and something broke, go straight to Upgrading for CLI flag renames, config key renames, and evaluator/report format changes.