
One endpoint in front of every model provider
Name the job once — bb/extraction — and Cruise picks a model for every request: the cheapest that still meets the conditions you set. New prices, new models and quiet retirements are absorbed in the catalogue, so the id in your code never has to change again.
Running in production today for BytesBrains’ own projects. Not yet self-serve — access is arranged with us.
What it does
Lanes: name the job, not the model
Write “bb/extraction” once. Cruise picks the cheapest member that can actually do the work on that request, and you never edit a model id again.
The catalogue keeps up so you do not
New prices, new models, retirements and quiet capability changes are absorbed in the catalogue. A model that stops measuring well stops being routed — your code hears nothing.
Your lanes, your conditions
Build a lane from constraints rather than a shortlist: tools-required, json-schema, vision-required, long-context. A member that fails one is not in the lane for any request.
One key instead of one per lab
A single Cruise key reaches every provider we route to. No accounts to open, no provider keys to rotate, no quota to chase across four dashboards.
Prices read from the source
Rates come from each host’s own page, peak windows and prompt-size tiers included — so a quote is what the bill will say, and an unpriced model is refused rather than guessed at.
Budgets that actually stop
A soft threshold warns and a hard cap refuses, per project, inside a prepaid balance for the workspace. Spend is reserved before the request, not reconciled hopefully afterwards.
Drop-in OpenAI compatibility
Point any OpenAI client at one base URL and change nothing else. Streaming, tools and structured output pass straight through.
Every request attributed
A ledger by project, model, key, lane, host or outcome — including the four ways a request can answer 200 without having worked.
Lanes: name the job, not the model
Pinning a model id in your code is a decision that ages. A lane is a model id that names the work — and for each request Cruise allocates the cheapest member that can actually do it, at that hour’s price.
"model": "bb/extraction"and never changes againdeepseek/deepseek-v4-flashcheapest that passes todaymistral/mistral-small-latestwhen tools are neededworkers-ai/llama-3.3-70bwhen the others are rate limited
Members are a candidate set, not an order of preference — the allocation is decided per request against that request’s own requirements. Change the set at runtime and every caller follows, with a record of what changed and what it saved.
Point a client at it
from openai import OpenAI
client = OpenAI(
base_url="https://cruise.bytesbrains.net/v1",
api_key="cru_live_…",
)
client.chat.completions.create(
model="bb/extraction", # a lane, or any measured model id
messages=[{"role": "user", "content": "…"}],
)The response names the model that actually served, so an allocation is never a mystery afterwards.
Stop maintaining model ids by hand
Lanes keep the choice current as the market moves, one key replaces the pile you keep in four dashboards, and every request can say what it bought. Bring the work; Cruise keeps up with the models.
Start a conversation
