noburn
Log inSign up

changelog

What’s new in noburn

Everything that reached production, newest first. Last update ; the SDK is at 0.10.0 on npm and PyPI.

Follow along with the RSS feed.

Try noburn from a terminal, from any language

Your project page and the signup screen now show a ready-to-paste curl command with your key filled in, so you can see noburn answer before installing anything. The API reference has curl examples for every main endpoint.

New

  • A curl tab in the project quickstart, and a "see it work now" command right after signup: a check, then a recorded call that shows up in Recent decisions.
  • The API reference has curl examples for check, events, starting and ending runs, and a table of what the SDKs add over raw HTTP. It now documents event_id, decision_id, units and a run's outcome. Docs: Api reference

SDK 0.10.0

See what agent runs that didn't finish cost you

Tell noburn whether an agent run solved its task, and the dashboard shows how much this month's failed, stopped and abandoned runs cost. Those labels are also what noburn will learn from to stop runs that won't finish.

New

  • endRun(runId, { outcome: 'success' | 'failure' }) records whether a run solved its task (end_run(run_id, outcome=...) in Python). It also works on a run that already ended, for when you learn the outcome later. Docs: Sdk reference
  • A "Runs that didn't finish" report on the dashboard: this month's failed, stopped and abandoned runs, what they cost, and their share of run spend.

Caps sized to your real spend

The dashboard suggests a project cap and a per-customer cap from this month's spend, shows how many calls each would have stopped, and applies one with a click. It also tells you when a cap is so far above your spend that it will never fire.

New

  • Suggested caps on the dashboard: a project cap with headroom over your projected month, and tight, balanced and loose per-customer caps. Each one shows the calls, customers and spend it would have stopped this month.
  • Apply a per-customer suggestion to every active customer that has no cap yet. Caps you or your app already set are never changed.

SDK 0.9.1

A slow first check no longer falls back

The SDK retries a check that times out or gets a server error once before falling back, and noburn keeps its check endpoint warm so the first check after a quiet spell answers quickly.

Improved

  • SDK 0.9.1 retries a check once when it times out, can't connect or gets a 5xx, then falls back as before. Set checkRetries (Node) or check_retries (Python) to 0 to turn it off. Docs: Sdk reference

Fixed

  • The first check after a deploy or a quiet spell could take over a second. With onError: 'block' and a short timeout, that blocked a real call as noburn_unreachable. noburn now keeps its check endpoint warm.

SDK 0.9.0

Saved is measured by noburn, not by your integration

Every call noburn blocks is now recorded by noburn itself, at noburn's price, so the saved figure is right however your code records blocks. A block your code also records counts once.

New

  • check() returns a decisionId on a block. SDK 0.9.0 passes it on when you record the block, and fills in the call's estimate if you record the block with no usage. Docs: Sdk reference
  • The dashboard tells you when blocked calls arrive with no size, which means your integration records blocks without their usage.

Fixed

  • Saved, the cost of blocked calls, came only from what your code reported. A block recorded with no tokens showed as $0 saved even when a cap fired. noburn now records every block it decides, priced from the call's estimate, with no change needed on your side. Docs: Api reference

SDK 0.8.0

Every model priced: open-source, embeddings, image, video and speech

Models outside noburn's own table no longer count at the cautious $30/$75 rate. Embeddings, image, video, speech and open-source models are priced at their real rates, and a call is never counted twice when the SDK retries a delivery.

New

  • About 4,500 models are now priced from a catalog refreshed every night: open-source models on Together, Fireworks, DeepInfra and others, plus image, video, speech and transcription models. Docs: Api reference
  • check() and record() accept units for calls that aren't billed by token: images, video seconds, audio seconds and characters. Docs: Sdk reference
  • The dashboard names any model that still has no price this month, with a link to set your own rate.

Fixed

  • OpenAI embedding models (text-embedding-3-small, -3-large, ada-002) are priced at their own rates. Before, an embedding call counted at $30 per million tokens, about 1,500 times the real price. Docs: Api reference
  • A call is never counted twice. When a delivery timed out after noburn had already stored it, the SDK's retry stored it again. Each event now carries an id that makes a retry harmless. Update to SDK 0.8.0 to get it. Docs: Sdk reference

SDK 0.7.1

Current model prices: GPT-5, Claude Opus 4.5+, Gemini 3

