Seven Dates, One Bill

Seven scheduled changes between October 31 and January 14 reprice the models most production stacks run on, and five of them raise the price by default. Gemini 4 Argon doubles to $4/$20 on December 1, Opus 5.5's price. Gemini 3.8 Flash doubles on January 1. GPT-5.6 Sol's promotion can end November 21. On December 11, OpenAI's named replacement for gpt-5-mini, gpt-5.6-terra, costs 6.9x as much per request, while GPT-6 Luna costs 69% less. Sonnet 4.5 retires November 30, and Sonnet 5.5 is 13% cheaper per chat request, not 33%, because of its tokenizer. DeepSeek's free search ends October 31. On a sample six-model stack, autopilot raises the monthly bill 63% by January 14. Includes repricing.py, 77 lines that price your own usage export on every date.

Published 2026-10-28 by Dor Amir on the Nadir blog.

Filed under Pricing & Models.

TL;DR.

Between October 31 and January 14, seven scheduled changes reprice the models most production stacks run on. None of them needs you to do anything. That's the problem: on five of the seven, doing nothing or accepting the provider's named replacement makes the same request cost more.

Dates and prices are from the OpenAI, Anthropic, Google and DeepSeek pricing and deprecation pages, retrieved October 28, 2026. The request shapes and the sample stack are ours, and are illustrations, not measurements. No figure here comes from Nadir customer data.

The calendar.

Timeline from October 28, 2026 to January 14, 2027 with seven events. Oct 31: DeepSeek search goes from free to $0.75 per 1,000 calls. Nov 21: GPT-5.6 Sol promo can end, +25% input and +50% output. Nov 30: Sonnet 4.5 retires, Sonnet 5.5 about 13% cheaper per request. Dec 1: Gemini 4 Argon introductory price ends, 2x. Dec 11: gpt-5, gpt-5-mini, gpt-5-nano and o3 shut down. Jan 1: Gemini 3.8 and 3.6 Flash introductory price ends, 2x. Jan 14: gpt-4o, gpt-4.1 and the mini models shut down, replaced by GPT-6 Luna.
Timeline from October 28, 2026 to January 14, 2027 with seven events. Oct 31: DeepSeek search goes from free to $0.75 per 1,000 calls. Nov 21: GPT-5.6 Sol promo can end, +25% input and +50% output. Nov 30: Sonnet 4.5 retires, Sonnet 5.5 about 13% cheaper per request. Dec 1: Gemini 4 Argon introductory price ends, 2x. Dec 11: gpt-5, gpt-5-mini, gpt-5-nano and o3 shut down. Jan 1: Gemini 3.8 and 3.6 Flash introductory price ends, 2x. Jan 14: gpt-4o, gpt-4.1 and the mini models shut down, replaced by GPT-6 Luna.
DateWhat changesBeforeAfterSource
Oct 31, 16:00 UTCDeepSeek Search and Fetch API billing startsFree$0.75 per 1,000 successful callsDeepSeek Search API guide
Nov 21 (earliest)GPT-5.6 Sol promotion may end$4 / $20$5 / $30, impliedOpenAI model page
Nov 30claude-sonnet-4-5-20250929 retires$3 / $15Sonnet 5.5, $2 / $10Anthropic model deprecations
Dec 1Gemini 4 Argon introductory price ends$2 / $10$4 / $20Gemini API pricing
Dec 11gpt-5, gpt-5-mini, gpt-5-nano, o3, gpt-5-pro, o3-pro shut downVariousNamed: gpt-5.6-sol, -terra, -lunaOpenAI deprecations
Jan 1Gemini 3.8 Flash and 3.6 Flash introductory price ends$0.75 / $3.75$1.50 / $7.50Gemini API pricing
Jan 14gpt-4o, gpt-4o-mini, gpt-4.1, gpt-4.1-mini shut downVariousNamed: gpt-6-lunaOpenAI deprecations

