Skip to content

Providers

Muhammet Şafak edited this page Oct 31, 2026 · 11 revisions

Home / Providers / Overview

Providers

CommitBrief supports eleven review backends. Eight call HTTPS APIs directly; three shell out to a host CLI tool. One additional mock provider is registered for tests and not user-relevant.

Name Type API key Page
anthropic HTTPS API required Anthropic
openai HTTPS API required OpenAI
gemini HTTPS API required Gemini
deepseek HTTPS API (OpenAI-compatible) required OpenAI-compatible
mistral HTTPS API (OpenAI-compatible) required OpenAI-compatible
cohere HTTPS API (OpenAI-compatible) required OpenAI-compatible
openai-compatible HTTPS API (any OpenAI-compatible endpoint) optional OpenAI-compatible
ollama HTTPS API (local) not needed Ollama
claude-cli host-CLI subprocess not needed (uses Claude Code's auth) CLI tools
gemini-cli host-CLI subprocess not needed (uses Gemini CLI's auth) CLI tools
codex-cli host-CLI subprocess not needed (uses Codex CLI's auth) CLI tools

Picking a provider

# Interactive wizard (asks which one + API key + model).
commitbrief setup

# Switch the active default later without re-entering keys.
commitbrief providers use openai

# Override for one invocation.
commitbrief --provider gemini --model gemini-3.1-flash-lite --staged

# Shorthand for the CLI-tool-backed providers.
commitbrief --cli claude --staged

Measured review quality

Two models have been measured on a corpus of 129 fixtures (96 with a planted bug, 33 clean) across Go, Java, JavaScript, PHP, Python and TypeScript, three runs each, measured 2026-10-26 (OpenAI) and 2026-10-31 (Gemini); COMMITBRIEF_EVAL_PROVIDER=<name> make eval-live reproduces them. A model passes if recall is at least 0.90, the false-positive rate on clean fixtures is at most 0.10, and recall in every language is at least 0.70.

Model Recall False-positive rate Cost per review Passes
Gemini gemini-3.8-flash 0.9731 0.0303 $0.006407 yes
OpenAI gpt-5.4-mini 0.9259 0.2929 $0.003674 no (false-positive rate)

Cost per review is the list rate with no cache discount; for Gemini it includes thinking tokens. Anthropic and every other provider are not measured yet, so none of them is ranked. commitbrief setup does not show these results and still labels every model "not measured".

API providers vs CLI-tool providers

Property API providers CLI-tool providers
Auth API key in CommitBrief config Host CLI's own auth (claude login, gemini auth)
Output shape Structured findings JSON (schema v1) Pre-formatted plain text from the host CLI
Cards / JSON / Markdown rendering All three available Plain-text emit only
--fail-on severity gate Honored Not applicable (no severity field)
Per-call cost Billed via the provider Counts against your host CLI subscription
--json / --markdown / --sarif allowed Yes No — rejected before any call
--output <file> Yes Yes (UC-07, since v0.9.2)

CLI-tool providers are a thin subprocess wrapper around the host's own CLI; CommitBrief feeds the combined prompt in and streams stdout out verbatim. Their Pricing() returns zero, so the cost preflight short-circuits silently, and no verbose footer is printed (plain-text output is streamed verbatim).

Provider name vs binary expectation

Provider Expected binary on PATH API endpoint
anthropic — api.anthropic.com
openai — api.openai.com
gemini — generativelanguage.googleapis.com
deepseek — api.deepseek.com
mistral — api.mistral.ai/v1
cohere — api.cohere.ai/compatibility/v1
openai-compatible — <base_url> (you set it)
ollama ollama runtime running on base_url <base_url> (default http://localhost:11434)
claude-cli claude (Claude Code) (subprocess, no HTTPS from CommitBrief)
gemini-cli gemini (Google Gemini CLI) (subprocess, no HTTPS from CommitBrief)
codex-cli codex (OpenAI Codex CLI) (subprocess, no HTTPS from CommitBrief)

For Ollama, the binary running the server is detected via the base_url (default http://localhost:11434). The Ollama daemon must be running.

Where models come from

For the eight API providers (Anthropic, OpenAI, Gemini, DeepSeek, Mistral, Cohere, openai-compatible, Ollama), the model is whatever you set in config (providers.<name>.model or --model). If unset, each provider falls back to its DefaultModel().

For CLI-tool providers, the host CLI manages model selection — the model config field is ignored.

See also

See also: Providers

Clone this wiki locally