Back to guides
Pricing·September 21, 2026·11 min read

bolt.diy pricing, models and the best API to put behind it

The software is $0. The bill is the three model calls one message sends once your project has files.

Last reviewed on .

bolt.diy costs $0 — it is MIT-licensed software with no plans, no accounts and no hosted tier, so the only bill is the model API you point it at. The number that actually decides that bill is not the per-million rate you pick: context optimisation is on by default, so once your project has files one chat message sends three model calls, and bolt.diy never sends a cache directive of its own, so nothing in the client asks a provider to reuse the large system prompt.

One disambiguation first, because the search results mix them. bolt.new is the hosted, token-metered product this project was forked from, and it is where the $25-a-month figure comes from. BoltAI is an unrelated macOS client with its own licence prices. Neither belongs on a bolt.diy budget. And coleam00/bolt.new-any-llm is not a separate project — it is bolt.diy's original name, and it now redirects to stackblitz-labs/bolt.diy.

bolt.diy pricing: the software is $0, the requests are not

Line itemWhat it costsWhere that comes from
bolt.diy itself, every install route$0, MITRepository API: MIT, not archived, not disabled
A hosted, paid bolt.diyDoes not existThe bolt.diy domain returns a redirect that lands on the GitHub repository
Model API tokensYour provider's per-token rateYour provider's own billing
Hosting, if you do not run it locallyYour own billThe repo ships a Docker compose file and a container image
bolt.new Free / Pro / Teams (different product)$0 with 1M tokens a month and a 300K daily limit · from $25/month starting at 10M tokens · $30/month per memberbolt.new pricing

All rows checked September 19, 2026. The bolt.new row is there so you can recognise it when a search result hands it to you — it is not a bolt.diy price, and bolt.diy has no token allowance of any kind.

Check the cadence before you standardise a team on it. The repository is not archived and carries close to 20,000 stars, but the last commit to main is dated February 7, 2026 and nothing has landed since; the only 1.x release is v1.0.0 from May 12, 2025. Meanwhile 56 pull requests are open and unmerged. There is no archive notice and no maintainer statement about direction, so read this as dated evidence rather than an announcement.

Which bolt.diy are you running? Three builds, three behaviours

This is the part that makes other people's setup instructions contradict each other. The project currently ships three artifacts built from code of three different ages, and they do not configure a custom endpoint the same way.

Install routeCode you getWhere the API key goesIf the model list fails
v1.0.0 desktop binariesv1.0.0, May 12, 2025A key box appears in the chat UINo fallback and no timeout
git clone -b stable, as the README instructsSame v1.0.0 release commitSame key boxSame: no fallback
git clone main, or the ghcr.io imageCommit 2e254ac, February 7, 2026Server environment only — no UI field5-second timeout, then OPENAI_LIKE_API_MODELS

The key box difference is a real behaviour change pinned to a dated commit, not a rumour. At the commit stable points to, the condition guarding the key field reads (!LOCAL_PROVIDERS.includes(provider.name) || 'OpenAILike') — a bare string literal makes it always truthy, so the field renders. On main the || 'OpenAILike' is gone and OpenAI-Like is in LOCAL_PROVIDERS, so no key field is drawn anywhere. A guide that says "paste your key in the UI" is right for the desktop build and wrong for the Docker one.

Two more dates worth knowing. The published ghcr.io/stackblitz-labs/bolt.diy:latest image config is stamped February 7, 2026 and labelled with revision 2e254ac…, so it is current with main and also seven months old. And the v1.0.0 release ships binaries for Windows x64, macOS arm64 and Linux arm64 only — there is no macOS Intel or Linux x64 asset. Node >=18.18.0 and pnpm 9.14.4 are declared in package.json; the dev server defaults to port 5173.

bolt.diy custom API: wiring an OpenAI-compatible endpoint

The provider you want is called OpenAI-Like, and it is filed under Local Providers in Settings rather than Cloud Providers — the cloud tab explicitly filters it out alongside Ollama and LM Studio. It is also disabled by default, because the code enables a provider only when it is not in that local list. Turn the toggle on or no models will ever appear.