USD per million input / output tokens. On the Gemini rows, cached-input prices move with the base price: Argon's goes from $0.10 to $0.20, Flash's from $0.075 to $0.15, and Flash's explicit-cache storage from $0.50 to $1.00 per million tokens per hour.

Two details in the sources change the math.

The Sol number after November 21 isn't published. OpenAI's page says the promotion runs "at least through November 21, 2026" and describes it as "a 20% reduction in input pricing and a 33% reduction in output pricing." Undoing those gives $5 input and $30 output. That's our inference, and OpenAI could extend the promotion. Budget for the list price anyway.

Fine-tunes retire with their base model. OpenAI's deprecations page says fine-tuned versions follow the base model's shutdown schedule. A fine-tuned gpt-4o-mini stops working on January 14 along with the base, and you can't move it by changing a string. The training data has to be run again on a model that stays.

What each date does to a request.

Per-token prices don't tell you what a request costs. We priced two shapes on each change. A chat request is 3,000 uncached input tokens and 500 output. An agent turn is 2,000 uncached input, 48,000 cached input and 1,000 output.

Diverging bar chart of the change in cost per 1,000 chat requests if you take the default path. gpt-5-mini to gpt-5.6-terra on Dec 11: +586%. gpt-5 to gpt-5.6-sol on Dec 11: +243%. Gemini 4 Argon intro ends Dec 1: +100%. Gemini 3.8 Flash intro ends Jan 1: +100%. GPT-5.6 Sol promo ends Nov 21: +36%. Sonnet 4.5 to Sonnet 5.5 on Nov 30: −13%. gpt-4.1-mini to gpt-6-luna on Jan 14: −72%. gpt-4o to gpt-6-luna on Jan 14: −96%.
Diverging bar chart of the change in cost per 1,000 chat requests if you take the default path. gpt-5-mini to gpt-5.6-terra on Dec 11: +586%. gpt-5 to gpt-5.6-sol on Dec 11: +243%. Gemini 4 Argon intro ends Dec 1: +100%. Gemini 3.8 Flash intro ends Jan 1: +100%. GPT-5.6 Sol promo ends Nov 21: +36%. Sonnet 4.5 to Sonnet 5.5 on Nov 30: −13%. gpt-4.1-mini to gpt-6-luna on Jan 14: −72%. gpt-4o to gpt-6-luna on Jan 14: −96%.
ChangeDefault pathChat, per 1KAgent, per 1KA better-priced option
gpt-5-mini retiresgpt-5.6-terra$1.75 → $12.00 (+586%)$3.70 → $25.60 (+592%)GPT-6 Luna: $0.55 (−69%)
gpt-5 retiresgpt-5.6-sol$8.75 → $30.00 (+243%)$18.50 → $64.00 (+246%)GPT-6.1 Sol: $11.00 (+26%)
Argon intro endsStay on Argon$11.00 → $22.00 (+100%)$18.80 → $37.60 (+100%)GPT-6.1 Sol: $11.00 (0%)
Flash intro endsStay on 3.8 Flash$4.13 → $8.25 (+100%)$8.85 → $17.70 (+100%)3.5 Flash-Lite: $2.15 (−48%)
Sol promo endsStay on GPT-5.6 Sol$22.00 → $30.00 (+36%)$47.20 → $64.00 (+36%)GPT-6.1 Sol: $11.00 (−50%)
Sonnet 4.5 retiresSonnet 5.5$16.50 → $14.30 (−13%)$35.40 → $24.44 (−31%)GPT-6.1 Sol: $11.00 (−33%)
gpt-4.1-mini retiresgpt-6-luna$2.00 → $0.55 (−72%)$7.20 → $1.18 (−84%)Same
gpt-4o retiresgpt-6-luna$12.50 → $0.55 (−96%)$75.00 → $1.18 (−98%)Same, after an eval

List prices as of October 28, 2026. The "better-priced option" is the cheapest same-tier model we'd put through an eval, not a recommendation for your workload.

Three patterns show up in that table.

1. The named replacement is a default, not a price check.

