Guides / culpa vs openlit
Culpa vs OpenLIT
OpenLIT is an open-source agent engineering platform that self-hosts free under Apache 2.0, traces with OpenTelemetry and filters by user, session or cost. Culpa, a local-first LLM cost, margin, and forecast ledger, prices calls from a versioned price book, sets them against the revenue a customer pays, and forecasts next month.
Why this happens
OpenLIT is the page in this cluster where Culpa's usual opening argument doesn't work, and saying so is more useful than dressing it up. It self-hosts free under Apache 2.0, it's built on OpenTelemetry, and its own homepage says you can filter by user, session, cost, latency or metadata. So local-first is matched, open source is matched, and cost attribution by user is matched. Anyone claiming Culpa uniquely keeps your data on your own machines hasn't read this project. What remains is narrow and real. OpenLIT shows what a call cost. It holds no record of what the customer who made that call pays you, so it can report spend by user and never margin by user. And nothing in its published feature set projects next month from your history, which is the other half of a finance question.
What this usually looks like
- You can filter spend by user and there's nowhere to record what that user pays.
- Cost per session is on a dashboard and cost per customer per dollar of revenue isn't.
- Your forecast is a spreadsheet somebody maintains by hand.
- Rates live in the tracing library and drift from what the provider actually charges.
- You self-host everything and still can't answer whether a customer is worth keeping.
Free, no card, no account
Run the free Cost Leak Scan
It shows your most expensive conversation before you install anything.
Mistakes that cost the most
| Mistake | Why it hurts | Do instead |
|---|---|---|
| Assuming an open-source tracer's cost figures reconcile to an invoice. | Displayed cost depends on whatever rate table is bundled, and provider rates change on dated schedules. | Price against a versioned price book with effective dates, and check a month against the bill. |
| Reading cost per user as unit economics. | Cost per user is half the fraction. Without revenue you can rank customers by spend and not by value. | Record what each customer pays and divide, or use a ledger that already holds both. |
| Choosing a tool on licence and stopping there. | Apache 2.0 answers who controls the data. It says nothing about which questions the tool can answer. | List the questions you need answered, then check them against the feature set. |
Run this check tonight
- Filter your spend by user, then try to put revenue beside it.
- Check which rate table your tracer uses and when it was last updated.
- Reconcile one month of displayed cost against the provider invoice.
- Ask what next month costs, with a range.
What a stale rate does to a self-hosted cost display
Any tool that displays cost carries a rate table, and provider rates change on published dates. Claude Sonnet 5 is listed at $2.00 and $10.00 per million through 2026-08-31 and $3.00 and $15.00 from 2026-09-01, both real rows in the price book. Take 100M input and 20M output tokens in a month and price it on each. Volumes are modelled, rates are published.
This isn't a criticism of OpenLIT specifically, it's the failure mode of every bundled rate table including one Culpa would ship carelessly. The defence is effective-dated rates, so each call prices at the rate in force when it ran and a past month recomputes exactly as it was billed.
Every number, with its confidence and source
| Figure | What it means | Confidence | Source |
|---|---|---|---|
| $200.00 | monthly under-report on modelled traffic if a rate table misses Claude Sonnet 5's 2026-09-01 rise | calculated | Both rate rows are real and dated in the price book: $2.00 and $10.00 per million through 2026-08-31, $3.00 and $15.00 from 2026-09-01. 100M input and 20M output tokens gives $400.00 on the first and $600.00 on the second, a $200.00 gap. Token volumes are modelled. The point is the dated rate change, which is published by the provider. |
What a generic answer can’t know
Give OpenLIT its due: Apache 2.0, free self-hosting, OpenTelemetry throughout, and cost visible alongside user and session. On the privacy and control axis it matches Culpa outright, and any page claiming otherwise would be wrong. The difference is one column and one capability. The column is revenue, which OpenLIT has no reason to hold, and without it cost per user can never become margin per user. The capability is a forecast, which needs history you kept and arithmetic run over it, and which appears nowhere in OpenLIT's published feature set. Culpa also prices from a price book carried with effective dates and stores money as exact decimal, so a month recomputes the way it was billed rather than the way today's rate table would bill it.
Questions founders ask next
Is OpenLIT free?
Its homepage says you can self-host free under Apache 2.0, and it publishes tracing, evaluations, prompt management, model comparison and an API key vault. That makes licence cost a non-issue and moves the comparison entirely onto what questions the tool answers.
Does OpenLIT track cost per user?
Its homepage says you can filter by user, session, cost, latency or metadata, so cost attribution is there. This page says so plainly rather than implying Culpa uniquely has it, because that overclaim has already been made once in this cluster and had to be retracted.
Then what does Culpa add?
The revenue each customer pays you, which turns cost per user into margin per user, and a forecast of next month from your own history with a range. Beyond those, prices come from a versioned price book with effective dates and money is stored as exact decimal, so a past month recomputes as it was billed.
Is local-first a reason to choose Culpa over OpenLIT?
No, and this is the page where that's clearest. OpenLIT self-hosts free under an Apache 2.0 licence. Local-first is table stakes across this category rather than a differentiator, and the honest argument is margin against revenue and a forecast.
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.
Change one base URL.
Or drop in the Python or TypeScript library.
Find your most expensive conversation.
In the first session, not the first week.
Cost your next feature before you ship it.
Why the bill went up
Example dashboardCalls 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
Most expensive users
Next week forecast
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.
Keep reading
Sources: OpenLIT, OpenLIT docs. Last reviewed 2026-08-03. Plain text version.