nitpik
Free for personal and open-source use. No license key needed — just install and go.
AI-powered code reviews for your team. Bring your own model, bring your own API key. One flat platform fee — no per-seat charges, no usage caps.
Website · Documentation · Security Model · Get a License · nitpik help
Why nitpik?
- Bring your own model — use Anthropic, OpenAI, Gemini, Cohere, DeepSeek, xAI, Groq, Perplexity, or any OpenAI-compatible API. Your keys, your infrastructure, your data.
- Flat platform fee — one price for your whole team. No per-seat licensing, no usage-based billing, no surprises.
- Free for personal & OSS — use nitpik on personal projects and open-source repos at no cost, forever. No license key required.
- Single binary + Docker image — drop it into any CI pipeline in minutes.
- Configurable reviewer agents — built-in profiles or custom Markdown-defined reviewers with your team's conventions.
- Agentic mode — let the LLM explore your codebase with built-in and custom tools.
- Secret scanning — 200+ rules detect and redact secrets before code reaches the LLM.
- Threat scanning — 44 rules plus structural heuristics detect obfuscated payloads, backdoors, supply chain attacks, invisible Unicode tricks, and homoglyph identifiers.
- Every major CI platform — GitHub Actions, GitLab CI, Bitbucket Pipelines, Woodpecker/Forgejo/Gitea.
Getting Started
1. Install
Install script (recommended)
curl -sSfL https://raw.githubusercontent.com/nsrosenqvist/nitpik/main/install.sh | bash
This detects your platform, downloads the latest release, verifies the checksum, and installs the binary to /usr/local/bin. Pass options to customize:
# Install to a custom directory
curl -sSfL https://raw.githubusercontent.com/nsrosenqvist/nitpik/main/install.sh | bash -s -- --dir ~/.local/bin
# Install a specific version
curl -sSfL https://raw.githubusercontent.com/nsrosenqvist/nitpik/main/install.sh | bash -s -- --version v0.3.0
Homebrew (macOS and Linux)
brew tap nsrosenqvist/nitpik
brew install nitpik
Or build from source:
cargo install --path .
Once installed, update to the latest release at any time:
nitpik update
Docker
docker pull ghcr.io/nsrosenqvist/nitpik:latest
2. Activate Your License (commercial use only)
For commercial use, activate your license key:
nitpik license activate <YOUR_LICENSE_KEY>
nitpik license status # verify activation
The key is stored in ~/.config/nitpik/config.toml. You can also set the NITPIK_LICENSE_KEY environment variable in CI.
Personal and open-source projects do not need a license key.
3. Connect an LLM Provider
nitpik is bring-your-own-model. Set two environment variables — a provider name and the corresponding API key:
export NITPIK_PROVIDER=anthropic # or openai, gemini, cohere, deepseek, xai, groq, mistral, ollama, and more
export ANTHROPIC_API_KEY=sk-... # provider-specific key
Or use NITPIK_API_KEY as a universal fallback. To use a custom or self-hosted endpoint (any OpenAI-compatible API), also set NITPIK_BASE_URL.
4. Run Your First Review
nitpik review --diff-base main
That's it. nitpik diffs your current branch against main, picks a reviewer profile, scans for secrets, and prints findings to your terminal:
nitpik · Free for personal & open-source use. Commercial use requires a license.
✔ w/handler.rs done
✖ error in handler.rs:21
Backend crashes due to unhandled file I/O and parsing errors — The
`load_users` function uses `unwrap()` for file reading and parsing,
and accesses array elements without bounds checking.
→ Implement robust error handling (e.g., using `Result` and propagating
errors) instead of `unwrap()`. Add bounds checking for array access.
⚠ warning in handler.rs:36
N+1 query in `get_users_by_ids` — Calling `get_user` in a loop for
each ID results in an N+1 query pattern, leading to significant
performance degradation for large ID lists.
→ Consider implementing a batch fetch mechanism that retrieves all
users in a single operation.
───────────────────────────────────
2 findings: 1 errors, 1 warnings, 0 infos
Core Concepts
Diff Inputs
nitpik needs a diff to review. Pick whichever suits your workflow:
nitpik review --diff-base main # git diff against a branch/commit
nitpik review --scan src/main.rs # review a file directly (no git)
nitpik review --diff-file changes.patch # pre-computed unified diff
git diff main | nitpik review --diff-stdin # piped from another tool
Reviewer Lenses