Skip to content
Hlebourg

Cadence Ledger

Available

AI spend attribution that reports what it could not attribute and never ranks the people behind the spend

Ledger joins gateway spend logs, chat admin APIs and IDE usage reports to your org graph, so AI cost lands on a named cost centre and stays there through key rotation and leavers. It traces agent fan-out to the person who started the chain and counts directed and reviewed agent calls per week at team level by default, never as a ranking. Every total shows its unattributed share, and why. Self-hosted by default; it reads metadata only, never prompts or completions, and one call erases a person’s data.

Line
Cadence
For
Platform and AI platform engineering · FinOps and finance · Data protection officers and works councils · CIO and AI programme office
MCP server
hlebourg-ledger
Priced by
One attribution perimeter, counted in people whose agents generate the spend
The problem

What breaks without Cadence Ledger

Your gateway attributes spend to a key hash. Your IDE assistant attributes it to an email address with no org hierarchy above it. Your chat platform has a different admin API, a different retention window and a different date-range cap. Finance asks which department spent the money, and the honest answer is assembled by hand, in a spreadsheet, once a quarter, from four sources that disagree about what a user is. It is wrong in ways nobody has quantified, because no product in this category that we have reviewed reports the share of spend it failed to place.

Inputs

What goes in

Everything Cadence Ledger reads, and nothing beyond it. Inputs that widen quietly after an evaluation make the evaluation worthless, so this list is part of what you are buying.

Data sources used by Cadence Ledger
SourceCadenceWhat it contributes
Gateway spend logscontinuousThe per-request record every gateway already writes — timestamp, model, input and output tokens, computed cost, latency, status — together with whatever identity handle it carries: a LiteLLM key hash, a Kong Consumer, a cf-aig-metadata string. Metadata only. Payloads are never requested.
Chat and assistant admin APIsdailyUsage and cost rows from ChatGPT Enterprise user analytics and Anthropic's Claude Code and Enterprise Analytics reports. Ledger reads the admin surface, not the compliance surface, and never asks for the separate grant that returns conversation content.
IDE assistant usage reportsdaily, inside the vendor's windowCursor's Admin API and GitHub Copilot usage metrics. Seat, spend and activity counts, each arriving with its own date-range cap, which is recorded against every figure it feeds rather than discarded.
Identity and org graphon changeEntra ID, Okta or SCIM, plus the HRIS org chart: manager chain, department, cost centre, start and leave dates. This is what turns a key hash into a person and a person into a budget line.
Agent and MCP call tracescontinuousOpenTelemetry spans from the tracing layer you already run — Langfuse traces and observations, TrueFoundry's metered tool calls, Kong's Agent Gateway. Parent and child span ids, tool names, providers. Tool arguments are dropped at the collector.
Cost-centre mappingon changeThe finance-owned table of which team bills to which cost centre, from which date. Held as a dated mapping, so a reorganisation in March does not rewrite January's ledger.
Outputs

What comes out

Every signal below is computed from the inputs above by a documented formula. Nothing here is a black box: an output nobody can explain is an output that gets overruled the first time it is inconvenient.

Signals produced by Cadence Ledger
SignalScaleHow to read it
Attributed spendcurrency, per person / team / cost centreCost joined to a named identity through the org graph as it stood on the date of the request. This is the figure finance receives, and it is never the whole invoice.
Unattributed share0–100% of spendThe share Ledger could not place against a human, split by cause — shared service account, CI pipeline, untagged request, retired key, unresolved chain. Reported beside the total, always, including when it is embarrassing.
Attribution confidenceexact / inferred / noneHow a row was resolved. Exact means an identity claim travelled with the request. Inferred means a dated mapping supplied the answer. The two are never added together and presented as one number.
Initiator costcurrency per chainThe full cost of a fan-out chain billed to the human who sent the first prompt, including every downstream provider and MCP call. Shown alongside that person's direct cost, never merged into it.
Human-initiated share0–100% of callsHuman-initiated and agent-initiated are two fields, not one actor. A team at 90% agent-initiated is a different operational picture from one at 90% typed, at identical spend.
Supervisory loaddirected and reviewed calls per weekHow much of a week goes into directing and checking agent output rather than producing it. A count, reported at team level by default. It is not a productivity score and will not be presented as one.
Upstream window bounddaysThe oldest date each joined source can answer for. Every figure carries the tightest bound among its sources, so a twelve-month chart resting on a 30-day API says so on its face.
Capabilities

What it does

A dated org graph, not a current one

Every row is resolved against the organisation as it stood at the request timestamp. Someone who changed team in March does not retroactively move their January spend, a leaver's history stays where it was incurred, and a rotated key inherits the subject of the key it replaced.

The unattributed number is a headline

Total, attributed, unattributed and the cause breakdown are one screen and one API response. There is no view of Ledger in which the total appears without the share behind it that nothing could place.

Fan-out traced to the initiator

One prompt that becomes four hundred calls across three providers and six MCP servers is reconstructed as a chain and billed to the person who started it, with each hop marked exact or inferred according to whether an identity claim actually survived it.

Works-council mode as a deployment setting