OpenAI's December 11 replacements were written on June 11, before GPT-6 shipped. They point at the GPT-5.6 family, and the cheapest GPT-5.6 option is no longer the cheapest option. gpt-5-mini to gpt-5.6-terra is the worst row on the calendar: 8x the input price and 6x the output, for a model that has no GPT-6 successor and that GPT-6 Sol already matches on price. We covered the same pattern for the October 23 wave in The Replacement Is a Raise. It hasn't gone away. It moved to December.

Not every retirement has a cheaper exit. gpt-5 was priced at $1.25/$10, and the cheapest current model in its tier, GPT-6.1 Sol at $2/$10, still costs 26% more on a chat request. On an agent turn the gap is 2%, because Sol's cached input is $0.10 against gpt-5's $0.125. When there's no like-for-like discount, the remaining lever is sending fewer requests to that tier at all.

2. An introductory price is a scheduled raise.

Argon at $2/$10 is the same price as Sonnet 5.5 and GPT-6.1 Sol. On December 1 it becomes $4/$20, the same price as Opus 5.5. Nothing about the model changes that day. What changes is which tier you're paying for. Teams that picked Argon in October because it matched Sonnet on price will be paying Opus prices for it in December, unless they re-run that comparison.

Gemini 3.8 Flash is the same story one step down. At $1.50/$7.50 from January 1, its output costs 15x GPT-6 Luna's or Haiku 5.5's $0.50. That's fine if Flash is what clears your quality bar. It's a lot to pay for inertia.

Introductory prices do get extended. Sonnet 5's did, three weeks before its scheduled end. Neither Google page says anything like that today, so plan on the dates as written.

3. Some forced migrations are the biggest cut you'll get, if the smaller model holds.

gpt-4o to GPT-6 Luna is a 96% cut on a chat request. It's also a move from a 2024 flagship to a 2026 small model. Luna is newer and likely stronger on plenty of tasks gpt-4o was doing, but "likely" isn't a test. Run your eval set on Luna before January 14. If part of the traffic fails, route that part to GPT-6.1 Sol and keep the rest on Luna. Splitting the traffic usually beats picking one model for all of it.

Sonnet 4.5 to Sonnet 5.5 is the subtle one. The per-token price falls a third, and Anthropic's pricing page says the newer tokenizer "produces approximately 30% more tokens for the same text," with the exact increase depending on content. On our shapes, that turns a 33% token price cut into a 13% cut per chat request. Agents do better, at 31%, because Sonnet 5.5's cache reads are priced at 0.05x input instead of 0.1x.

The search line.

DeepSeek's Search and Fetch APIs bill $0.75 per 1,000 successful requests from 00:00 Beijing time on November 1, which is 16:00 UTC on October 31. Until then, server-side search calls made through DeepSeek's harness, Claude Code or Codex are free. Only HTTP 200 responses with usable results count. Failed calls, empty results and timeouts aren't billed, and the count parameter doesn't change the price.

That's still cheap. Claude's server-side web search costs $10 per 1,000 searches plus the result tokens, about 13x more per call. The risk is volume you never priced because it was free: an agent loop that searches before every step makes thousands of calls a day, and none of them showed up on an invoice before Saturday. If you pointed a coding agent at DeepSeek's endpoint this month, count its search calls per task now. The Search Tax has the per-task math for agent search.

One stack, six invoices.

Take a sample stack spending $7,215 a month across six models: gpt-5-mini for support, a legacy gpt-4o summarizer, an agent on GPT-5.6 Sol, a coding agent on Sonnet 4.5, Argon for analysis and Gemini 3.8 Flash for extraction. Price the same monthly traffic on each date.

Step chart of the monthly bill of a sample six-model stack. Autopilot path: $7,215 on Oct 28, $7,875 on Nov 22, $7,757 on Dec 1, $12,367 on Dec 11, $13,282 on Jan 1, $11,744 on Jan 14, up 63%. A dashed line runs to $2,536 on Jan 14 for the re-priced path, labeled as a floor that assumes every candidate passes its eval.
Step chart of the monthly bill of a sample six-model stack. Autopilot path: $7,215 on Oct 28, $7,875 on Nov 22, $7,757 on Dec 1, $12,367 on Dec 11, $13,282 on Jan 1, $11,744 on Jan 14, up 63%. A dashed line runs to $2,536 on Jan 14 for the re-priced path, labeled as a floor that assumes every candidate passes its eval.