The price table now covers the models people use today. Many current models were priced too high, which could stop a customer before their cap and over-bill them on passthrough. A few were priced too low.

Improved

  • SDK 0.7.1 carries the same table for its offline estimates. A GPT-5.x model that isn't listed yet still counts at the cautious rate, never at the cheaper GPT-5 price. Docs: Sdk reference

Fixed

  • GPT-5, GPT-5.1 to 5.6, GPT-6, Gemini 3 and DeepSeek V4 are priced at their own rates. Before, they counted at $30 in and $75 out per million tokens, the rate noburn uses for a model it doesn't know. Claude Opus 4.5 and later ($5/$25, was $15/$75), Claude Sonnet 5, Claude Haiku 5.5, Gemini 2.5 Flash-Lite and Mistral Large 3 are no longer over-priced. Docs: Api reference
  • A few models were priced below what the provider charges, so a call could slip past a cap: Claude Haiku 4.5 ($1/$5, was $0.80/$4), DeepSeek chat and reasoner ($0.28/$0.42, was $0.14/$0.28), o1-pro and o3-pro, and the May 2024 GPT-4o snapshot. Docs: Api reference

Ask Claude or Cursor about your customers' AI spend

noburn now has a hosted MCP server. Connect Claude Code, Cursor or Claude Desktop with your SDK key and ask what each customer spent, how much of their cap is left, or which runs were stopped for looping.

New

  • Hosted MCP server at https://noburn.dev/api/mcp: spend by customer, caps with what's left, recently refused calls (including loops) and model prices. With a key that can manage budgets, the assistant can also set a customer's cap. Docs: Mcp

SDK 0.7.0

SDK 0.7: prompt caching priced right, and stopped streams counted

Prompt tokens served from the provider's cache are now priced at the cache rate, so caps and passthrough bills match what the provider charges. A stream the user stops early is still counted.

New

  • record() takes cachedTokensIn and cacheWriteTokensIn (cached_tokens_in and cache_write_tokens_in in Python), and the integrations fill them in from the provider's usage report. Docs: Sdk reference

Fixed

  • Cached prompt tokens were priced at the full input rate. They now cost what the provider charges: for example half price on gpt-4o, a tenth on gpt-5-mini and Claude, and 1.25x for Claude cache writes. Passthrough billing no longer over-bills your customers for cached prompts, and Claude cache writes are no longer under-counted. Docs: Api reference
  • A stream stopped before it finished (a closed chat, an aborted request) was recorded as free. It is now recorded with the prompt and the output received, in the Vercel AI SDK and LangChain integrations. Docs: Integrations

Shared plan budgets, and billing through your own Stripe

Cap what everyone on a plan can spend together, so a wave of fake free accounts can't drain you. Passthrough billing now invoices your customers from your own Stripe account.

New

  • Shared plan budgets: one limit for every user on a plan together, for example "all free users: $50 a day". Once it is spent, new and existing users on that plan are refused with plan_budget_exceeded, and other plans carry on. Docs: Usage quotas

Improved

  • Passthrough billing now goes through a restricted key from your own Stripe account (Invoice items: Write, Customers: Read). Each customer's AI usage plus your markup lands on their next invoice, once a month, and a month is never billed twice. Docs: Passthrough billing
  • Passthrough billing is part of the Pro plan. On other plans you can still remove a saved Stripe key or customer link. Docs: Passthrough billing
  • A new homepage that explains noburn for the founder who pays the AI bill, with a cost calculator and a dashboard preview. See the homepage

Fixed

  • The site header stays at the top while you scroll, and the sign-in and sign-up fields show all four edges.

SDK 0.6.1

SDK 0.6: the agent hears about a loop before it is stopped

With the Vercel AI SDK, the SDK now tells the agent at the first repeated tool call, so it can change course before anything is refused. Polling a running job no longer counts as a loop.

New

  • Loop nudge: when the same tool call returns the same result twice, the Vercel AI SDK middleware adds a short note to the next prompt telling the model, and most models change course. A third identical call is still refused before the tool runs, in the AI SDK and LangChain integrations. Docs: Integrations

Fixed

  • Checking on a job that is still running (results like "pending" or "queued") is no longer counted as a loop (0.6.1). Docs: Integrations

SDK 0.5.0

SDK 0.5: loop detection in the framework integrations

Agents built on the Vercel AI SDK or LangChain are stopped when they repeat the same tool call with the same arguments.

