Guides / culpa vs humanloop

Culpa vs Humanloop

Humanloop was an LLM evals platform whose plaform closed on 2025-09-08, with account data deleted that day. Its docs still describe a real cost model. Culpa, a local-first LLM cost, margin, and forecast ledger, prices each call from a versioned price book in exact decimal and forecasts next month, so this page compares two designs rather than two products you can buy.

Why this happens

Take the date first, because it decides how to read everything else. Humanloop's own migration guide says the platform closed on 2025-09-08 and that all Files, Versions, Logs, Evaluations and account settings were permanently deleted on that date. Billing stopped on 2025-07-30 and the notice went out on 2025-07-17, so users had 53 days to export through an open-source tool the team published. That's orderly conduct, and it isn't the interesting part. The interesting part is that the docs are still up and they describe a cost model more careful than most live products. Humanloop computed cost, tokens and latency for every Prompt log across all model providers from 2024-04-16. It counted reasoning tokens as their own field rather than folding them into output. It rolled cost up a trace, so an agent run carried the total of its children. And it exposed Cost as an evaluator you could threshold in CI, which is the thing almost nobody ships. Read that list as a specification for whatever you buy next.

What this usually looks like

  • Your replacement tool reports one cost number per call and nothing per agent run.
  • Reasoning tokens are folded into output tokens, so a thinking model looks cheap and bills otherwise.
  • You can fail a build on latency and you can't fail one on cost.
  • Your provider stops returning usage when you stream, and your tool quietly stops counting.
  • Nobody can say what next month costs, because the tool that held your history was switched off.

Free, no card, no account

Run the free Cost Leak Scan

It shows your most expensive conversation before you install anything.

Run a free scan

Mistakes that cost the most

MistakeWhy it hurtsDo instead
Treating an evals platform's cost column as a finance number.Humanloop typed cost as a double. That's right for a per-call display and it drifts once you sum a million rows.Ask what type your tool stores money in, and prefer exact decimal anywhere totals are reported.
Assuming the replacement counts reasoning tokens separately.Humanloop had a reasoning_tokens field. Fold that into output and a reasoning workload misprices in the direction that hurts.Send one reasoning-heavy call and check the fields your tool actually stored.
Exporting the data and never opening it.53 days sounds generous until the export lands in a format nothing reads and the deadline is real.Export early and load it somewhere, while the source system still exists to check against.
Reading the shutdown as a verdict on the category.The team went to Anthropic and recommended Langfuse and Braintrust on the way out. That's a good outcome, not a collapse.Judge the replacement on its cost model, which is what this page is for.

Run this check tonight

  1. Ask your current tool for cost on an agent run, not on a single call.
  2. Check whether reasoning tokens are a separate field or folded into output.
  3. Try to fail a CI build on a cost threshold, the way Humanloop let you.
  4. Stream one call and confirm the token counts still landed.
  5. Ask what type money is stored in, and whether totals are computed in it.

Where a double stops being good enough for money

Humanloop's published OpenAPI schema types prompt_cost and output_cost as number, format double. A double carries about 15 to 17 significant digits, which is ample for one call and isn't the problem. The problem is summation. Price 40M output tokens on a rate of $0.0012 per 1k, a real shape for a high-volume cheap model, and compare exact decimal against float.

40,000,000 output tokens / 1,000 = 40,000 billable units
40,000 units x $0.0012 = $48.00 exactly, in decimal
the same product in IEEE-754 double evaluates to 47.99999999999999
one row is off by $0.00000000000001, and the error compounds with every row you add

Nobody loses money on that row. You lose the ability to say a total is correct, which is the whole job of a ledger. Culpa stores money as integer pico-dollars and parses rates from decimal strings, so a total is exact by construction rather than by rounding at the end.

Every number, with its confidence and source

FigureWhat it meansConfidenceSource
$48.00exact decimal cost of 40M output tokens at $0.0012 per 1k, against 47.99999999999999 in floatcalculatedArithmetic shown in full on this page. The rate shape is drawn from the price book's cheap high-volume tier and the token volume is modelled. The float result is what IEEE-754 double multiplication returns for the same product, which is the point of the figure rather than an incidental detail. Humanloop's own OpenAPI schema at humanloop.com/docs types prompt_cost and output_cost as number, format double, read 2026-08-03.
53 daysnotice period between Humanloop's shutdown email and permanent deletion of account dataprovider-reportedhumanloop.com/docs/v5/guides/migrating-from-humanloop, read 2026-08-03. The guide says the notice email went to all users on 2025-07-17, billing stopped on 2025-07-30, and the platform was sunset with all data permanently deleted on 2025-09-08. 2025-07-17 to 2025-09-08 is 53 days. Reported because it's the realistic answer to how long you get, not because it was ungenerous.