A configurable k-anonymity floor, small-group suppression that also refuses differencing attacks, and pseudonymisation at ingest with a two-person logged break-glass. Chosen at install, not toggled in a dashboard by whoever is logged in.

Erasure with a manifest

One call removes a data subject from everything Ledger holds and issues the deletion each joined source supports — returning a document naming what was deleted, where, and what upstream retention it could not reach. The manifest is the artefact your DPO can hand to a supervisory authority.

Beside the request path, never in it

Ledger reads logs, admin APIs and traces. It does not proxy inference, so it cannot add latency, cannot fail open into unmetered serving, and cannot turn its own bad afternoon into your outage.

In depth

How it actually works

A key hash is not a person

Every gateway in this category records essentially the same skeleton — a timestamp, a model, input and output tokens, a computed cost, a latency, a status — and then differs on the one field that matters for attribution: who made the call. LiteLLM has the deepest native model, rolling spend up through a key hash, a user, a team and an organisation at once, with budgets enforceable at each level. Kong labels its metrics with a Consumer, and since AI Gateway 2.0 can key on an authenticated organisational principal instead, additively and off by default. Portkey resolves identity from arbitrary metadata strings, though making that tagging mandatory is an enterprise-tier feature. Cloudflare has no identity concept at all: attribution exists if, and only if, the caller remembered to send a cf-aig-metadata header.

All of those are real identities of something. None of them is a person in your HR system, and none of them knows what a department is. The join from one to the other is left to you, and it is not really a join — it is a reconciliation, and reconciliations decay.

Three things break them. Keys rotate, and the new key has no memory of the old one’s owner. People move between teams, and the spreadsheet that mapped team to cost centre was accurate on the day it was written. People leave, and their key either keeps serving traffic under a name nobody recognises or is revoked along with the history that explained six months of the invoice.

Then there is the second problem, which is the one that actually takes the engineering. Chat, IDE and gateway traffic each arrive through a different admin API with a different idea of identity and a different window. Cursor’s Admin API returns individual email addresses with no way to group them by team or department at all, and gives 90 days where its Analytics surface gives 30. GitHub’s usage metrics run on a 100-day window, and the older Copilot metrics endpoints closed on 2 April 2026, taking their year-on-year comparisons with them. Anthropic’s Enterprise Analytics API holds nothing dated before 1 January 2026. Azure API Management’s token-metric policy caps you at five custom dimensions, which is a constraint on your attribution schema whether or not anyone noticed when it was configured.

Ledger’s position is that the union is only honest if it is bounded explicitly. Every figure carries the tightest upstream window among the sources that fed it. A twelve-month cost-centre chart built partly on a 30-day API is labelled as such on its face, rather than fading out into a flat line that looks like a quiet quarter. This costs us the good-looking dashboard, and it is the whole point.

Against that, Ledger holds the organisation as a dated graph rather than a current one. Every row is resolved against the org chart as it stood at the request timestamp, so a reorganisation in March does not rewrite January, and a leaver’s spend stays in the quarter and the team that incurred it. Rotated keys carry lineage forward: the replacement inherits the subject of the key it replaced, and the inheritance is recorded as a dated fact rather than applied silently.

Everything above is inspectable. Any figure Ledger shows can be asked why: which source supplied it, which graph edge resolved it, which mapping was in force on that date, and what window bounds it. An agent calling through MCP gets the same derivation the dashboard does, which is the only way a number survives being quoted twice.

The number nobody publishes

Open any spend dashboard in this category and it will be confidently populated. It will show a total, a breakdown by model, a trend line and a top-ten list. What none of the dashboards we reviewed shows is the share of that spend it could not place against a human.

The causes are not exotic. A shared service account collapses many people into one identity. A CI pipeline runs on a key that belongs to nobody. An agent calls under its own credentials. A request arrives at Cloudflare without the metadata header, and the gateway is perfectly happy to serve it. A key hash resolves to an employee who left in April. Cursor’s spendCents field includes the subscription amount, so naive overage arithmetic on top of it is wrong. GitHub counts only those users whose IDE telemetry actually reached GitHub, which makes it a sample rather than a census, and nothing in the response says so.

Individually, each of these is a known footnote. Together, and left alone, they are the mechanism by which attribution decays into decoration. The dashboard stays populated. The trend line stays smooth. The numbers quietly stop meaning what the finance deck says they mean, and because nothing reports the decay, there is no moment at which anybody notices.

Ledger treats the unattributed share as a first-class figure. It appears beside the total, in the same view and the same API response, broken down by cause, with the specific change that would reduce each one: this key needs an owner, this pipeline needs its own cost centre, this integration needs to start sending a metadata header, this chain needs initiator propagation turned on at the hop where it is currently lost.

The first month is usually uncomfortable. We are not going to put a figure on how uncomfortable, because the honest range across organisations is wide and anybody quoting you a single number for it is selling a benchmark they invented. What we will say is that the figure falls quickly once it is visible, for the obvious reason that nobody can fix an error nobody has named.

There is one thing Ledger will not do with it, and it is the obvious thing. It will not divide unattributed spend across headcount to make the total add up. Apportionment is not attribution. A number produced that way is indistinguishable from a measured one by the time it reaches a slide, and it is the easiest way for a well-run FinOps practice to end up defending a figure it cannot source.