Autopilot, meaning accept every named replacement and let every promo lapse, ends at $11,744, up 63%. December 11 does most of the damage: gpt-5-mini traffic moves to gpt-5.6-terra and that one line goes from $800 a month to $5,440. January 14 brings part of it back, because gpt-4o moves to Luna.

The re-priced path moves each line to the cheapest candidate on its list and ends at $2,536, 65% below today. Treat that as a floor. It assumes gpt-5-mini traffic holds on Luna, Argon's analysis holds on GPT-6.1 Sol, and Flash extraction holds on Haiku 5.5. Some of those will fail on some requests. The realistic answer lands between the two lines, and per-request evals tell you where.

Tutorial: repricing.py.

repricing.py takes a monthly usage export, one row per model, and prices it on each date with the rate card in effect that day. When a model is retired on that date, it bills the provider's named replacement, so the first table is the autopilot path. The second table prices each row on the last date at the named replacement and at the cheapest candidate you listed for it.

"""repricing.py: price your monthly token mix on every Q4 2026 repricing date.

usage.csv has one row per model: model,input_m,cached_m,output_m (millions of
tokens a month). Retired models are priced at the provider's named replacement
("autopilot"), and each row also shows the cheapest candidate you listed.
"""
import csv
import sys

# USD per 1M tokens: (input, cached input, output). None = retired.
RATES = {
    "gpt-5":             [("2025-08-07", (1.25, 0.125, 10.0)), ("2026-12-11", None)],
    "gpt-5-mini":        [("2025-08-07", (0.25, 0.025, 2.0)), ("2026-12-11", None)],
    "gpt-4o":            [("2024-08-06", (2.50, 1.25, 10.0)), ("2027-01-14", None)],
    "gpt-4.1-mini":      [("2025-04-14", (0.40, 0.10, 1.60)), ("2027-01-14", None)],
    "gpt-5.6-sol":       [("2026-07-01", (4.00, 0.40, 20.0)),
                          ("2026-11-22", (5.00, 0.50, 30.0))],  # promo end, implied list
    "gpt-5.6-terra":     [("2026-07-01", (2.00, 0.20, 12.0))],
    "gpt-6.1-sol":       [("2026-10-01", (2.00, 0.10, 10.0))],
    "gpt-6-luna":        [("2026-09-22", (0.10, 0.01, 0.50))],
    "claude-sonnet-4-5": [("2025-09-29", (3.00, 0.30, 15.0)), ("2026-11-30", None)],
    "claude-sonnet-5-5": [("2026-09-28", (2.00, 0.10, 10.0))],
    "claude-haiku-5-5":  [("2026-10-07", (0.10, 0.01, 0.50))],  # prompts <= 100K
    "gemini-4-argon":    [("2026-10-13", (2.00, 0.10, 10.0)),
                          ("2026-12-01", (4.00, 0.20, 20.0))],
    "gemini-3.8-flash":  [("2026-10-01", (0.75, 0.075, 3.75)),
                          ("2027-01-01", (1.50, 0.15, 7.50))],
    "gemini-3.5-flash-lite": [("2026-06-01", (0.30, 0.03, 2.50))],
}
REPLACEMENT = {"gpt-5": "gpt-5.6-sol", "gpt-5-mini": "gpt-5.6-terra",
               "gpt-4o": "gpt-6-luna", "gpt-4.1-mini": "gpt-6-luna",
               "claude-sonnet-4-5": "claude-sonnet-5-5"}
