AI code reviews.
Right in your terminal .

A provider-agnostic, local-first CLI that reviews your staged changes, a single commit, or a PR-style range — before your colleagues do. Zero telemetry. No server.

Zero telemetry Local response cache Six providers GPL-3.0
orbital-api — commitbrief --staged — 100×34
zsh
commitbrief --staged ×
git status
● running

works with every provider you already pay for

Anthropic · Claude Opus 4.7 / Sonnet 4.6 / Haiku 4.5
OpenAI · GPT-4o / GPT-4o-mini
Google · Gemini 2.5 Pro / Flash
Ollama · local, no API key
Claude Code CLI · subscription-backed
Gemini CLI · subscription-backed
Anthropic · Claude Opus 4.7 / Sonnet 4.6 / Haiku 4.5
OpenAI · GPT-4o / GPT-4o-mini
Google · Gemini 2.5 Pro / Flash
Ollama · local, no API key
Claude Code CLI · subscription-backed
Gemini CLI · subscription-backed
// principles

Built like a real CLI.
Not a SaaS in disguise.

Four guarantees we won't compromise on. Read the source — it's ~11k lines of Go.

01 · Privacy

Privacy-first & local-only

No telemetry, no analytics endpoint, no account. Config is plain YAML on disk. Pair with Ollama for a fully offline review loop — no API key, no network egress.

# ~/.commitbrief/config.yml
provider: ollama
providers:
  ollama:
    model: qwen2.5-coder:14b
output:
  lang: en
cache:
  ttl_days: 7
02 · Rules

Project rules in plain markdown

Drop a COMMITBRIEF.md next to your README. No DSL, no YAML schema — just the words you'd say in a code review, used as the system prompt.

# COMMITBRIEF.md
## Rules
- Block any new use of database/sql; use pgx.
- Flag log lines containing PII (email, phone).
- Prefer table-driven tests in _test.go.
03 · Cost

Engineered for cheap tokens

SHA-256 response cache skips reviews you've already run. Provider prompt caching (Anthropic, OpenAI, Gemini) cuts repeated input cost. --verbose tells you what you saved.

# commitbrief --staged --verbose./.commitbrief/cache
cachelocal cache hit0 ms tokensin 1,840 · out 612 · provider cached: 1,400 Saved$0.0042no call
# Saved: shown when the run was a local cache hit
04 · Providers

Truly provider-agnostic

Swap between six providers — four API backends plus subprocess wrappers around Claude Code and Gemini CLI — with commitbrief providers use or per-run --provider. Keep an alternate configured so a 429 is one command away.

anthropic claude-sonnet-4.6 default
openai gpt-4o-mini cloud
gemini gemini-2.5-pro 2M ctx
ollama any local model offline
claude-cli host CLI subprocess subscription
gemini-cli host CLI subprocess subscription
// 90 seconds, total

From zero to first review
before your coffee finishes brewing.

Three commands. No browser tab. No "log in to your dashboard." Config lives in ~/.commitbrief/config.yml.
1 $ commitbrief setup

Pick provider, paste key

An interactive wizard cycles through Anthropic, OpenAI, Gemini, and Ollama; pings the provider to confirm the key works.

┌─ commitbrief setup ──────────────────────────┐
? Pick a provider │
openai │
anthropic
gemini │
ollama (local) │
│ │
↑↓ move select ⌃c quit │
└──────────────────────────────────────────────┘
2 $ commitbrief init

Optional: your own rules

Embedded defaults ship in the binary, so day-one runs work without this step. init writes COMMITBRIEF.md + an OUTPUT.md template you can edit.

┌─ COMMITBRIEF.md ──── 24 lines ─┐
# orbital-api review rules
 
## Critical
- No raw SQL outside /db
- Always wrap context
 
## Style
- Use slog, not log
3 $ commitbrief

Review before you commit

Default scope is your staged diff. Reach any historic range via commitbrief diff <args> — forwards verbatim to git diff (HEAD~3 HEAD, main...feature, merge SHAs). Output in terminal, plain markdown, or strict JSON.

~/repos/orbital-api commitbrief
analyzing 4 files · cache: 3/7 hit
Critical
SQL injection in session.go:142
Medium
N+1 query in rank.go:78
Done in 4.7s · $0.0042
// commitbrief compress

Your rules file,
on a token diet.

Three embedded prompts rewrite COMMITBRIEF.md into a denser, equivalent instruction set. Backs up the original under .commitbrief/backups/, applies atomically, and refuses to overwrite when the result isn't actually smaller.

↳ shows tokens before/after + cost, asks [y/N], then overwrites in place. --out path writes elsewhere.
light
conservative trim
balanced
default
aggressive
maximum savings
denser, equivalent
before · COMMITBRIEF.md
verbose prose
1 # Code Review Rules for orbital-api
2  
3 Please review the changes carefully. Make sure
4 to consider performance, security, and style.
5  
6 ## Security
7 We have had issues with SQL injection in the
8 past, so please flag any use of string
9 concatenation when building queries. We prefer
10 parameterized queries with the pgx library.
11  
12 ## Performance
13 We run on small instances, so please flag any
14 N+1 query patterns, unnecessary allocations in
15 hot paths, and any blocking I/O in handlers...
16  
17 ## Style
18 Use slog over the standard log package, prefer
19 table-driven tests, and avoid global state...
after · balanced
same intent, fewer tokens
1 # orbital-api review rules
2  
3 SEC: flag string-concat SQL; require pgx params.
4 PERF: flag N+1, hot-path allocs, blocking I/O.
5 STYLE: slog over log, table-driven tests,
6 no globals.
// backup at .commitbrief/backups/COMMITBRIEF-<timestamp>.md

Catch the bug before
your colleague does.

One install. No account. Free forever — because it's open source.

Read the docs