One prompt, four hundred calls

Someone types one sentence. The agent plans, calls a model, calls six MCP tools, each of which calls a model, retries two of them, summarises, calls again. Four hundred requests across three providers in ninety seconds, from one keystroke by one person.

What your gateway sees is four hundred rows on one key. What your metering sees depends on the shape of your contract, and the shapes are unkind here. Kong meters per model and per service, so a single prompt that fans out across many internal calls is counted as many billable things. Langfuse’s unit is traces plus observations plus scores, which means a deep agent burns units far faster than the request count suggests. The economics of agent work run ahead of the intuition everybody built on chat completions.

What nobody in the category does is put that spend back on the person. Kong and TrueFoundry meter MCP tool calls as first-class requests; Anthropic reports tool acceptance and rejection counts; Langfuse models tool calls as spans inside a trace. All useful, and none of them reconstructs the chain back to an initiator and bills it there.

Ledger does that reconstruction from the trace tree you already emit. Where your stack can propagate an initiator claim through the hop, the attribution is exact, and Ledger says so. Where it cannot — a provider that drops unknown headers, an MCP server that starts a fresh context, a queue in the middle — the reconstruction is inference from span parentage, timing and key identity, and Ledger marks that hop inferred rather than promoting it to a fact. Some chains break entirely, and those land in the unattributed pile with the break point named, which is generally enough to tell your platform team exactly where the header needs to go.

Human-initiated and agent-initiated are two separate fields, not one actor field with two possible values. This sounds like a modelling nicety and it is not. Two teams with identical monthly spend, one at 90% typed and one at 90% agent-initiated, are running different operations with different failure modes, different review burdens and different answers to the question of what happens if you double the budget. Collapsing both into requests-by-user throws away the only distinction that would have told you.

The same reconstruction answers a question your security review will ask before finance does: which tools a chain touched, in what order, on whose behalf. That is the shape of the traffic, not its content — Ledger has no more idea what the prompt said than your invoice does.

Works-council mode, and why a German deployment is a different product

In Germany, §87(1) Nr. 6 BetrVG gives the works council co-determination over technical devices that are capable of monitoring performance or conduct. Capability is the test; intent is not required, and a stated policy of not looking does not help. A council can seek an interim injunction, and measures introduced without involving them are invalid rather than merely contested.

Our own standing under that test is worse than anything else in this suite, and it is better read here than discovered in a council session. Ledger attributes cost to a named individual. That is monitoring of performance and conduct by construction, whatever the reporting mode sitting above it, which makes this the most clear-cut §87(1) Nr. 6 case in our whole catalogue — more clear-cut than the products that describe themselves as monitoring. There is an argument that Ledger counts the people whose agents generate spend rather than counting seats. That is a good argument about licensing. It is not a co-determination argument, it will not survive a council reading, and we do not make it. Austria is the binding constraint rather than Germany: under §96(1) Nr. 3 ArbVG consent cannot be substituted by a conciliation board, an arbitration panel or a court, so a council that refuses ends the Austrian deployment and no amount of contract drafting reopens it.

The line is sharper than most vendors admit. The Hamburg labour court’s January 2024 ChatGPT decision held that the deployment as configured was not co-determined, because that configuration was not suitable for collecting performance or conduct data. Company-account telemetry sits on the other side of that reasoning by construction. Your gateway is already the technical device; Ledger joining its rows to an org chart is the part your council will want to read carefully, and they are right to.

France offers the other lesson. The Nanterre court, in an interim order, found that a company had deployed AI tooling in a pilot phase before CSE consultation had concluded, suspended the implementation until it had, and awarded damages to the CSE. The failure there was sequencing, not technology, and sequencing is the part a vendor can actually help with.

What makes this worth building is that the controls are table stakes one product category over and effectively absent in this one. Microsoft’s Copilot dashboard hides results below a configurable minimum group size, defaulting to ten and lowerable to five, with advanced analysis refusing to report under five at all. GitHub’s legacy team endpoint enforced a genuine five-seat floor, although that protection has since narrowed: the floor now excludes small teams from the team-level report while their members remain individually visible in the per-user usage report. Worklytics runs a pseudonymisation proxy between source systems and its platform as a matter of architecture. Of the gateways we checked — LiteLLM, Kong, Portkey, Cloudflare — none ships any of it; they default to raw per-user rows.

Ledger’s works-council mode is a deployment setting, chosen at install and recorded in the works agreement, not a toggle available to whoever is logged in. In that mode the system is aggregate-first: a configurable k-anonymity floor below which no cut is returned, suppression that also refuses queries whose answer could be reconstructed by subtracting two permitted aggregates, and pseudonymisation applied at ingest rather than at display. Re-identification exists, because occasionally it must, and it is a named two-person break-glass action that is logged, timestamped and reportable to the council as a list.

German works agreements for AI tooling typically carry an Auswertungsverbot — an explicit ban on using the data for performance or conduct evaluation, with any exception requiring case-by-case council consent. Most products can only promise to honour such a clause. Ledger’s refusal to build a ranking is what makes the clause enforceable in architecture rather than in good faith: there is no endpoint to call, so there is nothing to misuse and nothing to audit for misuse.