# Same-tier options you would eval before switching. Edit for your workloads.
CANDIDATES = {"gpt-5": ["gpt-6.1-sol"], "gpt-5-mini": ["gpt-6-luna"],
              "gpt-5.6-sol": ["gpt-6.1-sol"], "gemini-4-argon": ["gpt-6.1-sol", "claude-sonnet-5-5"],
              "gemini-3.8-flash": ["gemini-3.5-flash-lite", "claude-haiku-5-5"],
              "claude-sonnet-4-5": ["gpt-6.1-sol"]}
TOKENS = {"claude-sonnet-5-5": 1.30}  # newer Claude tokenizer, about 30% more tokens
DATES = ["2026-10-28", "2026-11-22", "2026-12-01", "2026-12-11", "2027-01-01", "2027-01-14"]


def rate(model, day):
    """(model actually billed, rates) on day, following retirements."""
    card = [r for d, r in RATES[model] if d <= day][-1]
    return (model, card) if card else rate(REPLACEMENT[model], day)


def cost(row, model, card, src):
    k = TOKENS.get(model, 1.0) / TOKENS.get(src, 1.0)
    i, c, o = (float(row[x]) * k for x in ("input_m", "cached_m", "output_m"))
    return i * card[0] + c * card[1] + o * card[2]


def main(path):
    rows = list(csv.DictReader(open(path, newline="")))
    print("date        autopilot bill   change")
    first = None
    for day in DATES:
        total = sum(cost(r, *rate(r["model"], day), r["model"]) for r in rows)
        first = first or total
        print(f"{day}  ${total:>12,.0f}   {total / first - 1:+6.1%}")
    print(f"\non {DATES[-1]}:  billed as            autopilot   cheapest candidate")
    totals = [0.0, 0.0]
    for r in rows:
        billed, card = rate(r["model"], DATES[-1])
        auto = cost(r, billed, card, r["model"])
        opts = [(cost(r, m, rate(m, DATES[-1])[1], r["model"]), m)
                for m in CANDIDATES.get(r["model"], [])]
        best = min(opts + [(auto, billed)])
        totals[0] += auto
        totals[1] += best[0]
        print(f"  {r['model']:<18} {billed:<18} ${auto:>9,.0f}   ${best[0]:>9,.0f} {best[1]}")
    print(f"  {'total':<37} ${totals[0]:>9,.0f}   ${totals[1]:>9,.0f}")


if __name__ == "__main__":
    main(sys.argv[1])

The sample stack as a usage file:

model,input_m,cached_m,output_m
gpt-5-mini,800,1200,300
gpt-4o,300,200,60
gpt-5.6-sol,200,600,40
claude-sonnet-4-5,150,2400,30
gemini-4-argon,100,100,20
gemini-3.8-flash,600,200,120

python3 repricing.py usage.csv prints:

date        autopilot bill   change
2026-10-28  $       7,215    +0.0%
2026-11-22  $       7,875    +9.1%
2026-12-01  $       7,757    +7.5%
2026-12-11  $      12,367   +71.4%
2027-01-01  $      13,282   +84.1%
2027-01-14  $      11,744   +62.8%

on 2027-01-14:  billed as            autopilot   cheapest candidate
  gpt-5-mini         gpt-5.6-terra      $    5,440   $      242 gpt-6-luna
  gpt-4o             gpt-6-luna         $       62   $       62 gpt-6-luna
  gpt-5.6-sol        gpt-5.6-sol        $    2,500   $      860 gpt-6.1-sol
  claude-sonnet-4-5  claude-sonnet-5-5  $    1,092   $      840 gpt-6.1-sol
  gemini-4-argon     gemini-4-argon     $      820   $      410 gpt-6.1-sol
  gemini-3.8-flash   gemini-3.8-flash   $    1,830   $      122 claude-haiku-5-5
  total                                 $   11,744   $    2,536

