noburn.dev
Start free
BETANow live · only Founding Member spots left

Meter, cap & billevery AI user.

Per-user cost metering with hard caps that block the call before it fires — plus Stripe passthrough billing. No customer ever costs you more than they pay.

Free plan: 100 req/mo · 1 project · no credit card required

python3 — agent.py
>>> router.chat("Write 10,000 word essay on history…")
routing… complexity=0.97 estimated cost $0.08
PRE-FLIGHT CHECK FAILED — $0.08 > remaining $0.0016
no DNS · no TCP · $0 charged
result.blocked = TrueBLOCKED
$0 charged · API never called · budget preserved
>>>
/30 Founding Member spots remaining · launching mid-June 2026 · live
One runaway GPT-4o session can cost $80–$400 · noburn costs $9/mo — less than a single incident

the problem

You're flying blind.

Gateway caps protect your API key. Observability shows you charts. Nothing stops one heavy user from wrecking your margin.

spend_by_user.py — octoberMARGIN
$ python spend_by_user.py --month oct
breaking down token cost per customer…
user_7754 plan: $99/mo cost: $12.03
user_1932 plan: $29/mo cost: $48.11
user_4821 plan: $29/mo cost: $312.40
flat-rate plan · usage unmetered · unbilled
One customer burned 10× what they pay you
agent_loop.py — langchainLOOP
$ python agent_loop.py
iter 1 cost $0.012 remaining $9.988
iter 2 cost $0.019 remaining $9.969
iter 3 cost $0.031 remaining $9.938
iter …
iter 312 cost $0.028 remaining $0.003
iter 313 cost $0.031 remaining $0.000
RateLimitError — budget exhausted
Monthly budget gone in 47 minutes
helicone — dashboardLOGS
Total spend this month
$2,841.00
████████████░░░░ 71% of budget
Top requests by cost ↓
Write 50k-word report $184.00
Recursive agent task $291.00
Beautiful charts. Not a single call was blocked.

how it works

Three lines. Zero runaway bills.

Your existing LLM code stays unchanged — noburn wraps around it.

01

Install the SDK

Drop into any Python project — no proxy, no middleware.

pip install noburn
02

Create a guard with a budget cap

Per-project or per-user. Set it once, enforced on every call.

guard = NoburnGuard(
  api_key="sk-nb-...",
  budget_cap_usd=0.02,
  # user_id="user_123"  ← optional per-user cap
)
03

Check before every LLM call

Sub-2ms client-side check. No network call required to block.

result = guard.check(model="gpt-4o", ...)
if result.blocked:
    return handle_limit()  # $0 charged
# proceed normally →

the solution

noburn caps every user — then bills them.

python3 — noburn demo
>>> from noburn import NoburnGuard
>>> guard = NoburnGuard(api_key="sk-nb-...", budget_cap_usd=0.02)
# $0.02 hard cap — any call that would exceed it is blocked locally
>>> guard.check(model="gpt-4o", estimated_tokens_in=800, estimated_tokens_out=200)
'714' # spent $0.0001 · remaining $0.0199
>>> guard.check(model="gpt-4o", estimated_tokens_in=50000, estimated_tokens_out=10000)
result.blocked = TrueBLOCKED LOCALLY
estimated cost $0.024 > remaining budget $0.0016
no DNS lookup · no TCP connection · no tokens sent
$0 charged$0 CHARGED
>>> result.spend_usd, result.remaining_usd
(0.0184, 0.0016)
BLOCK

Pre-flight enforcement

Estimates cost before the call. If it would exceed the budget — no DNS, no TCP, no tokens. $0 charged.

result.blocked # True — $0 charged
TRACK

Real-time metering

Per-project and per-user spend tracked live. Webhooks fire the moment a threshold is crossed.

event: budget.alert → 80%
BILL

Passthrough billing

Charge your customers exactly what they cost. Connect Stripe and it flows automatically.

invoice: $0.0031 → user_id

comparison

How noburn.dev is different.

The only self-serve tool that prevents the bill — not just measures it.

Feature
noburn.dev
Helicone
Portkey
LangSmith
Per-user spend limitsenterprise
Passthrough billing to customersenterprise
Blocks call before it fires
Hard budget cap per projectenterprise
Pre-flight cost estimation
Spend alerts + webhooksPAID
Self-serve (no sales call)
Free tier
* "enterprise" = Portkey Enterprise plan ($800+/mo) — not self-serve

integrations

Works with your stack.

Drop-in wrapper — 2 lines of code.

OpenAIAnthropicLiteLLMLangChainLangGraphVercel AIOpenAIAnthropicLiteLLMLangChainLangGraphVercel AIOpenAIAnthropicLiteLLMLangChainLangGraphVercel AI

early traction

Built in public. Growing in the open.

Real signals — no fake logos, no invented testimonials.

works with the tools your team already uses

OpenAIAnthropicLiteLLMLangChainLangGraphVercel AI

documentation

Everything you need to integrate.

View all docs →

blog

Latest on LLM cost control.

All posts →

who built this

One builder. One real problem.

OD
Orvi DasFOUNDER

noburn.dev

I built noburn after a runaway LangGraph agent drained $300 in a single afternoon — in my own project. Helicone showed me exactly what happened, in a beautiful chart. Nothing stopped it. I had to pull the API key offline myself.

noburn is built for developers who've been there — or want to stop it before it happens. I'm shipping it in the open and will be in the early community personally.

↗ github.com/orvi2014

faq

Common questions.

Still have questions? Join the waitlist and ask us directly.

See if spots remain →

pricing

Join the waitlist. Lock your price.

First 30 → Founding Member (free 3mo → $9/mo forever). First 100 → Builder ($9/mo, GitHub star). Everyone else → Pro at $49/mo.

null/30 spots left

Founding Member

Free

3 months · then $9/mo forever

30 taken left
  • [✓]All Pro features — 5M req/mo, 10 seats
  • [✓]$9/mo locked forever after trial
  • [✓]60-day window to claim from invite
  • [✓]First 30 on waitlist only
Join waitlist
null/100 spots

Builder

$9/ mo

billed from day one · locked forever

100 taken left
  • [✓]500k guard checks / month†
  • [✓]3 projects · 3 seats‡
  • [✓]Webhooks + per-user metering
  • [✓]Locked at $9/mo forever
  • [✓]Requires ⭐ GitHub star
Join waitlist

Pro

$49/ mo

always available

  • [✓]5M guard checks / month
  • [✓]Unlimited projects · 10 seats‡
  • [✓]Passthrough billing (Stripe)
  • [✓]$1 per extra 1M checks (overage)
  • [✓]Priority support
Join waitlist

† A guard check is one call to guard.check() before an LLM request. At Builder's 500k/mo limit, all guard.check() calls return blocked until the next billing cycle or you upgrade to Pro.

‡ Project = a separate guardrail config (e.g. one per app or environment). Seat = a team member with dashboard access.