Three settings exist, and only two of them are in the repository's own .env.example:

.env.local
# bolt.diy reads these from the SERVER environment on main and on the
# ghcr.io image. Edit, then restart the server — there is no key field in
# the UI on those builds.
OPENAI_LIKE_API_BASE_URL=https://api.kunavo.com/v1
OPENAI_LIKE_API_KEY=your_kunavo_key

# main only. Used only if GET {baseUrl}/models fails or times out.
# Format: model:contextLimit, separated by semicolons.
OPENAI_LIKE_API_MODELS=claude-sonnet-5:1000000;gemini-3-8-flash:1048576

Four things about that base URL. It must be the prefix under which both /models and /chat/completions live, because the pinned Vercel AI SDK simply concatenates the path onto it — for Kunavo that is https://api.kunavo.com/v1. bolt.diy strips one trailing slash for you. A value set in the UI's single "API Endpoint" field wins over the environment. And there is no model-id text box: bolt.diy issues GET {baseUrl}/models with a Bearer token, refuses to list anything unless both the base URL and the key are present, and uses each returned id verbatim as the OpenAI model value.

One consequence specific to a multi-modal catalog: Kunavo's /v1/models returns image, video and music models in the same list as chat models, and bolt.diy's parser does not filter by kind — it maps every row into the picker. Choose a chat model; the others cannot serve a chat completion. That is read off both codebases rather than observed in a running install.

What the OpenAI-Like provider cannot reach

What you might expectWhat the code doesConsequence
Redirect the Anthropic provider to a gatewayIts config holds apiTokenKey only, with no base-URL key, and it fetches its model list from api.anthropic.comA Claude-compatible endpoint has to be consumed through OpenAI-Like on the Chat Completions wire
Point the OpenRouter provider elsewhereopenrouter.ai/api/v1 is hard-coded; its only key is OPEN_ROUTER_API_KEYOpenRouter is a separate provider, not a base-URL trick
Your model's real context windowEvery model read from your /models response is assigned maxTokenAllowed: 8000; the returned context field is never read. Models declared in OPENAI_LIKE_API_MODELS keep the limit you write thereThe picker shows about 8k even for a million-token model. It feeds the picker label and a server-side warning log; nothing in the streaming path clamps the request or truncates the chat
Long outputsPROVIDER_COMPLETION_LIMITS.OpenAILike = 8192, sent as the request's output cap8,192 output tokens per request, whatever the model allows — except for the ids in the row below
A green health badgeThe badge does a browser-side GET to {baseUrl}/models with no Authorization header, appending /v1 if absentAn endpoint that requires a key — Kunavo's /v1/models does — rejects that unauthenticated probe, so the badge reads unhealthy while generation works
Ids beginning o1, o3 or gpt-5 treated like any otherThe regex /^(o1|o3|gpt-5)/i forces temperature: 1, strips sampling parameters, and passes maxCompletionTokens — a key the pinned ai@4.3.16 types do not defineThose ids silently go out with no output cap applied. The regex is anchored at the start of the id, so gpt-5-6-luna and gpt-5-6-terra match while gemini-3-8-flash and claude-sonnet-5 do not

Read from source at main on September 19, 2026. The protocol floor for a default install is modest: streaming Chat Completions, no function calling — bolt.diy passes an empty tool set unless you configure an MCP server, and the pinned SDK drops an empty tool set together with the tool choice. Kunavo serves no embedding model, and bolt.diy's chat flow calls for none. Configure an MCP server and the floor rises to tools with multi-step execution. Image attachments are sent as base64 data-URL parts, so vision needs that form.

One message, three model calls: a worked bolt.diy API cost estimate

Context optimisation is on by default, and when your project has files, the chat route runs a summary call and a file-selection call before the generation call. A single continued answer can add up to two more segments. Nothing in the codebase sets a cache directive — no cache_control marker, no provider cache option — so any caching a client has to ask for never engages, and the figures below assume no cache discount at all. Whether a re-sent prefix is discounted anyway is a question about the provider you point at, not about bolt.diy. The prompt is not small either: the three shipped prompt source files measure 15.4 KB, 32.8 KB and 23.8 KB, with the "fine tuned" one as the default. Those are characters, not tokens; the token count was not measured.

