Skip to content
BytesBrains
Cruise — AI API gateway

A job id that never goes stale. Fallback across providers.

For teams and agents calling several providers — write a

once and retune models underneath with no redeploy. A provider outage does not fail the job. One key, one prepaid balance, a ledger that attributes every request. Read the API reference.

Lane first · or pin a model

Two ways to set model — not two APIs.

You write

One client
Lane — Cruise picks
model="bb/extraction"

Names the job. Cruise finds the best match that can do this request.

Specific model
model="openai/gpt-4.1"
# or anthropic/… · google/…

You pick the provider and model.

Cruise · one key

Providers you already know

  • OpenAI
  • Anthropic
  • Google
  • Meta
  • Amazon

Equal weight · falls back if one refuses

You get

Either way
{
  "id": "chatcmpl-…",
  "object": "chat.completion",
  "choices": [{
    "message": {
      "role": "assistant",
      "content": {
        "invoice_id": "INV-1042",
        "total": "1280.00"
      }
    }
  }],
  "usage": {
    "prompt_tokens": 128,
    "completion_tokens": 42
  }
}

A normal chat completion — no workflow rewrite.

Name the job when you want Cruise to choose. Pin a model when you must. Same key, same response shape.

Why teams put a gateway in front

Lived reasons from running five to ten AI API vendors ourselves — not a price war with other gateways.

  • One prepaid balance
  • One key, every provider
  • Fallback across providers
  • Hard budgets that refuse
  • Cost per request
  • Drop-in OpenAI API
  1. One prepaid balance

    One workspace balance instead of ten auto-debits — a receipt for every payment, so an unexpected charge stands out.

  2. One key, every provider

    A single Cruise key reaches every provider we route to. Hygiene, rotation and access reviews scale with one key, not one per provider.

  3. Debugging stops being a key hunt

    Every Cruise key is listed by prefix with who issued it and when it was last used — minutes instead of engineering hours.

  4. A provider outage does not fail the job

    A lane can fall back to another model when one fails. Fallbacks help most when members sit with different providers.

  5. Hard budgets that refuse

    A soft threshold warns and a hard cap refuses, per project. Spend is reserved before the request, not reconciled afterwards.

  6. Agents pay for less tool output

    Switch it on for a project and Cruise compacts tool results — JSON, tables, repeated log lines — before the provider sees them. Nothing else in the request changes, and every response says what it saved.

  7. Drop-in OpenAI API

    Point any OpenAI client at one base URL and change nothing else. Streaming, tools and structured output pass straight through.

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.

Then 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. A lane’s allocation policy is a default, not a guarantee: a single request can override it.

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.

Where you work

One action per tool. Setup steps live in each listing or a dialog — not as peer heroes beside Get started.

BytesBrains Cruise on Open VSX

The same extension, for VSCodium, Gitpod, Eclipse Theia and other Open VSX clients.

Install from Open VSXFree · Open VSX

Cruise in Cursor

No extension needed: two fields in Cursor’s settings point its chat and agent at Cruise.

Needs a paid Cursor plan

Cruise in wrok.in

One key in wrok.in’s dashboard, and its agents review your pull requests with any model your Cruise key can reach.

Works on wrok.in’s Free plan

Cruise in OpenClaw

A provider plugin: install it, set one key, and OpenClaw lists every model your Cruise key can reach.

Free · npm and ClawHub

Cruise in n8n

A community node: install by name, set one Cruise key, and n8n agents and workflows reach every model that key can.

Free · npm · self-hosted n8n

Cruise for OpenCode

A provider plugin with live model discovery, project budgets, and Cruise spend tools inside OpenCode.

View on npmFree · npm · OpenCode

Cruise behind agentgateway

The gateway routes, Cruise prices — no plugin, and per-request cost headers survive the proxy.

Read the recipeKubernetes · standalone

Questions

What is a lane, and how is it different from choosing a model?

A lane is a model id that names a job, such as bb/extraction, rather than one model. You can still call any measured model by its own id. When you call a lane, Cruise picks for each request among the lane’s models that can serve that request, using the lane’s selection policy — the cheapest by default, and a single request can override it. Change the lane’s models and every caller follows with no code change. Every response names the model that actually served it.

Which providers and models can I use?

Every provider that may receive your requests is listed on our Sub-processors page. A model is routable only after Cruise has measured it within the last 30 days, and a model without a known price is refused rather than guessed at. With your key, GET /v1/models lists the models and lanes that key may call.

Sub-processors
Is my data shared with the providers? What does Cruise keep?

Yes: each request is forwarded to the provider that serves it and handled under that provider’s terms. What a provider does with prompts is disclosed per model — not retained, retained, may train on it, or unrecorded. Models that may train, and unrecorded ones, are available by default; a lane that requires no-training-on-data excludes both. Cruise’s own ledger keeps tokens, cost, the model, the key prefix and a digest of the request body — not the prompt or the completion. If you turn caching on, answers are stored for the cache window, at most 30 days.

Privacy Policy
What is tool-output compression, and what does it change?

It is off by default. An owner or admin switches it on for a project, or for one of your own lanes, which then compresses for every project that calls it. Where it is on, Cruise shrinks the tool outputs in each request before the provider sees them: compact JSON, tables for uniform arrays, and long arrays and repeated log lines shortened behind [cruise: …] markers that say what was removed. The provider bills the smaller request. It is lossy — the model does not see what was elided — and the system prompt and the user and assistant messages are never changed. The same tool output compresses to the same bytes every time, so prompt caching keeps working. A request can opt out with the header x-cruise-compress: off, and every response reports the bytes before and after.

What happens when a provider is down?

When a provider refuses a request — a rate limit, a timeout or a server error — Cruise tries the next candidate, up to the lane’s fallback limit. Fallbacks help most when the candidates sit with different providers, because models on one provider account are usually rate-limited together. Each fallback starts only after the failed attempt, so a longer chain means a longer worst-case wait, not more reliability.

How do budgets and caps work?

Each project can have a daily or monthly budget: a soft threshold warns, and a hard cap refuses requests until the period ends. Spend is reserved before a request is sent, so a looping agent stops at the cap rather than at the invoice. Separately, the workspace balance stops at $0, and requests are refused until you top up. The two refusals carry different codes, budget_exhausted and wallet_exhausted, so an agent can tell them apart.

How is Cruise billed? Can I get a refund?

From prepaid credit, which never expires. The credit you buy is added to your balance in full, and each request is deducted from it as you use it: the provider’s list rate plus our 3% markup by default, or a different rate agreed with us in writing for your workspace. An answer served from the cache costs 20% of list. Any fee for the way you pay depends on the method you choose and is shown before you pay. Unused credit from a top-up in the last 30 days is refundable on request, minus that fee; spent credit is not. The Terms of Service are the binding version.

Terms of Service
Can I use my own provider keys, or run Cruise in my own cloud?

Not on Cruise Cloud, which routes requests to third-party providers on our accounts. Cruise Enterprise is a separate deployment on your own infrastructure, with your own provider keys and models, such as AWS Bedrock or self-hosted endpoints. It is arranged with us directly rather than bought on this page.

contact@bytesbrains.com

Bring the work. Keep one endpoint.

One key replaces the pile across providers, budgets stop a runaway agent at the cap, and every request can say what it bought. Create a workspace, top up, and start calling.

Get started