Same model. Different account. Every time.
BurnBar's local router stretches one model across every account in your library that
serves it. Your gpt-5.5 stays
gpt-5.5. Your
claude-opus-4-7 stays
claude-opus-4-7. Default mode stays inside the selected provider
family. Exact Model Failover can look wider, but only after the next route proves the same
canonical model ID.
- 127.0.0.1:8317 · local-only
- two router modes · one daemon
- canonical model id · fail closed
- active route
- pressure
- rate-limited
- cooling · recovering
Your model in. Your model out. Every path.
Three things can happen to a request in flight. Watch what each one does — or refuses to do — to the model identity you asked for.
Exact mode: Factory Standard exhausted → OpenAI route, same canonical model.
No other account carries it → 503, never a swap.
Implementation · ProviderRoutingPolicy.decide ·
BurnBarProviderRouter.scoreAndRankRoutes · fail-closed gateway responses
Choose how far failover may look. The model still stays exact.
Provider-Family Failover is the conservative default: stay inside the selected provider family. Exact Model Failover is the opt-in expansion: BurnBar may cross to another provider or account, but only after it proves that route serves the same canonical model ID. Same gateway. Same accounts. A stricter proof gate before any wider retry.
Stay inside the selected provider family.
conservative capacity extension · no unrelated provider pool
- active route
- pressure
- rate-limited
- cooling · recovering
- Your selected family is the boundary. A Codex route stays with Codex accounts, a Claude route stays with Claude accounts, and a Z.ai route stays with Z.ai accounts.
- Your active route wins while healthy. The exact selected account and model stay active until quota, rate-limit, or availability state forces a retry.
- Account-level capacity. Add a second subscription or key in that provider family and BurnBar can hold it as the runner-up.
- Never a generic coding bucket. Provider-family mode does not send Claude traffic to Z.ai or Codex traffic to Claude just because a different account has quota.
On by default. No client changes needed.
Cross providers only when the model identity matches.
canonical model proof · fail closed if proof is missing
- F Factory Standard exhausted · canonical gpt-5.4 source
- O OpenAI healthy · canonical gpt-5.4 pass
- m gpt-5.4-mini similar · not exact reject
- std openai:standard capability class · not proof reject
only exact canonical identity may cross the gate
- The request creates a required canonical model ID. If you ask for
gpt-5.4, eligible routes must provegpt-5.4. - Cross-provider is allowed only after proof. BurnBar may move from Factory, OpenAI, Codex, or another account only when the destination serves that exact canonical model.
- Similar does not count.
gpt-5.4-mini,gpt-5.4-pro,gpt-5-family, and broad classes likeopenai:standardare rejected as substitutes. - Missing proof fails closed. If BurnBar cannot prove exact identity, the gateway returns a structured 503 instead of guessing.
- The audit trail says what happened. Events record the attempted model, canonical ID, original route, destination route, reason, and whether the invariant passed.
Cross-provider failover has to pass one simple test.
BurnBar does not ask "is this model similar?" or "is this provider good enough?" It asks a narrower question: can the destination route prove the same canonical model ID as the request? If yes, it may recover the request. If no, it stops.
- 01
Start with the requested model.
The incoming request creates a required identity. A direct request for
gpt-5.4requires canonicalgpt-5.4. The router carries that value through ranking, retry, and audit. - 02
Accept only exact catalog proof.
Explicit
canonicalModelIDwins. Otherwise direct catalog IDs count. Wrapper families count only when they have one unambiguous exact alias, likefactory-gpt-5.4-familyresolving togpt-5.4. - 03
Reject anything that merely looks close.
gpt-5.4-mini,gpt-5.4-pro,gpt-5-family,openai:standard, benchmark picks, and "similar" matcher hits are not exact proof. They stay advisory and never open the failover gate. - 503
No proof means no winner.
If the primary route is exhausted and no exact canonical match remains, BurnBar returns a structured unavailable response. That is deliberate: a clean failure is safer than a quiet model change your agent did not ask for.
Today's board verdict — model research, not failover permission.
Every twenty-four hours a board of language models runs research and analysis tasks against the model-landscape snapshot. The result is frozen, dated, and inspectable — the daily archive at /router/daily holds 12 of them. Below: today's top coding candidates, with source freshness and the deterministic selection score shown alongside. These rankings are advisory; they never prove that a failover destination is the exact same model.
Today · Coding 2026-06-12
Today's pick: GPT-5.5 xhigh — stable favorite rank #1 under 2026-05-13.stable-favorites; preferred reasoning effort xhigh; led the benchmark composite at 55/100; evidence is fresh; context window of 400k clears typical large-context work; runner-up Claude Opus 4.7 is held in reserve for instant failover.
-
AA
-
TB -
DA
A board of language models runs the daily research pass, then BurnBar reduces the findings to a deterministic selection score. Runtime pins, auth, quota, safety, availability, and exact-model failover rules still override the ranking.
- #1
GPT-5.5 xhigh OpenAI ctx 400k 99 selected - #2
Claude Opus 4.7 Anthropic ctx 1M 96 - #3
GLM 5.1 Z.ai ctx 256k 93
Google Nest Hub
Google · 7-inch smart display · Cast V2
-
source 3h ago
Claude updated 3h ago5.4BTOKENS · 5H
5-hour limit 8%92% leftWeekly limit 18%82% left -
reset passed
Codex updated just now42.0BTOKENS · 7D
5-hour window 33%67% left7-day window 45%55% left -
$400 included
Cursor updated 4m ago113.2MTOKENS · MO
Auto + Composer 8%92% leftAPI usage 78%22% left -
live local
Droid updated 4m ago11.2BTOKENS · 7D
5-hour window 350.8Mresets May 87-day window 3.9Bresets May 14
BurnBar casts a live provider dashboard to the Nest Hub on your kitchen counter. Refresh, brightness, theme, and provider filter are all controlled from the Mac app.
- Cast V2 + Home Assistant blueprints — no third-party server
- Provider rail, big-total, ambient, photo-blend layouts ship today
- Acceptance probe before "healthy" — `docs/SMART_DISPLAY_DEVICE_QA.md`
ULANZI TC001
Pixel clock · 32×8 LED matrix · AWTRIX HTTP
A faithful 32×8 LED matrix render — same glyph tables, same palette, same per-pixel glow blur the BurnBar daemon paints to AWTRIX firmware.
- AWTRIX HTTP — works on stock or community firmware
- Four layouts · provider dashboard, quota carousel, burn status, alerts
- Ember & whimsy palette by default · five palettes ship
Four bright lines we don't cross.
A router that's allowed to do anything is a router you can't predict. These are baked into the policy — not promises, code.
-
Will not swap your model on failover.
Exact Model Failover drops every candidate route whose canonical model ID does not match the requested one. If no candidate survives, the gateway returns a structured 503 — your IDE sees a clean error, never a silent substitute.
-
Will not collapse accounts into a generic quota pool.
Each account keeps its own bucket, its own cool-down clock, its own decision history. You added them separately because they cost and throttle differently — the router treats them that way.
-
Will not log secrets.
The local decision stream records the chosen account ID, the skipped ones, and the reason each was skipped. It never records the API key, the OAuth bearer, the request body, or the response body. Keys live in the macOS Keychain, device-local.
-
Will not treat benchmarks as absolute truth.
Benchmark snapshots feed the daily model board and inform deterministic recommendations. They never prove exact model identity. They never override a pin. They never beat live quota state. A model that benchmarks higher but is rate-limited right now still loses.
Interactive Account Lifecycle Playground.
The OpenBurnBar router dynamically tracks, scores, and re-ranks accounts in real time. Select a scenario below to watch how the local router executes failover paths, handles 429 rate limits, and triggers recovery, in a live-scrolling console.
The questions we get on every demo.
- Will failover ever change my model?
- No. Failover stays inside the model identity you asked for. If you sent
gpt-5.4, the router must prove the destination route serves canonical modelgpt-5.4. If no eligible account exists, BurnBar returns a structured 503 — never a silent substitute. - What is Provider-Family Failover?
- The default mode. BurnBar extends capacity inside the provider family you selected. A Codex route stays with Codex accounts, a Claude route stays with Claude accounts, and a Z.ai route stays with Z.ai accounts. It does not treat unrelated providers as one generic coding quota pool.
- What is Exact Model Failover?
- The opt-in mode for wider failover. BurnBar may try another provider or account after quota, rate-limit, or availability failure — but only if that destination proves the same canonical model ID as the request.
gpt-5.4can move to another route that truly servesgpt-5.4; it cannot becomegpt-5.4-mini,gpt-5.4-pro,gpt-5-family, or a genericopenai:standardroute. - What counts as proof of the same model?
- Explicit
canonicalModelIDwins. Otherwise BurnBar uses the real catalog model ID for direct models. Wrapper entries only count when they have one unambiguous exact alias, such asfactory-gpt-5.4-familyresolving togpt-5.4. Broad capability labels, benchmark recommendations, and matcher-only similar models do not count. - Is the daily model board a failover mode?
- No. The daily model board is advisory research: it explains model-landscape recommendations, source freshness, and why certain models look strong for a task. It does not grant permission to silently swap the model on a failed request. Provider-Family Failover and Exact Model Failover are the runtime modes.
- What benchmark sources does BurnBar use?
- Artificial Analysis (intelligence + coding indices · pricing · TPS), Terminal-Bench via Hugging Face (verified shell-loop agents), and Design Arena (pairwise Elo). Manual cached fixtures cover gaps. Every signal carries a freshness state — fresh / stale / unavailable / error / manual — surfaced in
/router/daily. Those signals are advisory; they are never proof of exact model identity. - Can I pin a model in either mode?
- Yes. In Provider-Family Failover, the pinned account stays active while healthy and the runner-up is selected inside that provider family. In Exact Model Failover, the pin still wins while healthy; only recoverable failures open the door to another provider/account, and only after the canonical model ID matches.
- Are routing logs safe?
- Yes. The local
ProviderRoutingDecisionEventstream records the chosen account ID, the skipped account IDs, and the reason each was skipped — never API keys, OAuth bearers, request bodies, or response bodies. Logs stay in the local SQLite store.
Pick the failover boundary once. Let the daemon enforce it.
Use Provider-Family Failover for conservative same-provider recovery, or Exact Model Failover when you want BurnBar to recover across providers without ever changing the canonical model.