The figures below are illustrative token arithmetic, not a measured task cost and not a bill ceiling. Assume one message on a small project: a generation call of 30k input and 4k output tokens, plus a summary call of 20k input and 800 output and a file-selection call of 20k input and 600 output — 70k input and 5,400 output in total. The splits are assumptions for illustration. Rates are live Kunavo catalog prices per million tokens.

ModelInput / output per 1MGeneration call aloneOne message, default settings40 messages
Gemini 2.5 Flash$0.09 / $0.75$0.0057$0.0103$0.41
GPT-5.6 Luna$0.07 / $0.42$0.0038$0.0072$0.29
Claude Haiku 4.5$0.40 / $2.00$0.0200$0.0388$1.55
Gemini 3.8 Flash$0.525 / $2.625$0.0263$0.0509$2.04
GPT-5.6 Terra$0.70 / $4.20$0.0378$0.0717$2.87
Claude Sonnet 5$2.00 / $10.00$0.1000$0.1940$7.76

Under these assumptions the default settings put roughly twice the generation call's cost on every message on a project that has files — Claude Sonnet 5 moves from $0.1000 to $0.1940 for the same visible output. That is the honest content of "the software is free". If your project is large enough that the summary and selection calls carry more context than the generation call, the ratio gets worse, not better; turning context optimisation off trades that cost for the model seeing fewer of your files.

Scale by your own message count before treating any of this as a budget. Kunavo's catalog amount is a billing floor rather than a cap: when the upstream reports its charge, the bill is the greater of catalog cost and upstream cost times the applicable markup. The minimum top-up is $10 in prepaid credit — a funding minimum, not a task fee or a subscription. See billing details, or model other shapes with the LLM cost calculator.

Best API for bolt.diy: which route wins when

RouteWins whenWhat you give up
Direct vendor APIYou stay with one vendor and bolt.diy ships a first-class provider for itA second vendor is a second key; Anthropic's built-in static list is stale enough to be worth avoiding in favour of the dynamic one
OpenRouterYou want per-model prices and real context windows visible in the pickerIts credit-purchase fee, and a provider you cannot repoint at anything else
OpenAI-compatible gateway (OpenAI-Like)You want one key and one balance across model familiesThe 8,000-token context label, the 8,192-token output cap, a red health badge, and the key living in the server environment on current builds
Google Gemini free tierYou will not pay anything and bolt.diy supports it nativelyGoogle's pricing page marks free-tier content "used to improve our products" and paid-tier content not — weigh that before pasting a client codebase in
Local model via Ollama or LM StudioPrivate or throwaway work with no per-request chargebolt.diy's own FAQ says models under 7b parameters typically cannot interact with it properly; hardware and power instead of tokens

On "best model for bolt.diy", the project's two official answers disagree and both are old. The published documentation FAQ, last edited September 4, 2025, names Claude 3.5 Sonnet, GPT-4o, Claude 4 Opus, Gemini 2.0 Flash, DeepSeek Coder and Qwen 2.5 Coder among others; the repository's root FAQ.md, last edited January 28, 2025, names an older set and adds that models below roughly 7 billion parameters cannot drive bolt.diy properly. Take the floor, not the names. Note also that the OpenAI-Like path is barely documented at all: nothing under the repository's docs/ tree — the source of the published documentation site — mentions it, and the README describes it in a single line, "Connect to any OpenAI-compatible API endpoint". The environment variable names appear only in .env.example. The README also advertises "19+" providers while the repository ships 22 provider files, and describes API keys as "stored securely in browser cookies" where the code writes them as plain JSON into a cookie.

bolt.diy with OpenRouter, and the free lane's ceiling

OpenRouter is a first-class provider here rather than a base-URL trick, and it is the one route where bolt.diy's picker shows real numbers: it builds each label from the live model list's own prompt and completion prices and its real context length. If the 8k label on a custom endpoint bothers you, that contrast is the reason.

