BytesBrains Cruise for VS Code
Every model your Cruise key can reach, right inside Copilot Chat and agent mode.

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.
Two ways to set model — not two APIs.
model="bb/extraction"Names the job. Cruise finds the best match that can do this request.
model="openai/gpt-4.1"
# or anthropic/… · google/…You pick the provider and model.
Providers you already know
Equal weight · falls back if one refuses
{
"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.
Lived reasons from running five to ten AI API vendors ourselves — not a price war with other gateways.
One workspace balance instead of ten auto-debits — a receipt for every payment, so an unexpected charge stands out.
A single Cruise key reaches every provider we route to. Hygiene, rotation and access reviews scale with one key, not one per provider.
Every Cruise key is listed by prefix with who issued it and when it was last used — minutes instead of engineering hours.
A lane can fall back to another model when one fails. Fallbacks help most when members sit with different providers.
A soft threshold warns and a hard cap refuses, per project. Spend is reserved before the request, not reconciled afterwards.
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.
Point any OpenAI client at one base URL and change nothing else. Streaming, tools and structured output pass straight through.
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.
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.
"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 limitedMembers 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.
One action per tool. Setup steps live in each listing or a dialog — not as peer heroes beside Get started.
Every model your Cruise key can reach, right inside Copilot Chat and agent mode.
The same extension, for VSCodium, Gitpod, Eclipse Theia and other Open VSX clients.
No extension needed: two fields in Cursor’s settings point its chat and agent at Cruise.
One key in wrok.in’s dashboard, and its agents review your pull requests with any model your Cruise key can reach.
A provider plugin: install it, set one key, and OpenClaw lists every model your Cruise key can reach.
A community node: install by name, set one Cruise key, and n8n agents and workflows reach every model that key can.
A provider plugin with live model discovery, project budgets, and Cruise spend tools inside OpenCode.
The gateway routes, Cruise prices — no plugin, and per-request cost headers survive the proxy.
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.
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-processorsYes: 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 PolicyIt 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.
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.
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.
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 ServiceNot 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.comOne 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