New

  • Loop detection, on by default in the Vercel AI SDK and LangChain (Node and Python) integrations. A run stopped for looping shows as "loop" in the dashboard. Docs: Integrations

SDK 0.4.0

SDK 0.4: most checks need no network call

The SDK can now decide repeat checks locally for up to 10 seconds against a small reservation from the server, and the API runs next to the database.

New

  • Leased decisions: an allowed check can come with a short lease (at most a tenth of the remaining budget, $5 and 50 calls, for 10 seconds), and repeat calls are decided in the SDK. Leases count as spent, so caps stay hard. Docs: Sdk reference
  • gpt-5-mini is priced out of the box.

Improved

  • The check API runs in Singapore beside the database, which cuts its response time.

SDK 0.3.0

SDK 0.3: per-customer budgets you set from code

Change a customer's limit from your own signup, upgrade, top-up and cancel flows, one at a time or 500 at once.

New

  • Per-customer budgets API: set, read, list and delete each end user's cap from the SDK or the API, including an "in total" window that never resets, for prepaid credits. Keys need the new "Can manage budgets" permission, and every change is audited. Docs: Per customer budgets

Fixed

  • Sign-up, the sidebar and settings no longer jump while they load.

Light mode

The dashboard and site follow your system theme, or a light or dark setting you pick.

New

  • Light mode, with a System / Light / Dark choice.

Improved

  • The homepage cost example has a searchable model picker.

SDK 0.2.0

SDK 0.2: quotas, profit per customer, remote stop and framework integrations

Limit each plan by requests or dollars per day, week or month, see which customers lose you money, stop a running agent, and drop noburn into the Vercel AI SDK, LangChain or CrewAI.

New

  • Usage quotas: a daily, weekly or monthly allowance per plan or per user, in requests or USD. Every check returns what is left and when it resets. Docs: Usage quotas
  • Profit per customer: send revenue with recordRevenue() and the Customers view shows margin per customer, money-losing customers first. Docs: Profit per customer
  • Remote stop for agent runs, from the dashboard or with stopRun() in the SDK. Docs: Sdk reference
  • Spend-spike alerts: a spend.spike webhook and an email when a project's spend jumps above its recent average. Docs: Webhooks
  • Framework integrations: Vercel AI SDK middleware, LangChain callbacks for Node and Python, and CrewAI. Your code still makes the provider call. Docs: Integrations

Improved

  • A new look for the site, the docs and the dashboard.

Fixed

  • Checks with an end user or a run no longer fail, Starter can be bought, and saving caps, rules and alerts shows a confirmation.

A free plan you can build on, and Starter at $19

Free goes from 100 to 10,000 recorded calls a month, and Starter fills the gap between Free and Pro.

New

  • Starter: $19 a month for 250,000 calls, 3 projects and 3 seats. Early Bird is closed to new signups; existing Early Bird plans keep their price. See pricing

Improved

  • The Free plan now includes 10,000 recorded calls a month (was 100) and two seats. See pricing

Security

  • Caps can no longer be bypassed by a model-downgrade rule, by back-dating events or by skipping the pre-flight check. The monthly plan quota is enforced on recorded events too.

Invoices, custom model prices and team management

See your invoices in noburn, set your own price for any model, and manage projects, notifications and invitations from the dashboard.

New

  • Custom model pricing per project, and server-side cost for every recorded call, so a client can't under-report what it spent. Docs: Api reference
  • Invoice history on the billing page.
  • Delete a project, keep your notification preferences, and see and revoke pending team invitations.

Fixed

  • Recorded calls are no longer dropped when a request ends early.

SDK 0.1.0

SDK 0.1: the first public release

The Node and Python SDKs are on npm and PyPI: one check before each LLM call, against project, per-user and per-run caps.

New

  • The check API: allow or block before each call, against project, per-end-user and per-run caps and your policy rules. Blocked calls never reach the provider. Docs: Api reference
  • Agent runs with their own budget, so one runaway run stops on its own. Docs: Sdk reference
  • @noburn/sdk on npm and noburn on PyPI, with onError to choose failing open or closed if noburn can't be reached. npm

Security

  • Cost is calculated on the server from token counts, run IDs can't cross projects, seat limits apply to invitations, and webhook delivery refuses private addresses.

Try what shipped

The free plan needs no card. Put one check in front of the provider you already use.