The free lane has a hard ceiling worth doing the arithmetic on. OpenRouter documents 20 requests per minute for its :free models, 50 requests per day below 10 lifetime credits and 1,000 per day at 10 or more (values read from its limits page on September 19, 2026). Because bolt.diy spends three calls on one message once your project has files, 50 requests a day is roughly 16 such messages — less if any answer continues into a second segment. Its FAQ states no markup on inference, with a 5.5% credit-purchase fee through Stripe and 5% through crypto. Compare that funding shape against a prepaid balance in Kunavo vs OpenRouter and OpenRouter alternatives.

Set it up and check the first charge

bolt.diy has not been runtime tested against Kunavo's endpoint, and Kunavo ships no bolt.diy-specific integration — everything above is read from both sides' source and documentation. The generic settings are in quickstart and chat completions; the OpenAI-compatible API guide covers the same base-URL pattern for other clients, and the AI agent API directory lists clients that do have one. Keep a working route available while you try it, send one bounded message, then read the charge your account actually recorded for it rather than trusting an in-app estimate.

One protocol detail that decides whether you see token counts at all: bolt.diy creates its OpenAI client without strict compatibility, so the SDK never asks the endpoint to include usage in the stream. Kunavo's dispatcher requests usage upstream and forwards the frames, so the final usage frame should still arrive — that is code-level reasoning on both sides, not a tested result. Kunavo also strips parameters a model does not accept before dispatch, which matters here because bolt.diy's prompt-enhancer path sends an explicit temperature and Claude Sonnet 5 declines that parameter. Create a Kunavo account when you are ready to fund a key.

FAQ

How much does bolt.diy cost?

bolt.diy costs $0. It is MIT-licensed software with no plans, no tiers, no accounts and no hosted service — the bolt.diy domain returns a redirect that lands on the GitHub repository, so there is no pricing page to read (checked September 19, 2026). What you pay is the model API bill from whichever provider you point it at, plus your own hosting if you do not run it on your own machine. The paid product with $25-a-month plans is bolt.new, the separate hosted service this project was forked from.

Is bolt.diy the same as bolt.new?

No. bolt.diy is a GitHub fork of stackblitz/bolt.new, confirmed by the repository API on September 19, 2026, and the two are billed completely differently. bolt.new is a hosted, token-metered product: its pricing page lists a free tier with 1M tokens per month and a 300K daily limit, Pro from $25 a month starting at 10M tokens, and Teams at $30 a month per member. bolt.diy has none of that — no tokens included, no account, no subscription. Separately, the repository coleam00/bolt.new-any-llm is not a different project: it is bolt.diy's original name and now redirects to stackblitz-labs/bolt.diy.

What is the best API for bolt.diy?

There is no single winner, because bolt.diy treats three routes very differently in code. A direct vendor API wins when you use one vendor all day and bolt.diy ships a first-class provider for it, since you then get that provider's real model list and context values. OpenRouter wins if you want per-model prices and context windows shown in the picker — its provider reads both from the live model list — at the cost of OpenRouter's own credit-purchase fee. An OpenAI-compatible gateway through the OpenAI-Like provider wins when you want one key and one balance across families; the trade is that every model it discovers from your /models response is labelled with a hard-coded 8,000-token context, and its provider-level output default of 8,192 tokens is applied to every id except those whose name starts o1, o3 or gpt-5. A local model through Ollama or LM Studio wins for private or throwaway work at no per-request charge.

What is the cheapest API for bolt.diy?

Cheapest per token and cheapest to finish an app are different questions. Google's Gemini API has a genuinely free tier for its Flash family and bolt.diy supports it natively, but Google's own pricing page states that free-tier content is used to improve its products — a real consideration if you paste a client codebase into the chat. OpenRouter's free models cost nothing but are limited to 20 requests per minute and 50 requests per day below 10 lifetime credits, and since bolt.diy spends three model calls on a message once your project has files, 50 requests a day is roughly 16 such messages. Beyond the free lanes, compare per-million rates and then measure: a cheap model that needs four attempts to produce a working component can cost more than one that needs one.

