unbiased ai

Crush, with Pareto doing the thinking

Crush already dresses the terminal up nicely. It only needs a model to wear it. Add Unbiased as an openai-compat provider in your crushrc, register unbiased/pareto and make it the large and small model. Pareto selects frontier and open models for each request and blends their outputs into one answer.

Tested live with Crush 0.98.150M tokens a week

A demonstration of Crush on Pareto, recreated from a real crush run test. Not a screenshot.

Four commands in crushrc

Crush reads its settings from crushrc, a Bash file of Crush commands that runs at startup. Use ~/.config/crush/crushrc for every project, or ./.crushrc in one project.

  1. Get an Unbiased API key

    Choose a plan, then create a key in the Unbiased platform. New accounts are reviewed and approved by a person before the key works.

  2. Add Unbiased as a provider

    Run provider add unbiased with --type openai-compat and --base-url https://api.unbiased.ai/v1, including the /v1. Pass the key as "$UNBIASED_API_KEY" so it stays out of the file.

  3. Register the model by hand

    Unbiased does not publish a model list for Crush to fetch, so add it yourself with model add unbiased/pareto. Then point both model large and model small at it.

  4. Export the key and start

    Set UNBIASED_API_KEY and run crush. For a single task without the TUI, use crush run -m unbiased/pareto "…". It approves its own tool calls, so point it at a folder you trust.

Tested on October 20, 2026Crush 0.98.1 on Pareto (pareto). It found the off-by-one in a failing Python test, edited chunk.py and reran the test to green. Run record.
~/.config/crush/crushrc
provider add unbiased \
  --name "Unbiased" \
  --type openai-compat \
  --base-url "https://api.unbiased.ai/v1" \
  --api-key "$UNBIASED_API_KEY"

model add unbiased/pareto \
  --name "Pareto" \
  --context-window 1000000 \
  --default-max-tokens 32000

model large unbiased/pareto
model small unbiased/pareto
Shell
export UNBIASED_API_KEY=your-unbiased-api-key
crush
# Or one task, no TUI:
crush run -m unbiased/pareto "Fix the failing test in test_chunk.py"

crush run approves its own tool calls for that one task, so run it in a folder you are happy for it to change. In the TUI, Crush asks before a tool runs. To approve some tools in advance, add a line such as permissions allow view ls grep glob edit to crushrc.

Crush stays. The model changes.

Crush gains a provider. The rest of your setup carries on as before.

One model string, several models behind it

Pareto is Unbiased’s blended AI model. On each request it selects frontier and open models and blends their outputs into one answer, so Crush talks to one model, unbiased/pareto, and never has to pick.

“When the frontier improves, Pareto improves; when frontier prices fall, you should benefit.” From the pricing page.

How a Pareto answer gets made →
An illustration, not a wiring diagram. The blend includes frontier and open models, and its composition can change.

What an agent task costs on Pareto

Agents make many model calls per task, so the price of a finished task matters more than the price of a token. The model card publishes both for Pareto on two public agent benchmarks.

Terminal-Bench 4.0Tasks an agent completes in a terminal
$0.48/task
50.8% solved
DeepSWE v1.1Changes an agent makes in a real codebase
$0.24/task
69.9% solved

Pareto 26.10, preliminary October 1, 2026 runs that may change; denominators and the cost method still require confirmation. Cost is the reported mean USD per task at API rates, not an estimate for your workload. Model card and method.

Pareto for Crush, by the month

One API key works across Crush and any other tool you point at Pareto. Pick a monthly allowance, or pay per token on Team.

Personal

$10/month

  • 50M tokens a week
  • 20 requests per minute
  • For one person
Choose Personal

Personal Max

$100/month

  • 600M tokens a week
  • 60 requests per minute
  • For one person
Choose Personal Max

Team

Pay as you go

  • Prepaid credits at published rates
  • 300 requests per minute
  • No weekly token cap
Get started with Team

Subscriptions are for one person and are not unlimited. New API accounts are reviewed by a person before access turns on, and commercial or production use needs a separate written agreement. Rates and limits are on Pricing.

Crush on Pareto, questions answered

Does Crush work with Pareto?

Yes. Crush accepts any OpenAI-compatible endpoint as an openai-compat provider, and Unbiased serves the OpenAI Chat Completions format. We ran Crush 0.98.1 against Pareto on October 20, 2026: it read a failing Python test, edited the file and reran the test to green. Format compatibility is not a promise that every feature works, so tell us if one doesn’t.

Should the provider type be openai or openai-compat?

openai-compat. That is the type Crush’s docs give for endpoints that are not OpenAI itself, and it sends requests to /v1/chat/completions, which is what we tested.

I still have a crush.json. Do I need to convert it?

Not yet. Crush still loads crush.json, but its docs mark JSON as deprecated and new options land only in crushrc. If both sit in the same folder, Crush merges them and crushrc wins. Crush can also convert the old file for you if you ask it.

Why use unbiased/pareto rather than plain pareto?

Crush’s -m flag accepts a bare model name or provider/model, to tell apart models with the same name across providers. The unbiased/ prefix makes Crush use the model you registered, which sends requests to Unbiased with your key.

Can I switch back to another model?

Yes. Press ctrl+l in the TUI and pick a different model, or change the model large line in crushrc. Delete the Unbiased lines to remove Pareto from the list.

Is Pareto made by the Crush team?

No. Pareto is Unbiased’s model. Crush is made by Charm, and Unbiased is not affiliated with or endorsed by them. You keep Crush and point it at the Unbiased API.

What happens when I hit the weekly allowance?

Requests over your plan’s limits return an HTTP 429 error. Personal includes 50M tokens a week and 20 requests per minute. Personal Max raises that to 600M a week and 60 requests per minute for $100/month. Team uses prepaid pay-as-you-go credits with no weekly token cap.

Do I choose between models?

No. You send every request to one model string, pareto. Pareto selects frontier and open models for each request and blends their outputs into one answer.

Is my code kept?

Personal and Personal Max are not our zero data retention tier: prompts and responses may be kept up to 30 days, as section 5(c) of the Terms explains. For work that must not be kept, ask about the Zero Data Retention API on the Private AI page.

Pareto works in other tools too

The same key and the same model string go into each of these. See them all.

Product names belong to their owners. Except where a guide says otherwise, Unbiased is not affiliated with or endorsed by the makers of the tools on this page.

Give Crush a bug worth crushing

Four commands in crushrc, one key and the same glamorous terminal. Pareto starts at $10 a month for 50M tokens a week.