Guides / culpa vs lunary

Culpa vs Lunary

Lunary is an open-source LLM observability platform billed per seat and per event, with history length set by your plan. Culpa, a local-first LLM cost, margin, and forecast ledger, prices every call from a versioned price book, carries the revenue each customer pays you, and forecasts next month from history you keep yourself.

Why this happens

Lunary bills on two axes and gates history on a third. Free is $0 with 10k events a month, 3 projects, a single seat and one month of history. Team is $20 per user per month with 50k events, then $10 per additional 50k, up to 10 seats and one year of history. Enterprise adds self-hosting, SSO, PII masking and SOC 2. The per-seat line is the one that behaves unlike your model bill, because adding an analyst who reads dashboards costs the same as adding an engineer who ships traffic, and neither correlates with tokens. The history line is the one that matters for cost work. One month on Free supports exactly one month-over-month comparison and no seasonal read at all, and a forecast is made of history.

What this usually looks like

  • Your observability bill went up because you added a reader, not because you added traffic.
  • You have one month of history and a question that needs twelve.
  • Event count and token count diverged and nobody noticed which one you're billed on.
  • Cost per customer exists on a dashboard and there's nowhere to put what they pay you.
  • A seat limit decides who gets to look at spend.

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
Choosing a plan on event volume and forgetting the seat cap.Lunary publishes a maximum of 1 seat on Free and 10 on Team, so access runs out before events do.Count the people who need to read spend, then check the tier.
Treating one month of history as enough for cost work.One month gives you no comparison at all, and two gives you one. Seasonality needs a year.Decide the lookback your reporting needs before picking a tier on price.
Reading events as a stand-in for tokens.An event is a logged thing. Ten cheap calls and one expensive one can meter identically.Price by tokens against a rate book, and keep events for volume.

Run this check tonight

  1. Count the people who need to read cost, against your plan's seat cap.
  2. Check how many months of history your plan keeps.
  3. Ask what one customer costs you, and where their revenue is recorded.
  4. Compare your event count to your token count over the same week.

What a per-seat meter does to a cost review

Lunary Team publishes $20 per user per month with 50k events included and $10 per additional 50k. Cost review tends to want finance and engineering in the same tool. Take a team adding four non-engineering readers who ship no traffic at all. Prices are published. The team shape is modelled.

6 engineers on Team = 6 x $20 = $120 a month
adding 4 finance and product readers = 10 x $20 = $200 a month
the bill rose $80, or 67%, with zero additional events logged
at 10 seats the published maximum for this tier is reached

Per-seat pricing quietly taxes the thing cost work most needs, which is more people looking at the numbers. It's a normal pricing model and worth pricing deliberately, because the cheapest way to stay under it means letting fewer people see the spend.

Every number, with its confidence and source

FigureWhat it meansConfidenceSource
$20 per user per monthLunary's published Team plan price, before event overagesprovider-reportedlunary.ai/pricing, read 2026-08-03. Team includes 50k events a month then $10 per additional 50k, a maximum of 10 seats and 1 year of history. Free is $0 with 10k events, 1 seat and 1 month of history. Enterprise is custom with self-hosting, SSO, PII masking and SOC 2.
$200 per monththe same Team plan for a modelled team of 10, four of whom log no events at allcalculated10 seats x the published $20 per user per month = $200, against $120 for the 6 engineers alone. Team size and the split between engineering and reading seats are modelled. The per-seat rate and the 10-seat maximum are published on lunary.ai/pricing, read 2026-08-03.

What a generic answer can’t know

Lunary is open source and self-hosts on Enterprise, so the local-first argument doesn't separate these two and this page won't pretend it does. Three things do. Culpa's history isn't a plan tier, because the ledger is a database on your own infrastructure and how many months you keep is a disk decision. Culpa prices calls from a versioned price book in exact decimal rather than counting events, so a total reconciles against a provider invoice. And Culpa carries the revenue each customer pays you, so the number it reports is margin rather than spend. Lunary will tell you what happened and how much of it there was. It holds no revenue, so it can't tell you whether any of it was worth doing.

Questions founders ask next

What does Lunary cost?

Free is $0 with 10k events a month, 3 projects, 1 seat and 1 month of history. Team is $20 per user per month with 50k events included, then $10 per additional 50k, up to 10 seats and 1 year of history. Enterprise is custom and adds self-hosting, SSO, PII masking and SOC 2. Read 2026-08-03.

How much history does Lunary keep?

One month on Free and one year on Team, per its published comparison table, with Enterprise custom. That's the practical ceiling on backward-looking cost questions, and it's why a forecast built on a free tier has almost nothing to learn from.

Is Lunary open source?

Yes, and it publishes self-hosting on its Enterprise tier. That means privacy and control aren't what separate Lunary from Culpa. The difference is margin against revenue and a forecast, neither of which appears in its published feature set.

Does an event mean a call?

Lunary meters events rather than tokens, so the relationship to spend depends on what you log. Ten cheap calls and one expensive call can consume similar event allowance while costing very different amounts, which is why event count is a poor stand-in for spend.

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: Lunary, Lunary pricing. Last reviewed 2026-08-03. Plain text version.