What is the best model for bolt.diy?

bolt.diy's own guidance on this is stale and should be dated rather than followed. The published documentation FAQ, last edited September 4, 2025, names Claude 3.5 Sonnet, GPT-4o, Claude 4 Opus, Gemini 2.0 Flash, DeepSeek Coder and Qwen 2.5 Coder; the repository's root FAQ.md, last edited January 28, 2025, names an older set again, and adds that models under about 7 billion parameters typically cannot drive bolt.diy at all. Both were checked on September 19, 2026. The durable part of that advice is the floor, not the names: bolt.diy asks one model to emit whole files inside a structured artifact format, so small local models tend to break the format. Pick a current frontier or mid-tier model, and note the OpenAI-Like provider's default output cap of 8,192 tokens per request — applied to every id except those whose name starts o1, o3 or gpt-5, where bolt.diy sends a token-limit key the pinned SDK does not recognise and no cap reaches the endpoint at all.

How do I connect a custom API to bolt.diy?

Use the provider named OpenAI-Like, which appears under Local Providers in Settings rather than Cloud Providers, and is disabled by default. Set OPENAI_LIKE_API_BASE_URL to the prefix that serves both /models and /chat/completions, and OPENAI_LIKE_API_KEY to your key. Which build you run decides where the key goes: at the commit the stable branch points to, and therefore in the v1.0.0 desktop binaries, a key box appears in the chat UI; on main and in the ghcr.io image it does not, because a September 6, 2025 refactor removed an always-true expression that had been keeping it visible. On those builds the key must come from the server environment and the server must be restarted. There is no model-id text box in either build — ids are discovered by a GET to your base URL's /models with a Bearer token, and used verbatim.

Can I use OpenRouter with bolt.diy?

Yes, and it is a separate provider rather than a base-URL trick. bolt.diy ships an OpenRouter provider whose only configuration key is OPEN_ROUTER_API_KEY; the endpoint openrouter.ai/api/v1 is hard-coded in the source, so no other gateway can be reached through it. That provider is also the one place bolt.diy shows real numbers: it builds each picker label from the live model list's own prompt and completion prices and its real context length, which the OpenAI-Like provider never reads. OpenRouter's own documentation states no markup on inference but a 5.5% credit-purchase fee through Stripe, 5% through crypto (checked September 19, 2026).

Why does bolt.diy show 8k context for my model, and why is the provider marked unhealthy?

Both are known behaviours in bolt.diy's code rather than faults in your endpoint. Every model discovered from your /models response is assigned maxTokenAllowed: 8000 in the source; the context_length field your endpoint returns is never read, so a million-token model still displays as roughly 8k. Models you declare in OPENAI_LIKE_API_MODELS keep the limit you write there instead. Either way the number drives the picker label and a server-side warning log; nothing in the streaming path clamps the request or truncates the chat. Separately, the Settings health badge for local providers performs a browser-side GET to your base URL's /models with no Authorization header at all, so an endpoint that requires a key rejects it and the badge turns red while generation still works. Both were read from main on September 19, 2026.

Is bolt.diy still maintained?

The repository is live and not archived — MIT, close to 20,000 stars, created October 2024 — but the dates are the honest way to describe the cadence. The last commit to main is dated February 7, 2026, and there have been none since. The only 1.x release is v1.0.0 from May 12, 2025, and the stable branch the README tells beginners to clone still points at that release commit. Contributions keep arriving and are not being merged: 56 open pull requests as of September 19, 2026. No archive notice, sunset announcement or maintainer statement was found, so this is cadence evidence, not a decision anyone has published.

bolt.diy repository, releases, branches, container image, source files and documentation checked September 19, 2026; behaviour claims read at main commit 2e254ac and at the commit stable points to. bolt.new and OpenRouter figures read from their own pages the same day. No runtime test of bolt.diy against Kunavo was performed. Kunavo token rates come from the live catalog, and every dollar example here is illustrative token arithmetic rather than a measured task cost.