Three dates belong on the same calendar as the council sessions, and one of them has moved since most vendor material in this category was written. Ledger is not an Article 5 problem: the Article 5(1)(f) prohibition covers systems designed to determine a person’s emotional state in the workplace, and cost attribution infers spend, not feeling. Article 5 sits in the top penalty tier — EUR 35,000,000 or 7% of worldwide annual turnover, whichever is higher, so above roughly half a billion of turnover the percentage limb binds and the EUR 35 million figure understates what is at stake. We are not going to borrow the weight of a tier that does not reach us. Where Ledger does sit, once its outputs feed personnel decisions, is Annex III point 4, employment and worker management, as a high-risk system. Those obligations fell due on 2 August 2026 and were deferred to 2 December 2027 for standalone systems and 2 August 2028 for systems embedded in products, by Regulation (EU) 2026/1744, adopted on 8 July 2026. Nothing else moved: the Article 5 prohibitions have applied since 2 February 2025 with penalties enforceable from 2 August 2025, and the Article 50 content-marking duty applied from 2 August 2026, with a four-month transition for systems already placed on the market. A deferral is not a reprieve. It is sixteen further months in which your auditor expects the work to have been done, and one provision has an immediate consequence for sequencing whatever the deadline does: Article 26(7) requires worker representatives to be informed before the system goes into service, alongside the national processes above rather than in place of any of them.

One further date belongs on the calendar even if your staff are not platform workers. Directive (EU) 2024/2831 applies from 2 December 2026 and bars automated monitoring systems from processing a worker’s emotional or psychological state, their private conversations, and data collected while they are not working or offering to work. Almost no member state has it in national force yet, which makes it a planning horizon rather than a live duty, and we would rather say that than sell you a deadline. Ledger records the timestamp on a cost record because cost records have timestamps. It does not derive a working-hours profile from them, and it is not the component of this suite that would.

What you can and cannot measure about a person who directs agents

The measurement problem here is not that the data is missing. It is that the obvious metrics have been tested and do not hold up. Faros AI, across more than 10,000 developers, found pull requests merged up 98% while team-level DORA metrics showed no improvement at all. Its 2026 report, covering 22,000 developers and 4,000 teams, found median pull request review time up 441% under high AI adoption. DX found a 65% average rise in AI tool usage producing just under 8% more median throughput.

Read together, those say something quite specific: output volume rose, flow did not, and a large part of the cost landed on review. Somebody who directs agents produces more artefacts and more reading for everyone around them. Measured on volume they look extraordinary; measured on delivered outcome they look unchanged; measured on the load they create for colleagues they do not appear at all. All three of those readings come from the same person in the same month.

The raw counting is unreliable before any of that. Cursor’s totalLinesAdded mixes manual edits, tab completions and agent output in one field, and misses code copied out of a suggestion rather than accepted through the IDE flow. GitHub’s counts depend on IDE telemetry reaching GitHub. These are serviceable numbers for capacity planning and poor numbers for judging a person, and the second use is the one they get put to.

What Ledger reports instead is supervisory load: directed calls, review passes, and chains rejected and re-run, as counts, at team level by default. It is a workload measure, in the same family as meeting hours or on-call pages. It tells you whether a team’s week has shifted from producing to checking, which is the change the review-time figures are describing, and which no seat-count dashboard can see.

What Ledger will not do is rank people on it. The precedent in this market is not encouraging: Anthropic’s native dashboard ships a user-level leaderboard of who accepted the most lines of code in a month — documented on its Enterprise Analytics page as of September 2026 — which is a performance artefact by construction. Microsoft’s Copilot Readiness Report states that it “isn’t intended to be used to evaluate employee performance” — and then offers CSV export, which makes the protection a policy rather than a control. Our version is a control: the ranking endpoint does not exist, in any tier, under any licence.

Cadence Signal, elsewhere in this suite, consumes Ledger’s metadata as one of its inputs. It is a separate product with its own consent model and its own works agreement, and buying Ledger neither switches it on nor makes Ledger’s data visible to anyone Ledger’s own permissions would not already allow.

The honest caveat, last. Supervisory load is still a count, and counts get gamed the moment they enter a performance conversation. We report it at team level by default for that reason, and the reason is prudence rather than principle. If you push it into individual reviews it will degrade, exactly as every other proxy metric has, and no architecture we ship can stop you.

Deletion, meant literally

Per-subject deletion is close to absent in this category. Langfuse documents it properly — filter the traces table by userId, or call DELETE on the public traces endpoint, with propagation across storage layers in roughly fifteen minutes — and is very nearly alone. LiteLLM offers a time-based purge, configurable and documented, which deletes by age rather than by person. Cloudflare offers a storage cap that drops the oldest logs first, which is a capacity behaviour, not a retention policy. Databricks hands the problem to Unity Catalog, which is the best answer available if you already run Databricks and no answer at all if you do not. Most of the rest we reviewed offer nothing.

The difficulty is that an erasure request does not arrive scoped to a system. It names a person. Somebody then has to work out that the person appears as a key hash in the gateway, an email address in the IDE vendor’s API, a directory principal in the chat platform’s admin surface and a row in the BI extract taken last Thursday, then deal with each one separately, and then prove they did.

