Flaught

Your PR's designated skeptic.


The reviewer should not be the author. A model reviewing code it wrote itself tends to agree with its own choices. Same blind spots, same rationalizations. Flaught decouples the two: point it at any LLM, independent of whatever wrote the code, and get a genuinely adversarial second opinion instead of an echo.

bash
# install
npm install -g @flaught/core
# scaffold config + prompts, then review vs main
flaught init
flaught review --base main

Runs in GitHub Actions, GitLab CI, or any shell. No API key needed for the deterministic pass (flaught review --no-llm); set GROQ_API_KEY for the full LLM pass. Provider config →

01Five stages, one skeptical pass

Config Context assembly Deterministic tools tag: deterministic LLM adversarial pass tag: llm Test inversion Scope-creep detection Findings merged, source-tagged caps volume Noise budget checks threshold Severity gate no findings ≥ gate findings ≥ gate Exit 0 clean Exit 1 gated on fault Exit 2 error
Five stages produce findings tagged by source (deterministic tool vs. LLM), which pool together and pass through two gates (a noise budget that caps volume, then a severity check) to decide exit 0 (clean) or 1 (gated, blocks the PR). A fault anywhere in the pipeline (bad config, missing API key, LLM outage) skips both gates and exits 2 instead: a tool problem, not a verdict on the code.

Output: a Markdown PR comment plus a versioned JSON artifact you can keep (one snapshot per run, for trend tracking).

02See it work

Animated terminal recording: flaught review runs against main on a deliberately flawed pull request and reports findings, then a peek at the JSON artifact.
A deliberately flawed PR reviewed against main: a string-interpolated SQL query (critical, LLM-asserted), a scope-creep hunk in an unrelated file, and a vacuous test that passes on both sides of the change, caught by test inversion.

03Review with a different model than the one that wrote the code

Self-review is the weak spot in AI-assisted development: the model that wrote your PR is primed to defend it. Point .advreview.yml at a different provider and Flaught breaks that correlation, zero code change.

Groq default
groq/compound-mini
OpenAI
gpt-4o
Gemini
gemini-1.5-pro
Ollama
local + cloud

A sane pairing: code with Claude, review with Groq or GPT-4o. Code with anything, review with a different anything. Any OpenAI-compatible endpoint works via base_url; Anthropic has its own native adapter too, best paired as the coder here, not the reviewer.

04Extend it without forking it

The defaults are a starting point. Three surfaces let you reshape the review without touching Flaught's source: the prompt, the config, and the library API.

Prompt
.flaught-prompt/
Override any section (categories, severities, posture) or append team-specific rules on top of the defaults.
Config
.advreview.yml
Swap the linter, vuln scanner, or Semgrep ruleset; tune the noise budget and severity gate per project.
Library
runReview()
Call Flaught from Node for a custom dashboard or a CI system that isn't GitHub Actions.

Full guides: prompt templates, configuration, programmatic API.

05How it compares

Against the SaaS market leader and the closest open-source structural analog. The difference is what the review does: a tool that says “here are issues” is one thing; one that also asks “are these issues real?” (and whether your tests even test the change, and whether a hunk belongs in this PR) is another.

Flaught CodeRabbit Open Code ReviewAlibaba · OCR
Open source, self-hostable
Bring-your-own LLM (incl. local)
Deterministic tools + LLM, provenance-tagged~1~2
Adversarial refute / skeptic pass (cross-model)~3
Test inversion (vacuous-test detection)
Scope-creep detection

yes   ~ partial / varies   not a named feature

  1. 1 CodeRabbit runs 40+ linters + SAST + LLM, but doesn't tag each finding's provenance.
  2. 2 OCR is a deterministic-engineering + agent hybrid; its deterministic layer is file selection, line positioning, and rule routing, not external tools (Semgrep/linter/vuln) with per-finding source tags.
  3. 3 OCR has a reflection module (same-pipeline self-check), similar spirit, but not a different model refuting findings with anti-correlation.

06The honest caveat

The JSON artifact is evidence that scrutiny occurred, not evidence that findings are correct. LLM-asserted findings may include hallucinations. Deterministic-tool findings have their own false-positive rates. Treat this as a prompt for human review, not audit-truth.

Named for Monsignor Flaught, the devil's advocate in A Canticle for Leibowitz.