Skip to content
BytesBrains
Cruise — AI API gateway

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.

your code sends"model": "bb/extraction"and never changes again
  • deepseek/deepseek-v4-flashcheapest that passes today
  • mistral/mistral-small-latestwhen tools are needed
  • workers-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