BRUT DOCS getbrut.app ↗

Providers overview

Brut is bring-your-own-key. You add a key for each provider you want to use; the engine calls that provider directly, on your key, at their price. Brut never holds a key that bills anyone but you, and never marks up a token.

Adding keys

⚙ Settings on the left rail (or the setup wizard) shows every provider as a card — its role, and one status line — grouped by what it does (generation, aggregators, upscalers). Click a card to paste a key (validated on save); the switch on the card turns a provider off without deleting anything. Keys live in your OS keychain — never in a graph, never sent anywhere but the provider. You can also set them via environment variables before launching the engine.

The one rule that trips everyone up

Image and video models need a billing-enabled key. Free tiers usually have zero generation quota, so your very first call returns a 429 — that's billing not enabled, not throttling. Turn on billing in the provider's console and it clears.

The providers at a glance

Provider Does Key
Google Gemini Images (Nano Banana) + text/planning AI Studio API key
OpenAI Images (GPT Image 2) + text/planning platform.openai.com key
Kling Video (image→video) via API packs ak:sk or api-key-kling-…
Kling (subscription) Same models, billed to your kling.ai plan (~3× cheaper) CLI login, no key
Google Veo Video (image/text→video) rides your Gemini key
Anthropic Text/planning only (Claude) Anthropic API key
Seedance Video with native audio BytePlus ModelArk key
Magnific Image upscaling (creative + precision) Magnific API key
Topaz Labs Image + video upscaling (Gigapixel, Proteus/Rhea/Gaia) Topaz API key
Topaz Video AI (local) Video upscaling on your own GPU — free no key; the desktop app's license
fal.ai Route only — serves Nano Banana / Kling 3.0 / Seedance / Veo when you hold no native key fal.ai dashboard key
Higgsfield (subscription) Route only — serves Nano Banana 2 / Seedance 2.0 on your higgsfield.ai plan credits CLI login, no key
Replicate Route only — Nano Banana Pro/2, GPT Image 2, Kling Omni, Veo 3.1 (+end frames), Seedance (+t2v) replicate.com token
OpenRouter The near-total route — all text (planning + Marcel), the image family with native knobs, and the video set (Kling/Veo/Seedance) with per-job billed cost openrouter.ai key

Model routes — native first, aggregator fallback

Some models can also run through an aggregator — a third-party service (like an aggregator subscription or a multi-model API) that resells the same model under its own billing. Brut treats those as routes, with three hard rules:

  1. Your direct key always wins. If you hold the native provider's key, the generation goes straight to the provider, exactly as before. Routes only activate for a model when you have no native key but do hold the aggregator's credential.
  2. Routing is always visible. A routed model shows a ⇄ runs via … chip on the node, the run confirm says who bills, and the ledger records it. Nothing routes silently.
  3. The catalog stays curated. An aggregator credential never adds models to Brut — the model list is exactly the one Brut ships, whatever route serves it. Estimates for routed runs come from the route's own measured price, or are absent; aggregators typically charge a margin over the direct API, and the node says so.

Availability is resolved once at engine start and re-resolved the moment you add or remove a key — adding an aggregator credential mid-session lights up the routed models immediately. Four route providers ship today: OpenRouter (one key for text + images with Brut's native menus + the whole video set — billed cost recorded per job), fal.ai (API key — Nano Banana family, GPT Image 2, Kling 3.0, Seedance 2.0, Veo 3.1), Higgsfield (subscription plan credits, browser sign-in — Nano Banana 2, Seedance 2.0) and Replicate (API token — Nano Banana Pro/2, GPT Image 2, Kling Omni, Veo 3.1 incl. end frames, Seedance incl. text→video). When several credentials exist, that same order decides.

Text models route too: with an OpenRouter key (or, text-only, a fal.ai key) the planning models — Refine, the Multi-Shot planner, the cinema crew, Text→Text — run at pass-through token rates when no native text key exists. Marcel routes through OpenRouter too — chat, ambient narration and acting, with Anthropic prompt caching passing through (verified live), so one OpenRouter key is a complete text seat.

Deciding between direct keys and an aggregator? The full pros/cons and a feature-by-feature capability matrix live on Keys vs aggregators.

Text vs generation

Gemini, OpenAI and Anthropic double as planning models — they power the Refine node and the cinema crew, where you pick which LLM writes your treatment or shot plan. Text models never enter the paid generation queue; they're cheap and separate.

Provider errors (4xx/429) are surfaced verbatim on the node — Brut never masks them, so what the provider says is what you see.