One call to Ledger removes that person from everything Ledger holds and issues the deletion each joined source supports. That is the easy half. The half that matters is the manifest it returns: what was deleted, from where, at what time, and — set out just as plainly — what could not be reached and why. An upstream vendor whose retention we cannot address from outside. An admin API with no per-subject delete at all. An export your own team has already taken. Each is named, with its reason, in a document.

That document is the deliverable. A deletion you cannot evidence is a deletion you cannot defend, and “we sent the request” is not an answer to a supervisory authority asking what became of the data. The manifest is written to be handed over unedited.

Erasure moves historical totals, and this is where most systems quietly cheat. A figure that appeared in a board pack in April cannot stay the same after the person behind part of it has been erased. Ledger recomputes the affected periods and marks them restated, with the date of the restatement, rather than changing a number in place and hoping nobody had written it down. The spend itself does not vanish, because it was really incurred and really invoiced: it moves into the unattributed pile, which is the honest place for cost that no longer resolves to anybody.

A last point on retention, because it reads like a contradiction with the limit above and is not. Ledger cannot see further back than a source allows at the moment it first ingests. Once a row has been ingested, Ledger holds its own copy under your retention policy, and that matters more than it sounds: Langfuse Cloud deletes anything older than the new limit at the next nightly cleanup when a plan is downgraded, and Helicone’s retention tops out at three months below the enterprise tier. Your history should not depend on somebody else’s billing tier, and with Ledger in place it does not.

What the largest deployments oblige us to

The top tier is not a bigger licence. The dated org graph, the unattributed number, the chain reconstruction and the erasure manifest are the same in every deployment, and none of them improves because a contract is larger. What changes is the list of things we are obliged to, in writing, in the words below. That composition is the whole of the difference, and where an obligation belongs to the suite or to the company rather than to this product, it says so here. A shared promise sold three times is a shared promise sold twice too often, and a reviewer who catches one is entitled to stop reading the rest.

The obligation that is genuinely Ledger’s own is accuracy with money behind it. A contractual variance threshold, measured not against our own dashboard but against the provider invoices you have already paid; a credit ladder printed in the contract before you sign it rather than assessed afterwards by us; credits accrued from our own reconciliation without you filing a claim; and a disputed determination decided by a named independent examiner instead of by our support desk. That last clause is the one worth reading twice, because a warranty whose trigger the vendor adjudicates is a warranty the vendor has written itself a licence to refuse.

Ledger is also the one product in this suite that sits in the path of a financial decision, which changes what an availability commitment has to mean. A survey tool that is unreachable for three hours has inconvenienced somebody. An attribution layer that is unreachable during close week has stopped a process with a date on it. So the top tier carries contractual RTO and RPO with a warm standby and rehearsals documented and handed over, alongside service credits of 25% of the monthly fee for each hour of unplanned unavailability, accrued automatically, not your sole and exclusive remedy, and not capped at six months of fees — all three of which are departures from what the industry writes. The rate and the absence of a cap are published here; what counts as unplanned and where the hour starts are defined in the contract — a credit whose trigger only we could read would be the old trick in new clothes. Now the part we would rather say than have said to us: a credit is measured against what you pay us, never against what the outage cost you. The Uptime Institute found 57% of respondents pricing their last major outage above USD 100,000 and one in five above a million. Against numbers like those a service credit is evidence that we take the clock seriously, and not a remedy. Read it as the first thing and not the second.

Named engineers in the Americas, in EMEA and in APAC, known to you by name; fifteen minutes to a first substantive response on a business-stopping incident, every day of the year; escalation to a named incident manager at sixty minutes; and a quarterly review at which you may refuse any of them. One duty rota covers the whole of Cadence. This is a platform property allocated across Pulse, Signal and Ledger, not a round-the-clock line charged whole against each of the three, and if it ever appears at full price on more than one of our quotations you have found a billing error rather than a deliverable.

Co-determination clearance we carry as a delivery rather than describe as support: the technical annex mapping every configurable setting in the product to a clause a council can actually enforce, the data-flow dossier in the council’s own language, named engineers who attend the sessions rather than a representative of the company, the council’s own §80(3) expert funded to a contractual cap, Article 26(7) notification before go-live, and for Italy either the prepared RSU/RSA agreement text or the filing with the Ispettorato Nazionale del Lavoro. What it saves you is measurable, because the failure mode has a published price: a negotiation that collapses goes to an Einigungsstelle whose cost the employer carries entirely under §76a(1) with no statutory ceiling, which runs to roughly EUR 36,000 to 47,000 an episode before counting the deployment standing idle, and in France skipping CSE consultation is a criminal matter at EUR 37,500 for the legal person with personal liability for the officer who signed. And the necessary correction to how this is usually sold: you employ one set of works councils. They do not convene a second time because you bought a second product from us. This is a property of the portfolio, priced once across everything of ours you run and negotiated as a single group works agreement. If it appears as a line against two of our products, you have been charged twice for one negotiation, and you should say so.