What a generic answer can’t know

The fair reading is that Humanloop built a better cost model than most live tools and pointed it at a different question. Cost was an evaluator there, one signal among faithfulness and latency, judged per version so you could see which prompt got more expensive. That's an engineering question and it's a good one. Culpa asks a finance question with the same numbers. It carries what each customer pays you, so it reports margin rather than spend, it stores money in exact decimal so totals reconcile against an invoice, and it forecasts next month from your own history with a range. The other difference is the one this page is named after. Humanloop's cost history was on Humanloop's infrastructure, and on 2025-09-08 it stopped existing. Culpa's ledger is a database on your own infrastructure, so the number of months you hold is a disk decision.

Questions founders ask next

When did Humanloop shut down?

The platform closed on 2025-09-08. Its own migration guide says accounts and all associated data, including Files, Versions, Logs, Evaluations and settings, were permanently deleted on that date. Billing had stopped on 2025-07-30 and the notice email went out on 2025-07-17. The docs remain online.

What did Humanloop track for cost?

Per log it stored prompt_tokens, output_tokens, reasoning_tokens, prompt_cost and output_cost, computed for all Prompt logs across every model provider from 2024-04-16. A Flow log rolled cost, tokens and latency up the trace as child logs were added, so an agent run carried its own total.

What did Humanloop recommend that users move to?

Its migration guide names Langfuse and Braintrust, and says to survey the options rather than take a single recommendation. Culpa isn't on that list and this page doesn't pretend otherwise. Culpa is a cost and margin ledger rather than an evals platform, so for most Humanloop users it's a complement to that choice.

Why does it matter that cost was stored as a double?

It doesn't for one call. It matters when you total a month. A double is a binary fraction, so a decimal rate like $0.0012 has no exact representation and small errors accumulate across rows. Culpa stores money as integer pico-dollars, so a monthly total is exact rather than nearly right.

Is a page about a dead product useful?

The product is gone and the design isn't. Humanloop shipped cost as a CI-thresholdable evaluator, reasoning tokens as their own field, and trace-level cost rollup. Most live tools do none of those. Treat the list as a specification to hold your replacement against.

On your infrastructure

Culpa runs on your infrastructure. Your prompts and responses never leave it. Culpa counts calls to run your plan, and it fails open, so if it ever breaks your app keeps running.


How Culpa works

Find the culprit. Not just the total.

Your dashboard shows what you spent. It stops short of who spent it. Culpa shows the conversation, the user and the feature behind it.

Your prompts stay local.

Culpa runs on your own infrastructure. What you send to a model reaches us at no point.

Every dollar has a name.

Follow any charge to the conversation, the user, the feature and the customer behind it.

See the bill before it lands.

Cost your next feature before you ship it. You get the likely bill and the worst case, at best, median, p90 and p99.

Three steps to your first answer.

1

Change one base URL.

Or drop in the Python or TypeScript library.

2

Find your most expensive conversation.

In the first session, not the first week.

3

Cost your next feature before you ship it.

Base URLhttp://localhost:4545/v1Your traffic keeps flowing if Culpa ever stops.

Why the bill went up

Example dashboard

Calls traced

418,209

across 3 projects

Spend this week

$378.41

+ $182 vs last week

Failed calls

312

74% retried, and you paid for all of them

+ $182 this week traced to one culprit

Spend over 14 days

$0$20$40$60$8024262830020406
user_384report_generatorconv_91fprompt_v1894,220 tokens3 retries$6.81

Most expensive users

user_384$38.42
user_119$21.07
user_562$14.90
user_204$8.30
user_871$5.10

Next week forecast

Best$180
Median$240
p90$310
p99$395

Graded against reality. Accuracy shown as results land.

Free, no card, no account

Run the free Cost Leak Scan

It shows your most expensive conversation before you install anything.

Run a free scan

Keep reading


Sources: Humanloop, Migrating from Humanloop, Humanloop Prompt Log API reference. Last reviewed 2026-08-03. Plain text version.