Models
Postil supports OpenAI-compatible chat completions and Anthropic Messages APIs. Use a managed provider such as OpenRouter, connect Anthropic directly, or run a local endpoint with Ollama, vLLM, SGLang, or LiteLLM.
Every model does the same job: read a diff, decide what is worth flagging. Capability and price vary across models; use case matters less, so the table below leads with facts (context, vision, weights, parameter class) instead of per-model recommendations.
Model catalog
This table uses committed public price snapshots from the OpenRouter catalog. The list spans cost and locally-runnable open-weights options. Bench-tested badges refer to the checked-in results below. Re-check live provider pricing before committing to a procurement number.
Hosted reviews route only to endpoints that deny data collection and hold no copy of the request, so a model whose providers offer no such endpoint cannot serve a hosted review at any price. That constraint is ours to enforce, not yours to configure. It also means the price a hosted review pays is the price of the qualifying route, which is not always the headline price for the model. Self-hosted and bring-your-own-key deployments choose their own provider and their own policy.
| Model | Capabilities | Price / 1M tokens |
|---|---|---|
GLM 5.2z-ai/glm-5.2 | 1.0M ctxopen-weights>200Bbench-tested | $0.966 in / $3.036 out |
Kimi K2.7 Codemoonshotai/kimi-k2.7-code | 262K ctxvisionopen-weights>200Bbench-tested | $0.71 in / $3.50 out |
DeepSeek V4 Pro 0813deepseek/deepseek-v4-pro-0813 | 1.0M ctxopen-weights>200Bbench-tested | $0.66 in / $1.98 out |
Kimi K2.6moonshotai/kimi-k2.6 | 262K ctxvisionopen-weights>200Bbench-tested | $0.95 in / $4.00 out |
DeepSeek V4 Flash 0731deepseek/deepseek-v4-flash-0731 | 1.3M ctxopen-weights40B-200Bbench-tested | $0.14 in / $0.28 out |
Qwen3.8 27Bqwen/qwen3.8-27b | 262K ctxvisionopen-weights<40B · locally runnablebench-tested | $0.45 in / $3.20 out |
DeepSeek V4 Prodeepseek/deepseek-v4-pro | 1.0M ctxopen-weights>200Buntested | $1.44 in / $2.88 out |
DeepSeek V4 Flashdeepseek/deepseek-v4-flash | 1.0M ctxopen-weights40B-200Buntested | $0.083 in / $0.165 out |
GPT-5.6 Lunaopenai/gpt-5.6-luna | 1.1M ctxvisionproprietarybench-tested | $0.20 in / $1.20 out |
Gemma 4 31Bgoogle/gemma-4-31b-it | 262K ctxvisionopen-weights<40B · locally runnablebench-tested | $0.09 in / $0.34 out |
Nemotron 3.5 Lightningnvidia/nemotron-3.5-lightning | 1M ctxopen-weights40B-200Bbench-tested | $0.08 in / $0.20 out |
Claude Haiku 4.5anthropic/claude-haiku-4.5 | 200K ctxvisionproprietaryuntested | $1.00 in / $5.00 out |
GPT-5 Miniopenai/gpt-5-mini | 400K ctxvisionproprietaryuntested | $0.25 in / $2.00 out |
Qwen3 32Bqwen/qwen3-32b | 131K ctxopen-weights<40B · locally runnablebench-tested | $0.08 in / $0.28 out |
Mistral Small 3.2 24Bmistralai/mistral-small-3.2-24b-instruct | 256K ctxvisionopen-weights<40B · locally runnablebench-tested | $0.094 in / $0.25 out |
Gemma 3 27Bgoogle/gemma-3-27b-it | 262K ctxvisionopen-weights<40B · locally runnablebench-tested | $0.08 in / $0.45 out |
Price values are a committed public snapshot from the OpenRouter catalog, captured August 19, 2026. Re-check provider pricing before committing to a procurement number. Capability badges are maintained in this repo.
Cost per review
Review cost depends on the observed prompt and completion token counts and the provider's per-token prices. The formula is straightforward:
review_cost =
prompt_tokens * input_price_per_token +
completion_tokens * output_price_per_tokenMultiply against the snapshot price in the table above for a rough per-review number. Larger diffs, consensus mode, or multiple model retries increase it.
Local models
Local inference is best for sensitive repositories and for teams that already operate GPU capacity. The catalog above marks open-weights models under 40B parameters as locally runnable. Start there. Postil fails closed when a model cannot produce a valid review envelope, so pick a coder-tuned model that follows JSON schema reliably.
Ollama
ollama pull qwen3:32b
POSTIL_API_BASE=http://localhost:11434/v1 \
MODEL_API_KEY=ollama \
POSTIL_API_KEY=ollama \
REVIEW_MODEL=qwen3:32b \
postil doctorvLLM or LiteLLM
export POSTIL_API_BASE=http://localhost:8000/v1
export MODEL_API_KEY=local
export POSTIL_API_KEY="$MODEL_API_KEY"
export REVIEW_MODEL=served-model-name
postil review --staged --output-jsonMeasured on our bench
Method: seeded-defect fixtures run through a mock forge against the real model, scored against ground truth. The suite is 70 fixtures, 57 with a seeded defect and 13 clean pull requests where the correct review is silence.
Every model we have scored, with detection, gate correctness, silence on clean pull requests, cost and latency, is on the model bench page, along with the raw report and the command to reproduce it.
These public model-bench fixtures are separate from the private 126-PR silence-rate measurement dataset. The public site publishes aggregate silence-rate methodology and figures, not the raw measurement dataset, envelopes, or run logs.
Run the bench yourself
The CLI benchmark harness can score live OpenRouter models against the fixture suite. Live mode spends real inference tokens, writes reports under postil-cli/bench/.runs, and never prints the API key.
cargo build --release
cd postil-cli/bench
bun install --frozen-lockfile
export MODEL_API_KEY=...
REVIEW_MODEL=deepseek/deepseek-v4-pro-0813 \
bun run bench:live -- --json-out .runs/v4-pro.jsonOne model per run. The report records the fixture corpus and evaluator digests alongside the metrics, so a run is only comparable to another run that scored the identical corpus with the identical evaluator.
Promote the cheapest model that preserves detection rate and silence on clean PRs for your own codebase. The numbers above are a starting point, not a substitute for running it on your diffs.