Regulatory operations with dates attached rather than intentions: a complex-tier DPIA in each jurisdiction of deployment, readiness for Annex III point 4 by 2 December 2027 wherever Ledger’s output reaches a personnel decision, and automatic logs retained for not less than six months under Article 26(6). The penalty behind the deployer duties is EUR 15,000,000 or 3% of worldwide annual turnover, whichever is higher, which for a ten-billion group is EUR 300 million. Be exact about what that figure is, and we will be: statutory exposure, not an observed outcome. As at March 2026 no enforcement action had been published under the AI Act’s prohibitions, the tier that has been enforceable longest — so anyone selling you this as a demonstrated risk is selling you a forecast with a regulation’s letterhead on it. Behind all of that sits an ISO 42001 AI management system, built and independently audited, on the straightforward argument that a product measuring how an organisation uses AI cannot credibly lack one itself — and that certification is a property of the company, held once, not a line against this product. Organisations already holding ISO 27001 reach it up to 40% faster, which is the only reason the timeline is four to six months rather than a year.

An annual independent attestation that the build you are running contains no ranking endpoint and no per-individual productivity score, together with an undertaking not to introduce either by update without your written consent. That pairing is deliberate and the omission from it is deliberate too. We are not going to dress a promise never to build something as a warranty and put a reserve behind it: a vendor warranting that it will never ship a feature it has never built, does not intend to build and says would be unlawful is selling you its own intentions at a price. The attestation is the part that costs real money and the only part you can check, so it is the part that is in the contract.

Deployment inside your perimeter, including with the cable pulled out: a separate release train, updates shipped offline under a signed integrity manifest you can verify independently of us, telemetry that never leaves your network in any form, and diagnosis performed against offline dumps because there is no other way to do it. Spend attribution data is commercially sensitive in a way that is easy to underrate — it shows which parts of your organisation are building what, at what rate, and the shape of that answer is worth something to a competitor. The nearest published price for the posture itself is Google’s air-gapped Distributed Cloud at USD 300,000 a month, on a system that can run on as few as four racks. Where you run more than one Cadence product inside that perimeter, this is one enclave and one release train, and we allocate it across Pulse, Signal and Ledger so that the three allocations sum to one line rather than to three.

The price fixed for the term: no annual uplift, no CPI index, no true-up against headcount, no supplement for an additional jurisdiction or an additional deployment, no AI surcharge, and — the one specific to this product — no increase when the model spend Ledger attributes goes up. Symmetrically, no clause preventing the figure from falling when your perimeter shrinks. The norm we are declining is 3% to 10% a year, which is what the published renewal terms in this category actually say, and the largest vendor in the market moved the other way: Microsoft raised E5 from $57.00 to $60.00 with effect from 1 July 2026 and withdrew the EA volume discount levels B to D in November 2025, so a hundred thousand seats no longer earn an automatic discount from anybody.

Three things are deliberately absent from that list, and their absence is what a procurement reviewer should check first. Keeping the connectors working against provider SKUs that move every quarter is not an obligation we bill for: it is the product, and a vendor charging separately for the engineering that keeps its own software working is charging you for its regression suite. The dated org graph is the same. So is reporting the unattributed share — that is what Ledger is, not what the top tier adds, and if any of the three ever appears as a line on a quotation from us, strike it. And none of the rest is worth buying unless you clear the thresholds stated further up: around a hundred thousand people whose agents generate spend, three or more model providers under contract, five or more legal entities reporting spend separately, and annual model spend in tens of millions rather than single-digit millions. Below those, the ordinary self-hosted deployment does the same measurement and this tier is weight you are carrying for nothing. We would rather say so on the first call than after a procurement cycle.

How it is priced, and why

The unit is one attribution perimeter, counted in the people whose agents generate model spend. Not requests, not tokens, not traces, not tool calls, not seats on Ledger itself, and above all not a percentage of the spend being attributed. The reasoning is almost embarrassingly direct: a product bought because per-call and per-seat meters distort the real cost of AI cannot be sold on a meter that reproduces the distortion. If your agent fleet triples in October, the thing measuring it must not become a second unpredictable invoice arriving in the same month as the first.

That is a commitment with a cost attached, and the published rates next door show what is being given up. Portkey bills $49 a month for a hundred thousand logs and $9 for every further hundred thousand. Langfuse charges $8 per hundred thousand units, falling to $6 above fifty million. TrueFoundry starts at $25 per user per month and states in its own FAQ that MCP tool calls count toward usage exactly like LLM requests. Each of those is a defensible design, and the arithmetic on them is genuinely modest — at two hundred million agent calls a year, per-call revenue at Langfuse’s own top-tier rate comes to about twelve thousand dollars, which is twelve thousand and not twelve million. The meter is not where the money is in this category. What the meter does is move the number on your invoice every time your engineers change how they work, and that is the property this product exists to remove.

What this page does not do is print a figure, and the reason is not coyness. An individual, a thirty-person firm and a global group running this across a dozen legal entities pay amounts two orders of magnitude apart. A single number on a web page is a lie at one end of that distribution and an insult at the other, so we publish the unit, the list of what is never metered, and the threshold at which the obligation tier starts to make sense, and leave the figure to a conversation where your actual perimeter is on the table.