How to adapt it:

  1. Build the usage file from the providers' exports. Anthropic's Console usage export breaks spend down by API key and model, which is also how its deprecation page says to find retiring models. OpenAI's usage dashboard and Google's billing export give the same split. Use uncached input, cached input and output as separate columns, because the cache line is where the prices differ most.
  2. Add every model you run. The rate table only has what the sample needs. Add gpt-5-nano ($0.05 / $0.005 / $0.40, retires December 11 to gpt-5.6-luna), o3 ($2 / $0.50 / $8, to gpt-5.6-sol), gpt-4.1 ($2 / $0.50 / $8) and gpt-4o-mini ($0.15 / $0.075 / $0.60), both to gpt-6-luna on January 14.
  3. Keep the candidates honest. CANDIDATES is where judgment lives. List models you'd actually put through an eval for that workload, and remember that a cross-provider switch also means a cold prompt cache and a different tokenizer.
  4. Check the tokenizer factor. 1.3 is Anthropic's approximate figure for the newer Claude tokenizer, and the real ratio depends on your content. Code and non-English text tend to land higher. Run count_tokens on a sample of your prompts on both models and use your ratio.
  5. Re-run it on November 22. If OpenAI extends the Sol promotion or publishes a different list price, change one row.

A checklist for this week.

  1. Grep for the retiring IDs. gpt-5, gpt-5-mini, gpt-5-nano, o3, gpt-4o, gpt-4o-mini, gpt-4.1, gpt-4.1-mini and claude-sonnet-4-5, including config files, environment variables, eval harnesses and fine-tune jobs. Aliases count: gpt-4o resolves to a dated snapshot that's on the list.
  2. Export usage by model and run repricing.py. You want the rows where autopilot raises the price, sorted by dollars.
  3. Run your eval set on the candidates for the top three rows. Start with the December 11 rows. They have the largest price jumps and the shortest runway.
  4. Count DeepSeek search calls per task if any agent uses DeepSeek's server-side search.
  5. Re-run the comparison behind every model you chose for its introductory price, before December 1 for Argon and before January 1 for Flash.
  6. Put Claude Haiku 4.5 and Opus 4.5 on a watch list. Anthropic lists their tentative retirement dates as "not sooner than" October 15 and November 24, 2026, and gives at least 60 days' notice. Neither is deprecated yet, but both dates have passed or are close.

Where Nadir fits.

repricing.py prices the calendar once. A router makes the same decision on every request, against the current rate cards.

The model name moves out of the code. With model="auto", Nadir sends each prompt to the cheapest model in your configured set that clears the quality floor you set on the API key. When gpt-5-mini retires or Argon's price doubles, you change the configured set, not every service that calls it. Each response reports which model served it and what it cost, so the per-model split in the tutorial exists for every request without a separate export.

Routing is the answer to "some of it fails on Luna." The re-priced line in the stack chart assumes every request holds on the cheaper model. Per-request routing doesn't need that assumption: the simple share goes to the small tier and the rest stays on a stronger one. That's usually the gap between the floor and what you'd actually save.

If you'd rather measure before anything changes, Observe mode serves exactly the model you asked for and records what routing would have chosen. With your own provider keys, Nadir charges no fee on any plan, and the provider bills you directly. Savings depend on your workload, and nothing in this post forecasts yours.

Start with a free key, or run repricing.py on last month's usage first and see which of the seven dates is yours.

Conclusion.

Seven dates in eleven weeks: a search fee, a promo that can end, two introductory prices that double, and three retirement waves. On the default path, five of them raise the price of a request, with the worst at 6.9x, and two lower it, with the biggest cut coming from a forced move to a smaller model. Nothing in this calendar requires you to act, which is why the bill will change in January for teams that didn't. Price your own mix on each date, test the candidates for the rows that go up, and make the model choice somewhere you can change it in one place.