Now the unfavourable number, which we would rather state ourselves than have produced across a table. Measured against the model spend Ledger merely counts, a top-tier contract sits past the five-per-cent line — the line at which a software purchase becomes a board conversation. We know it. The question that follows is a fair one and it usually arrives as AWS: they charge between 3% and 10% to manage cloud spend and put a round-the-clock operations team inside that number, so why should a measuring layer cost what somebody else’s operations cost? The answer is that the denominator has been borrowed. AWS takes a percentage of spend it also operates. Ledger does not operate your model spend, never enters the request path and claims no share of what it observes; it establishes who caused it. The right denominator is the budget of the function that would otherwise do this reconciliation by hand, and the IT budget that funds that function. Against those, the same contract is a fraction of a per cent — a line in a CIO’s budget rather than an item on a board agenda.

A second concession is owed in the same breath, because it runs against us. At the spend levels where this product makes any sense, charging one per cent of what we attribute would earn us roughly six times less than a fixed price does. So a fixed price is higher than a percentage on the day you sign and lower than one within about two years if this market holds its trajectory — enterprise spend on generative AI ran to USD 37 billion in 2025 against USD 11.5 billion in 2024, and that estimate excludes chips, inference and model serving, so the true figure is higher still. We carry the risk that your AI budget triples while our number does not move. That is a real concession. It is also entirely in the future, while the money is due now, and you are entitled to say so out loud.

The third is the one that could sink the business case, so it belongs on the page rather than in a meeting. The payback argument runs: some share of your spend is unattributed, unattributed spend is unoptimised, and making it visible lets you cut part of it. Our working assumption has been around a tenth unattributed. There is no published data behind that number — none. We looked. The FinOps Foundation, which is the industry body for exactly this question, publishes only illustrative formulas rather than measured outcomes from deployments, and states plainly that generally accepted frameworks for cost allocation across multi-agent workloads do not yet exist. If your unattributed share is nearer two per cent than ten, this product does not pay for itself in the first year, and no argument we can make changes that arithmetic.

Which is why the offer is a six-week pilot on one business unit, measured before anything is signed. We instrument one unit, run the attribution against invoices you have already paid, and report the unattributed share and its causes. If the figure comes back below the threshold where the case works, we will tell you that, and the right outcome is that you do not buy this. We would rather find that out in six weeks at our expense than in year two at yours.

The last comparison a procurement reviewer reaches is to the category next door, and it is unflattering. Vendr puts the median Portkey deal at $8,988 a year. TrueFoundry’s own calculator, at seven users and a million requests, produces $3,720. The highest figure computable from any published grid in agent observability is Langfuse Cloud Enterprise at a hundred million units a month — $8,801 monthly, $105,612 a year, by the vendor’s own arithmetic. A top-tier Ledger contract is more than an order of magnitude above that ceiling. The gap is real and we are not going to talk it away. What we will say is that the comparison is wrong by subject rather than by amount: those products observe calls. They do not stand behind the accuracy of attribution to a named human with money on the line, and they do not carry works-council clearance in five jurisdictions. If what you need is call observability, buy one of them; several are excellent and all of them are cheaper. If you find yourself needing both, a reasonable reading is that you should keep the observability tool and add this, not replace one with the other.

The counter-example that cuts both ways is Splunk. Vendr’s median Splunk deal is $94,200 a year; the Department of Veterans Affairs pays roughly $18.4 million a year for the same product under a two-year enterprise licence agreement. That is a factor of nearly two hundred for identical software, produced entirely by the composition of obligations wrapped around it. It proves that obligations can move a price that far. It does not prove they should move this one, and we are not going to pretend otherwise. Then the distinction we will draw against ourselves, because a reviewer will draw it anyway: that is a US federal award and we could not have won it. Hlebourg is a UAE company. The UAE is not a Trade Agreements Act designated country, and the WTO GPA threshold is $174,000, which a contract of that size clears many times over. A UAE entity also cannot hold a US facility clearance under any circumstances — 32 CFR 117.9(c)(2) and (c)(3) require organisation under US law and location in the United States, and those two criteria are reached before anybody asks about foreign ownership or control. Federal work of that shape is closed to us until there is a US entity and a documented country of origin, and neither exists yet. The VA contract proves what the category costs. It says nothing about what we are paid, and we will not let it be read as though it did.

What does establish the demand is not ours to claim either, which is why it is the better evidence. The FinOps Foundation’s 2026 survey, across 1,192 practitioners representing more than $83 billion of annual cloud spend, finds 98% of practices now managing AI spend, against 63% a year earlier and 31% two years before that. The same body describes the unsolved problem in this product’s own words: identifying the consumer of the model output, and the lack of generally accepted frameworks for cost allocation across multi-agent workloads, with providers shipping SKUs many of which have no native ability to tag. That is the gap Ledger is built into, written down by somebody with nothing to sell you. What a single provider contract now reaches is public too: Vendr records a median Anthropic purchase at $138,462 a year against a top of $500,000, and OpenAI at $108,000 against a top of $801,000. One provider, one buyer, one year. The invoice that nobody can split by department is no longer a rounding error on anybody’s ledger, including yours.

Integration

Cadence Ledger through MCP

An agent about to spin up a fleet of sub-agents ought to be able to ask what the last fleet cost and whose budget it landed on. Ledger answers that, and answers why a number is what it is, under the same suppression rules as the dashboard and scoped to what the calling operator may already see.

Server

hlebourg-ledger

Tools exposed by hlebourg-ledger
ToolEffectWhat it does
ledger.get_spendreadAttributed spend for a person, team, cost centre or model over a period. Returns the unattributed share for the same slice in the same response; the two cannot be requested apart.
ledger.get_unattributedreadSpend that could not be placed against a human, broken down by cause, with the specific change that would fix each one. Read this before quoting any total as complete.
ledger.trace_chainreadReconstruct one fan-out chain from a request or trace id — every downstream model and MCP call, its cost, and the initiating human — with each hop marked exact or inferred.
ledger.explain_attributionreadFull derivation of any figure the caller can see: which source supplied it, which dated org-graph edge resolved it, which upstream window bounds it. Call this rather than asserting a number you cannot source.
ledger.set_budgetwriteSet or move a budget on a key, person, team or cost centre, with the behaviour on breach. Ledger records and alerts; it cannot block a request, because it does not sit in the request path.
ledger.map_cost_centrewriteWrite a dated mapping from a team or key to a cost centre, effective from a date you supply. Earlier periods are not rewritten.
ledger.erase_subjectactRemove everything Ledger holds for one data subject and issue the deletion each joined source supports. Returns the manifest. Irreversible and logged with the requesting operator.
ledger.export_ledgeractEmit the documented extract — rows, dated mappings, chain reconstructions, unattributed causes — as JSON or CSV, logged as an export event.

Resources

Documents the agent reads rather than calls — pulled into context without spending a tool call.

  • ledger://methodology/attribution
  • ledger://methodology/chain-reconstruction
  • ledger://policy/works-council-mode
  • ledger://policy/fields-collected
  • ledger://schema/ledger-export

Tools are scoped by the same permissions as the human account they run under. An agent cannot read what its operator cannot read, and every call lands in the audit trail with the operator, the agent and the prompt that caused it. How integration works.

Deployment

Where it runs

Supported environments

  • Self-hosted beside your gateway — the default, and the only mode in which your spend logs never leave your network
  • Private cloud tenancy in a region you choose, with the org graph held in a separate store from the usage rows
  • Air-gapped, fed by scheduled exports of your own logs, with no outbound connection of any kind

Connects to

  • LiteLLM
  • Portkey
  • Cloudflare AI Gateway
  • Kong AI Gateway
  • Langfuse
  • OpenRouter
  • ChatGPT Enterprise
  • GitHub Copilot
  • Cursor
Evidence

What you can check yourself

Claims a buyer cannot test are worth nothing. Each of these is verifiable during an evaluation, without our involvement.

  • Point Ledger at last quarter's gateway logs and compare its total with the provider invoice you have already paid. Then read the unattributed share, and ask every other dashboard on your shortlist for its equivalent figure.
  • Rotate a virtual key mid-month, move one person between teams, and off-board a third. Re-run the month. All three histories should still be attributed to the right cost centre on the right dates, and none should have moved.
  • In works-council mode, try to isolate a four-person team through the API. Read the refusal, which names the rule that fired and the group size, then find your attempt in the break-glass log.
  • Erase one person and read the manifest. Check what it claims it could not reach against that vendor's own documented retention setting, and see whether the two agree.
Limits

What Cadence Ledger does not do

This section is written before the rest of the page, not after. If one of these limits is a dealbreaker, better to find out now.

  • Ledger never reads prompt or completion content. It consumes metadata and cost records only, and where a source offers a content grant — OpenAI's Compliance API returns user inputs and outputs — Ledger does not request it. If your case depends on prompt text, this is the wrong product.

  • Ledger will not produce a per-individual productivity ranking or an output leaderboard. Anthropic's native dashboard ships one, as documented on its Enterprise Analytics page as of September 2026; we decline to. The refusal is the product: the moment a ranking exists, engineers route their real work around the thing that is measuring them, and the telemetry you bought stops describing anything.

  • Ledger cannot attribute a shared service account and does not guess. A key used by a CI pipeline and eleven engineers is reported as unattributed with its cause named, not divided by twelve and called an estimate.

  • Retention is bounded by the upstream vendor's window and Ledger cannot see further back than the source allows — Cursor's Analytics endpoint at 30 days, GitHub's 100-day window, Anthropic's Enterprise Analytics API holding nothing before 1 January 2026. Ledger names the bound on the figure rather than drawing the line to the edge of the chart.

  • Ledger is not a gateway. It sits beside yours and never takes the request path. While it is down you lose attribution; you do not lose inference. An availability incident on an analytics tool must not be an outage.

  • Ledger is the most clear-cut co-determination case we sell, and we would rather write that here than have it read back to us. Attributing cost to a named individual is monitoring of performance and conduct by construction, whatever the reporting mode sitting above it. In Austria a works council can simply refuse under §96(1)(3) ArbVG, with no arbitration body able to substitute its consent. We carry the clearance work as a contractual deliverable and we still cannot promise you the answer.