Retirement dates and named replacements are from [OpenAI's deprecations page](https://developers.openai.com/api/docs/deprecations) and [Anthropic's model deprecations page](https://platform.claude.com/docs/en/about-claude/model-deprecations). OpenAI prices, including the GPT-5.6 Sol promotion wording, are from [OpenAI's API pricing](https://developers.openai.com/api/docs/pricing) and the [GPT-5.6 Sol model page](https://developers.openai.com/api/docs/models/gpt-5.6-sol). The post-promotion $5/$30 is our inference from the stated 20% and 33% reductions, not a published price. Claude prices and the tokenizer note are from [Anthropic's pricing page](https://platform.claude.com/docs/en/about-claude/pricing), with Haiku 5.5 at its rate for prompts up to 100K tokens. Gemini prices and introductory end dates are from [Google's Gemini API pricing](https://ai.google.dev/gemini-api/docs/pricing). DeepSeek's Search and Fetch pricing is from [DeepSeek's Search API guide](https://api-docs.deepseek.com/guides/search). [Tokencost's October 2026 price-change roundup](https://tokencost.app/blog/llm-api-price-changes-october-2026) pointed us to several of these dates. All prices were retrieved October 28, 2026, in USD, standard tier, short context. The request shapes and the sample stack are ours, and are illustrations, not measurements.

More on pricing & models

What Nadir is

Nadir is an LLM router. Nadir sends each prompt to the cheapest model that can handle it. A small decision model reads each prompt against your model menu and picks the lowest-cost model it expects to handle it. When the decision model is uncertain or unavailable, the request goes to the strongest model on the menu. The routing step makes no call to your model provider.

Nadir runs two ways. The decision API returns a model, reasoning-effort, cache, context, and policy recommendation without calling a model provider, beside the gateway you already run. That is how a shadow-mode evaluation works, and its projected savings stay advisory. The OpenAI compatible managed proxy executes the route, and migration is a two-line change: point the base URL at api.getnadir.com and set model to auto. On that path an optional verifier can score a complete non-streaming answer and escalate to a stronger model when it misses the configured bar. Streaming bypasses post-generation verification. BYOK is supported on every tier.

For coding agents, Nadir Auto is a terminal launcher for Claude Code or Codex that asks Nadir for the main-session model before each turn, with your configured model as the fallback and cost ceiling. Delegation integrations for Claude Code, Codex, or Cursor instead recommend a model tier for subagent work, and the agent decides; the Claude plugin can also move a main-thread turn to Haiku when Nadir's cache check prices it cheaper, unless its switch_main_model option is off. Either way inference runs on your own provider account, so Nadir holds no provider keys on that path.

What the numbers are, and what they are not

Nadir publishes each evaluation with its scope. On checkable code, run-check-escalate solved 392 of 395 common HumanEval and MBPP problems (99.2%), graded by running the canonical tests; that applies only to tasks with runnable deterministic tests. Nadir-Tumbler posts an arena_score of 72.3 on RouterArena's public scorer, 5th of 23 routers, which measures the routing decision on RouterArena's own model pool. A reference-assisted RouterBench evaluation over 11,420 held-out triples produced a 60% lower projected cost than always-Opus with about 98% retained quality and a 1.7% catastrophic-route rate. That experiment gave the verifier the expensive-model reference answer, which production does not have, so it is a research ceiling and not the deployed path.

None of these is a production guarantee, a universal savings rate, or a forecast for any particular workload. Customer savings are reported from measured execution against a declared baseline, and customer quality only from outcome-labelled traffic. Projected savings and realized savings are separate artifacts and are never blended.

Design-partner program

Three rungs, picked by risk appetite. Rung 0 Shadow runs advisory decision calls alongside live traffic and returns a projected receipt, with nothing in the request path changed. Rung 1 Hosted is the two-line swap on a production slice and returns a realized receipt. Rung 2 On-prem is a supervised six-week proof of concept inside the partner's VPC, where no prompt, response, or usage reaches Nadir. The commitments are the same at every rung. Apply for a rung directly: Rung 0 Shadow, Rung 1 Hosted, or Rung 2 On-prem. Not sure which fits? Start at getnadir.com/contact/?reason=design-partner.

Licensing

NadirClaw is the self-hosted core, source-available under the PolyForm Noncommercial License. Source-available is the correct label; NadirClaw is not open source. Nadir Route's hosted plan has no base fee and charges a variable fee only on measured savings from requests Nadir executed.

Pages on this site

Machine-readable summaries of this site: llms.txt and llms-full.txt.