<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Cloudzero on lo0 — Tech Blog</title><link>https://blog.lo0.es/en/tags/cloudzero/</link><description>Recent content in Cloudzero on lo0 — Tech Blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Sun, 14 Jun 2026 02:30:00 +0200</lastBuildDate><atom:link href="https://blog.lo0.es/en/tags/cloudzero/index.xml" rel="self" type="application/rss+xml"/><item><title>Kubecost vs OpenCost vs the alternatives: what the commercial layer adds and when it is worth paying for</title><link>https://blog.lo0.es/en/posts/kubecost-vs-opencost-vs-alternatives/</link><pubDate>Sun, 14 Jun 2026 02:30:00 +0200</pubDate><guid>https://blog.lo0.es/en/posts/kubecost-vs-opencost-vs-alternatives/</guid><description>&lt;blockquote>
&lt;p>Notation: amounts in &lt;strong>euros (N €)&lt;/strong>, decimals with a point; when a source quotes dollars it is
marked &amp;ldquo;USD&amp;rdquo;. The dollar sign is not used (on this site it is a formula delimiter).&lt;/p>
&lt;/blockquote>
&lt;h2 id="what-this-article-covers">What this article covers&lt;/h2>
&lt;p>Third article in the &lt;strong>FinOps&lt;/strong> track (A3). A2 covered how OpenCost allocates cost, the free
base. This article answers the question that comes next: &lt;strong>is it worth paying for Kubecost or a
commercial alternative, or is OpenCost enough?&lt;/strong> It is a &lt;strong>build-vs-buy&lt;/strong> decision, operating the
open source tool yourself against buying a product, and the answer depends on your scale, your
audience and your appetite for operating infrastructure. No universal recommendations: here are the
facts (what each one adds, what it costs, when it fits) and, for a European platform, the nuance of
&lt;strong>cost data sovereignty&lt;/strong> that the American comparisons do not mention.&lt;/p>
&lt;hr>
&lt;h2 id="the-axis-of-the-decision-build-vs-buy">The axis of the decision: build vs buy&lt;/h2>
&lt;p>OpenCost is free (Apache 2.0), but &amp;ldquo;free&amp;rdquo; means operating it yourself: deploying it,
configuring the node price, keeping Prometheus with enough retention, building the Grafana panels
and the alerts. Kubecost (and the alternatives) charge for taking that work away and adding
capabilities OpenCost does not ship. The decision, therefore, is not &amp;ldquo;free vs expensive&amp;rdquo;: it is
your own operating cost vs a licence.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Axis&lt;/th>
&lt;th>Leans towards OpenCost&lt;/th>
&lt;th>Leans towards commercial&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Platform team&lt;/td>
&lt;td>you have someone to operate it&lt;/td>
&lt;td>you do not want to operate anything&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Scale (cloud/GPU spend)&lt;/td>
&lt;td>small to medium&lt;/td>
&lt;td>large (the saving pays the licence)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Report audience&lt;/td>
&lt;td>engineers&lt;/td>
&lt;td>finance / management&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Number of clusters&lt;/td>
&lt;td>one&lt;/td>
&lt;td>many (multi-cluster)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Need for automatic optimisation&lt;/td>
&lt;td>you do it by hand&lt;/td>
&lt;td>you want it out of the box&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>OpenCost is the open source core; Kubecost is the enterprise product built on that core,
with proprietary features added; Kubecost was the original developer of the engine before releasing
it, and IBM acquired the company (&lt;a href="https://www.cloudzero.com/blog/kubecost-vs-opencost/">CloudZero · Kubecost vs OpenCost&lt;/a>).
In other words: both share the same allocation engine; what you pay for is the layer on top.&lt;/p>
&lt;hr>
&lt;h2 id="what-kubecost-adds-on-top-of-opencost">What Kubecost adds on top of OpenCost&lt;/h2>
&lt;p>On top of allocation (which is common to both), Kubecost adds a layer of &lt;strong>optimisation, governance
and enterprise features&lt;/strong> (&lt;a href="https://www.cloudzero.com/blog/kubecost-vs-opencost/">CloudZero&lt;/a>, &lt;a href="https://www.finout.io/blog/kubecost-vs-opencost">Finout&lt;/a>):&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Capability&lt;/th>
&lt;th>OpenCost&lt;/th>
&lt;th>Kubecost&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Cost allocation (CPU/GPU/mem/PV)&lt;/td>
&lt;td>✓&lt;/td>
&lt;td>✓ (same engine)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>GPU via DCGM&lt;/td>
&lt;td>✓&lt;/td>
&lt;td>✓ (3.0)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Invoice reconciliation&lt;/strong> (discounts, RI, spot)&lt;/td>
&lt;td>—&lt;/td>
&lt;td>✓&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Rightsizing&lt;/strong> (recommendations)&lt;/td>
&lt;td>—&lt;/td>
&lt;td>✓&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Anomaly detection&lt;/strong>&lt;/td>
&lt;td>—&lt;/td>
&lt;td>✓&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Budget alerts&lt;/strong>&lt;/td>
&lt;td>manual&lt;/td>
&lt;td>✓&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>RBAC&lt;/strong>&lt;/td>
&lt;td>—&lt;/td>
&lt;td>✓&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Multi-cluster aggregation&lt;/strong>&lt;/td>
&lt;td>—&lt;/td>
&lt;td>✓&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Hosted&lt;/strong> option (SaaS)&lt;/td>
&lt;td>—&lt;/td>
&lt;td>✓&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Long historical retention&lt;/td>
&lt;td>your Prometheus&lt;/td>
&lt;td>included&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Support&lt;/td>
&lt;td>community&lt;/td>
&lt;td>commercial (IBM)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;div class="diagram" style="max-width:780px;margin:1rem auto;">
&lt;svg viewBox="0 0 780 250" role="img" aria-label="OpenCost as the allocation core and Kubecost as commercial layers on top: reconciliation, rightsizing, anomalies, governance and support" xmlns="http://www.w3.org/2000/svg">
&lt;style>.bx{fill:none;stroke:currentColor;stroke-width:1.3}.dsh{fill:none;stroke:currentColor;stroke-width:1.3;stroke-dasharray:5 3}.tl{font:600 12px sans-serif;fill:currentColor}.ts{font:11px sans-serif;fill:currentColor}&lt;/style>
&lt;rect class="bx" x="180" y="180" width="420" height="48" rx="6"/>
&lt;text x="390" y="200" text-anchor="middle" class="tl">OpenCost — allocation engine (Apache 2.0)&lt;/text>
&lt;text x="390" y="217" text-anchor="middle" class="ts">node price · split by usage · Allocation API&lt;/text>
&lt;rect class="dsh" x="180" y="40" width="420" height="124" rx="6"/>
&lt;text x="390" y="60" text-anchor="middle" class="tl">Kubecost (IBM) — commercial layer&lt;/text>
&lt;rect class="bx" x="200" y="74" width="180" height="34" rx="5"/>&lt;text x="290" y="95" text-anchor="middle" class="ts">invoice reconciliation&lt;/text>
&lt;rect class="bx" x="400" y="74" width="180" height="34" rx="5"/>&lt;text x="490" y="95" text-anchor="middle" class="ts">rightsizing + anomalies&lt;/text>
&lt;rect class="bx" x="200" y="116" width="180" height="34" rx="5"/>&lt;text x="290" y="137" text-anchor="middle" class="ts">RBAC · budgets&lt;/text>
&lt;rect class="bx" x="400" y="116" width="180" height="34" rx="5"/>&lt;text x="490" y="137" text-anchor="middle" class="ts">multi-cluster · support&lt;/text>
&lt;text x="390" y="246" text-anchor="middle" class="ts">Same engine underneath; what you pay for is the optimisation, governance and enterprise layer on top.&lt;/text>
&lt;/svg>
&lt;/div>
&lt;h3 id="invoice-reconciliation">Invoice reconciliation&lt;/h3>
&lt;p>The capability that most justifies the price in cloud: OpenCost allocates on list rates;
Kubecost reconciles against the real invoice, which includes discounts, reserved instances and
spot prices (&lt;a href="https://www.finout.io/blog/kubecost-vs-opencost">Finout&lt;/a>). The difference can be
large: a cost allocated at list rates can be 30–50 % above what you actually pay after discounts.
On-prem this matters less (you declare the node&amp;rsquo;s real price), but in cloud or hybrid,
reconciliation is the difference between a &amp;ldquo;theoretical&amp;rdquo; cost and the cost that shows up on the
invoice.&lt;/p>
&lt;h3 id="rightsizing-and-anomaly-detection">Rightsizing and anomaly detection&lt;/h3>
&lt;p>Kubecost recommends resizing (rightsizing) underused resources, via the integration with IBM
Turbonomic, and detects spend anomalies automatically. OpenCost gives you the data to do it
by hand; Kubecost automates it. For a GPU fleet, rightsizing and anomalous idle detection are
exactly where the saving of the &lt;em>Optimize&lt;/em> phase lives.&lt;/p>
&lt;hr>
&lt;h2 id="the-price-of-kubecost-and-the-build-vs-buy-economics">The price of Kubecost (and the build-vs-buy economics)&lt;/h2>
&lt;p>Kubecost&amp;rsquo;s price starts at 449 USD/month for &lt;em>business&lt;/em> use, with enterprise options on request
(&lt;a href="https://www.cloudzero.com/blog/kubecost-vs-opencost/">source&lt;/a>). The right question is not &amp;ldquo;is 449
USD expensive?&amp;rdquo;, but &amp;ldquo;does operating OpenCost myself cost more or less than that?&amp;rdquo;. The
build-vs-buy calculation:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Cost&lt;/th>
&lt;th>OpenCost (build)&lt;/th>
&lt;th>Kubecost (buy)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Licence&lt;/td>
&lt;td>0&lt;/td>
&lt;td>from ~449 USD/month (business)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Engineering time&lt;/td>
&lt;td>deployment + maintenance + panels&lt;/td>
&lt;td>minimal&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Historical retention&lt;/td>
&lt;td>your Prometheus/Thanos cost&lt;/td>
&lt;td>included&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Support&lt;/td>
&lt;td>your team&lt;/td>
&lt;td>included&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>If one platform person spends a few hours a month operating OpenCost, that time can already exceed
449 USD; if your cluster is small and the operating cost is nearly nil (you set it up once and it
runs), OpenCost wins. The market rule of thumb: if &lt;strong>monthly Kubernetes spend is below ~10,000
USD&lt;/strong>, the cloud-native tools or open source (OpenCost) usually suffice; above that, the saving the
commercial tool captures pays for its licence ([search]).&lt;/p>
&lt;hr>
&lt;h3 id="worked-example-build-vs-buy">Worked example: build vs buy&lt;/h3>
&lt;p>An illustrative calculation for a platform with a medium-sized GPU cluster:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Item&lt;/th>
&lt;th>OpenCost (build)&lt;/th>
&lt;th>Kubecost (buy)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Annual licence&lt;/td>
&lt;td>0&lt;/td>
&lt;td>~449 USD/month × 12 = ~5,400 USD (~5,000 €)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Initial deployment&lt;/td>
&lt;td>~2–3 days of engineering&lt;/td>
&lt;td>~half a day&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Maintenance&lt;/td>
&lt;td>~4–8 h/month (panels, alerts, upgrades)&lt;/td>
&lt;td>minimal&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Operating cost (at ~60 €/h)&lt;/td>
&lt;td>~240–480 €/month&lt;/td>
&lt;td>~marginal&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Historical retention&lt;/td>
&lt;td>cost of your own Thanos/Mimir&lt;/td>
&lt;td>included&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>If OpenCost&amp;rsquo;s operating cost is around 240–480 €/month, it is in the same order as the Kubecost
licence (~415 €/month). The decision, then, is not set by the price but by the added value: if
invoice reconciliation, automatic rightsizing and the finance-facing UI save you or give you more
than that difference, Kubecost wins; if your team already operates Prometheus/Grafana and your
audience is engineers, OpenCost wins. For a large multi-cluster estate, the saving Kubecost
captures usually far exceeds the licence; for a small and stable one, operating OpenCost is almost
free. The number that decides is not 449 USD, it is &lt;strong>your operating cost against that added
value&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h3 id="migration-and-reversibility-an-argument-for-starting-with-opencost">Migration and reversibility: an argument for starting with OpenCost&lt;/h3>
&lt;p>A rarely mentioned advantage of Kubecost being built on OpenCost: migrating between the two is
low risk. Starting with OpenCost and, if scale justifies it, moving up to Kubecost later does
not force you to redo the allocation, it is the same engine, the same concepts, the same
Prometheus/DCGM instrumentation. What changes is the layer on top. This reduces &lt;em>lock-in&lt;/em>: it is
not an irreversible bet.&lt;/p>
&lt;p>For a platform just starting out, the low-risk strategy is clear: &lt;strong>stand up self-hosted OpenCost
first&lt;/strong>, get the allocation right with the node price in euros, live with it for a few months, and
only then decide whether invoice reconciliation, automatic rightsizing and the finance-facing UI
justify paying for Kubecost. Starting with the commercial product &amp;ldquo;just in case&amp;rdquo; is paying before
knowing whether you need it; starting with OpenCost and moving up if necessary is the option that
keeps reversibility and discovers the real value before the invoice. And since both are
self-hosted, neither route gives up data sovereignty.&lt;/p>
&lt;hr>
&lt;h2 id="the-alternatives-cloudzero-vantage-finout">The alternatives: CloudZero, Vantage, Finout&lt;/h2>
&lt;p>Kubecost is not the only commercial option; there is a category of cost platforms that operate
at a different level (closer to the business than to Kubernetes):&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Tool&lt;/th>
&lt;th>Focus&lt;/th>
&lt;th>Differentiator&lt;/th>
&lt;th>Layer&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>CloudZero&lt;/strong>&lt;/td>
&lt;td>unit economics&lt;/td>
&lt;td>cost per feature/product/customer&lt;/td>
&lt;td>business&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Vantage&lt;/strong>&lt;/td>
&lt;td>multi-cloud (20+ integrations)&lt;/td>
&lt;td>breadth (incl. OpenAI invoice)&lt;/td>
&lt;td>business&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Finout&lt;/strong>&lt;/td>
&lt;td>multi-cloud&lt;/td>
&lt;td>virtual tagging (without touching resources)&lt;/td>
&lt;td>business&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Kubecost&lt;/strong>&lt;/td>
&lt;td>Kubernetes&lt;/td>
&lt;td>intra-cluster depth + optimisation&lt;/td>
&lt;td>resource+optim&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>OpenCost&lt;/strong>&lt;/td>
&lt;td>Kubernetes&lt;/td>
&lt;td>open source allocation&lt;/td>
&lt;td>resource&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>The key distinction: Kubecost/OpenCost are Kubernetes-centred tools (intra-cluster depth);
CloudZero/Vantage/Finout are business cost platforms (multi-cloud breadth, cost per
product). They do not always compete: many organisations use OpenCost/Kubecost for the Kubernetes
detail and a business platform for the aggregate view.&lt;/p>
&lt;p>A short profile of each:&lt;/p>
&lt;ul>
&lt;li>CloudZero — a &lt;em>cost intelligence&lt;/em> platform with a dedicated Kubernetes visibility solution
for engineering teams. Its hallmark is unit economics: mapping cost to feature, product and
customer, answering &amp;ldquo;how much does it cost me to serve this customer?&amp;rdquo; more than &amp;ldquo;how much does
this pod cost?&amp;rdquo;. It fits when cost has to be taken to the product P&amp;amp;L.&lt;/li>
&lt;li>Vantage — breadth of integrations (more than 20 sources: AWS, Azure, GCP, Kubernetes,
Snowflake, Datadog and the invoice from LLM providers such as OpenAI). It is the option when
AI cost is spread across many providers and you want a single view, including the invoice from
the model APIs.&lt;/li>
&lt;li>Finout — multi-cloud with virtual tagging: it applies cost labels without modifying the
resources, which allows spend that was badly tagged at source to be allocated, and quick
deployment. It is among the top Kubernetes cost optimisation tools
(&lt;a href="https://www.cloudbolt.io/blog/top-kubecost-alternatives/">CloudBolt&lt;/a>, &lt;a href="https://www.finout.io/blog/kubecost-pros/cons-pricing-tutorial-alternatives-2026-guide">Finout&lt;/a>).&lt;/li>
&lt;/ul>
&lt;p>The usual pattern in a mature organisation: OpenCost/Kubecost for the Kubernetes and GPU detail,
and a business platform on top to cross that cost with the rest of the cloud spend and take it
to product. It is not &amp;ldquo;one or the other&amp;rdquo;: it is often &amp;ldquo;one and the other&amp;rdquo;, in layers.&lt;/p>
&lt;hr>
&lt;h2 id="decision-criteria">Decision criteria&lt;/h2>
&lt;p>Five questions that settle the choice without opinion:&lt;/p>
&lt;div class="diagram" style="max-width:780px;margin:1rem auto;">
&lt;svg viewBox="0 0 780 250" role="img" aria-label="Decision tree: by scale, audience, multi-cluster and sovereignty, choose OpenCost, Kubecost or a business platform" xmlns="http://www.w3.org/2000/svg">
&lt;style>.bx{fill:none;stroke:currentColor;stroke-width:1.3}.tl{font:600 12px sans-serif;fill:currentColor}.ts{font:11px sans-serif;fill:currentColor}.ar{fill:none;stroke:currentColor;stroke-width:1.3;marker-end:url(#km)}&lt;/style>
&lt;defs>&lt;marker id="km" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto">&lt;path d="M0,0 L10,5 L0,10 z" fill="currentColor"/>&lt;/marker>&lt;/defs>
&lt;rect class="bx" x="20" y="100" width="150" height="50" rx="6"/>
&lt;text x="32" y="122" class="tl">Spend &amp;gt; 10k/month?&lt;/text>
&lt;text x="32" y="139" class="ts">and multi-cluster?&lt;/text>
&lt;path class="ar" d="M170,115 L230,70"/>
&lt;text x="180" y="80" class="ts">no&lt;/text>
&lt;path class="ar" d="M170,135 L230,180"/>
&lt;text x="180" y="170" class="ts">yes&lt;/text>
&lt;rect class="bx" x="230" y="48" width="180" height="44" rx="6"/>
&lt;text x="242" y="68" class="tl">OpenCost (self-host)&lt;/text>
&lt;text x="242" y="84" class="ts">allocation, free, sovereign&lt;/text>
&lt;rect class="bx" x="230" y="158" width="180" height="44" rx="6"/>
&lt;text x="242" y="178" class="tl">Kubecost&lt;/text>
&lt;text x="242" y="194" class="ts">optimisation + governance&lt;/text>
&lt;path class="ar" d="M410,180 L470,150"/>
&lt;text x="420" y="150" class="ts">cost per product?&lt;/text>
&lt;rect class="bx" x="470" y="120" width="200" height="44" rx="6"/>
&lt;text x="482" y="140" class="tl">+ business platform&lt;/text>
&lt;text x="482" y="156" class="ts">CloudZero / Vantage / Finout&lt;/text>
&lt;text x="20" y="235" class="ts">And a cross-cutting question for Europe: where does the cost data live? (see sovereignty below)&lt;/text>
&lt;/svg>
&lt;/div>
&lt;ol>
&lt;li>&lt;strong>How much do you spend?&lt;/strong> Below ~10k USD/month, OpenCost is enough; above that, the saving pays
for the commercial tool.&lt;/li>
&lt;li>&lt;strong>Who reads the report?&lt;/strong> Engineers → OpenCost; finance/management → Kubecost&amp;rsquo;s polished UI or a
business platform.&lt;/li>
&lt;li>&lt;strong>One cluster or many?&lt;/strong> Multi-cluster leans towards Kubecost.&lt;/li>
&lt;li>&lt;strong>Do you want to operate infrastructure?&lt;/strong> If not, buy; if you have a platform team, build with
OpenCost.&lt;/li>
&lt;li>&lt;strong>Where can the cost data live?&lt;/strong> The European question, below.&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="the-european-angle-cost-data-sovereignty">The European angle: cost data sovereignty&lt;/h2>
&lt;p>American comparisons leave out a criterion that for a sovereign platform is first-order: &lt;strong>where
the cost and usage data ends up&lt;/strong>. CloudZero, Vantage, Finout and Kubecost&amp;rsquo;s &lt;em>hosted&lt;/em> option are
SaaS, mostly American: you send them your telemetry of cost, usage, namespace names, teams and
products. That data, which describes your operation in detail, leaves for a jurisdiction subject to
the US CLOUD Act, with the same GDPR consideration as any other sensitive data sent to a
hyperscaler.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Option&lt;/th>
&lt;th>Where the cost data lives&lt;/th>
&lt;th>Sovereignty&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Self-hosted OpenCost&lt;/strong>&lt;/td>
&lt;td>in your cluster&lt;/td>
&lt;td>total&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Self-hosted Kubecost&lt;/strong>&lt;/td>
&lt;td>in your cluster&lt;/td>
&lt;td>total&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Hosted Kubecost (SaaS)&lt;/td>
&lt;td>the provider&amp;rsquo;s SaaS&lt;/td>
&lt;td>subject to the SaaS jurisdiction&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>CloudZero / Vantage / Finout&lt;/td>
&lt;td>SaaS (US)&lt;/td>
&lt;td>subject to the US CLOUD Act&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>It is worth being fair: cost data is not the same as user data. Spend telemetry per namespace is
less sensitive than the content of the inferences. But it does reveal the operation: which
teams exist, which products consume GPU, the size of the platform, and, crossed with namespace
names, information that taken together can be sensitive. Most SaaS FinOps tooling is American;
there are emerging European options, but few with the maturity of the big players. When in doubt,
and for data subject to GDPR, the minimisation principle advises &lt;strong>not taking out of the EU what
does not need to leave&lt;/strong>, and cost allocation, with self-hosted OpenCost/Kubecost, does not need to
leave.&lt;/p>
&lt;p>The consequence for the proposal: &lt;strong>self-hosted OpenCost or Kubecost keep the cost data under your
control&lt;/strong>, just as the cluster keeps the inference data. If data sovereignty is a requirement (it
is for GDPR data, see &lt;a href="https://blog.lo0.es/en/posts/technical-controls-ens-iso-42001-eu-ai-act-cross-mapping/">ENS × 42001 × EU AI
Act controls&lt;/a>), the American SaaS platforms
run into the same conflict as a hyperscaler, however good their UI is. For Fibercli and any
sovereign platform, this tilts the balance towards &lt;strong>self-hosted&lt;/strong>, with OpenCost as the base and
self-hosted Kubecost if the enterprise layer is wanted without giving up the data.&lt;/p>
&lt;hr>
&lt;h2 id="ai-cost-what-none-of-them-ships-out-of-the-box">AI cost: what none of them ships out of the box&lt;/h2>
&lt;p>One point the generalist comparisons do not highlight and that is central for an LLM platform:
none of these tools gives cost per token out of the box. OpenCost and Kubecost reach the &lt;strong>pod
cost&lt;/strong> (per resource/usage); CloudZero, Vantage and Finout reach the &lt;strong>resource or invoice cost&lt;/strong>
(including the OpenAI one, in Vantage&amp;rsquo;s case). But the jump from &amp;ldquo;this vLLM pod cost X €/hour&amp;rdquo; to
&amp;ldquo;this request from this team cost Y&amp;rdquo; requires intercepting the inference traffic with a gateway
(LiteLLM) that counts tokens per request and per team, as developed in the FinOps introduction.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Layer&lt;/th>
&lt;th>What it gives&lt;/th>
&lt;th>Who covers it&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Resource/pod cost&lt;/td>
&lt;td>€/hour per pod, namespace, team&lt;/td>
&lt;td>OpenCost, Kubecost&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cloud/LLM invoice cost&lt;/td>
&lt;td>€/month per provider&lt;/td>
&lt;td>CloudZero, Vantage, Finout&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Cost per token&lt;/strong>&lt;/td>
&lt;td>€/1M tokens per team/model&lt;/td>
&lt;td>&lt;strong>gateway (LiteLLM) + any of the above&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>The implication for tool selection: cost per token, the metric that compares on-prem against cloud,
is not solved by any tool on its own, but by the combination of allocation
(OpenCost/Kubecost) with token measurement (gateway). When evaluating a commercial tool, the AI
question is not &amp;ldquo;does it give the pod cost?&amp;rdquo; (they all do, one way or another), but &amp;ldquo;does it
integrate well with my gateway to reach the token?&amp;rdquo;. Vantage, by ingesting the OpenAI invoice,
gets close from the external API consumption side; for your own inference, the gateway remains
essential.&lt;/p>
&lt;hr>
&lt;h2 id="state-of-the-art-2026">State of the art 2026&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Consolidation under IBM&lt;/strong>: Kubecost/OpenCost integrated into IBM&amp;rsquo;s FinOps Suite alongside
Cloudability and Turbonomic; OpenCost remains the CNCF allocation standard.&lt;/li>
&lt;li>&lt;strong>First-class GPU&lt;/strong>: Kubecost 3.0 and OpenCost allocate GPU via DCGM; GPU FinOps stops being a
special case.&lt;/li>
&lt;li>&lt;strong>Towards the token and FOCUS&lt;/strong>: the strong platforms track cost at token level, and the
FOCUS standard (v1.3, Dec 2025) is extending to AI workloads, which will push
interoperability between these tools.&lt;/li>
&lt;li>&lt;strong>A category of AI cost platforms&lt;/strong>: specific &lt;em>AI cost observability&lt;/em> tooling is emerging that
combines resource, invoice and token; it is worth demanding FOCUS compatibility so as not to
couple to one provider.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="selection-checklist">Selection checklist&lt;/h2>
&lt;p>To decide without opinion, in order:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Step&lt;/th>
&lt;th>Question&lt;/th>
&lt;th>If&amp;hellip;&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>1&lt;/td>
&lt;td>Do I have a team to operate OpenCost?&lt;/td>
&lt;td>no → commercial / hosted&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2&lt;/td>
&lt;td>Spend &amp;gt; ~10k USD/month and multi-cluster?&lt;/td>
&lt;td>yes → Kubecost&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3&lt;/td>
&lt;td>Is the report for finance/management?&lt;/td>
&lt;td>yes → Kubecost UI or business platform&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4&lt;/td>
&lt;td>Do I need cost per product/customer?&lt;/td>
&lt;td>yes → CloudZero/Vantage/Finout on top&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>5&lt;/td>
&lt;td>Can the cost data go to a US SaaS?&lt;/td>
&lt;td>no → self-hosted (OpenCost / Kubecost)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>6&lt;/td>
&lt;td>Do I need cost per token?&lt;/td>
&lt;td>yes → any of them &lt;strong>+ gateway&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Step 5 is the filter for a sovereign platform: if the cost data cannot leave the EU jurisdiction,
the list shrinks to the &lt;strong>self-hosted&lt;/strong> options, with OpenCost as the base.&lt;/p>
&lt;hr>
&lt;h2 id="pricing-models-of-commercial-tooling">Pricing models of commercial tooling&lt;/h2>
&lt;p>For those that charge by saving or by percentage of spend:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Model&lt;/th>
&lt;th>How it charges&lt;/th>
&lt;th>Range&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Fixed licence (Kubecost)&lt;/td>
&lt;td>monthly rate&lt;/td>
&lt;td>from ~449 USD/month (business)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Savings-based&lt;/td>
&lt;td>% of the savings delivered&lt;/td>
&lt;td>15–35 %&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Fixed-fee&lt;/td>
&lt;td>% of annual cloud spend&lt;/td>
&lt;td>1–3 %&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>The implication: at large spend, a 1–3 % &lt;em>fixed-fee&lt;/em> can exceed Kubecost&amp;rsquo;s fixed licence; with a
lot of waste, &lt;em>savings-based&lt;/em> aligns incentives but can come out expensive if the saving is large.
OpenCost, free, changes the equation if you have someone to operate it.&lt;/p>
&lt;hr>
&lt;h2 id="coexistence-the-reality-is-layered">Coexistence: the reality is layered&lt;/h2>
&lt;p>In mature organisations, these tools are not chosen against each other, they are stacked. The
usual pattern:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Layer&lt;/th>
&lt;th>Tool&lt;/th>
&lt;th>Answers&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Intra-Kubernetes allocation&lt;/td>
&lt;td>OpenCost / Kubecost&lt;/td>
&lt;td>how much does each pod/team/GPU cost?&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Per-token measurement&lt;/td>
&lt;td>gateway (LiteLLM)&lt;/td>
&lt;td>how much does each request/team cost?&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cost per product / multi-cloud&lt;/td>
&lt;td>CloudZero / Vantage / Finout&lt;/td>
&lt;td>how much does it cost to serve this product/customer?&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Each layer solves a different question and feeds off the one below: the pod cost (OpenCost) plus the
tokens (gateway) give the cost per token; that cost per token, aggregated by a business platform,
gives the cost per product. Trying to make a single tool cover all three layers usually ends in
compromises: the Kubernetes ones do not reach the business, the business ones do not reach the pod,
and none reaches the token without the gateway. The healthy architecture is &lt;strong>layers that
integrate&lt;/strong>, not one tool that does everything by halves. And the glue between layers, in 2026, is
FOCUS: demanding FOCUS compatibility from each piece is what allows the data to flow between
them without being rewritten.&lt;/p>
&lt;hr>
&lt;h2 id="summary-by-organisation-profile">Summary by organisation profile&lt;/h2>
&lt;p>To get your bearings quickly, which stack fits each profile (indicative, not prescriptive):&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Profile&lt;/th>
&lt;th>Scale&lt;/th>
&lt;th>Stack that usually fits&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Small team with a platform&lt;/td>
&lt;td>1 cluster, low spend&lt;/td>
&lt;td>&lt;strong>OpenCost&lt;/strong> self-hosted + Grafana&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Scale-up with several teams&lt;/td>
&lt;td>multi-team, medium spend&lt;/td>
&lt;td>OpenCost + gateway; Kubecost if time is short&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Multi-cluster enterprise&lt;/td>
&lt;td>many clusters, high spend&lt;/td>
&lt;td>&lt;strong>Kubecost&lt;/strong> + business platform&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Sovereign platform (Fibercli)&lt;/strong>&lt;/td>
&lt;td>GDPR, data in the EU&lt;/td>
&lt;td>&lt;strong>self-hosted OpenCost/Kubecost&lt;/strong> + gateway; no US cost SaaS&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>The sovereign profile is the one that changes the answer relative to the standard guides: however
much an American SaaS platform wins on features or on UI, the requirement to keep cost data under
EU jurisdiction rules it out for GDPR data. For Fibercli, the bottom row is the one that rules, and
that is why this series&amp;rsquo; FinOps track is built on &lt;strong>self-hosted&lt;/strong> tools.&lt;/p>
&lt;hr>
&lt;h2 id="limits-and-traps-data-driven">Limits and traps (data-driven)&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>&amp;ldquo;Free&amp;rdquo; is not free.&lt;/strong> OpenCost has an operating cost; count it in the build-vs-buy or you are
fooling yourself comparing 0 with 449 USD.&lt;/li>
&lt;li>&lt;strong>Reconciliation only matters in cloud.&lt;/strong> In pure on-prem, you declare the node&amp;rsquo;s real price and
Kubecost&amp;rsquo;s reconciliation adds less.&lt;/li>
&lt;li>&lt;strong>Cost SaaS = cost data outside.&lt;/strong> For a sovereign platform, sending cost telemetry to an
American SaaS reintroduces the jurisdiction problem that on-prem avoided.&lt;/li>
&lt;li>&lt;strong>Same engine, different UI.&lt;/strong> A good part of what you pay for in Kubecost is the presentation
and governance layer; if your audience is engineers, it may not pay off.&lt;/li>
&lt;li>&lt;strong>Do not confuse layers.&lt;/strong> OpenCost/Kubecost (Kubernetes) and CloudZero/Vantage/Finout
(business) solve different problems; sometimes they complement each other, they do not compete.&lt;/li>
&lt;/ol>
&lt;p>With the allocation tooling decision settled, the FinOps track moves on to cost per token (A4) and
the full TCO model (A8). The foundation is the one from A2 and A3: correct allocation, with the
node price in euros, in a tool that respects data sovereignty.&lt;/p>
&lt;h2 id="closing">Closing&lt;/h2>
&lt;p>The OpenCost vs Kubecost vs commercial platform choice is sold as a feature comparison, and is in
reality a build-vs-buy decision with a sovereignty constraint on top. The allocation engine is
the same (OpenCost) in the first two; what you pay for in Kubecost is the optimisation, governance
and presentation layer, which pays off when scale is large, the audience is financial or you do not
want to operate infrastructure. The business platforms (CloudZero, Vantage, Finout) solve a
different problem, cost per product, multi-cloud, and often coexist in layers with the Kubernetes
ones rather than competing. But for a European sovereign platform there is a criterion no American
comparison puts first and that for Fibercli comes first: where the cost data lives. Sending
your spend, team and product telemetry to an American SaaS reintroduces, through the back door, the
jurisdiction problem that on-prem avoided. The conclusion the data supports: &lt;strong>self-hosted OpenCost
as the base, self-hosted Kubecost if the enterprise layer is wanted, and the gateway to reach the
token&lt;/strong>, a stack that keeps cost measured, in euros, and under EU jurisdiction. Expensive or cheap
is secondary; sovereign or not is not.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>CloudZero · Kubecost vs OpenCost (2026) — &lt;a href="https://www.cloudzero.com/blog/kubecost-vs-opencost/">https://www.cloudzero.com/blog/kubecost-vs-opencost/&lt;/a>&lt;/li>
&lt;li>Finout · Kubecost vs OpenCost (6 diferencias) — &lt;a href="https://www.finout.io/blog/kubecost-vs-opencost">https://www.finout.io/blog/kubecost-vs-opencost&lt;/a>&lt;/li>
&lt;li>Finout · Kubecost: pros/cons, pricing, alternativas (2026) — &lt;a href="https://www.finout.io/blog/kubecost-pros/cons-pricing-tutorial-alternatives-2026-guide">https://www.finout.io/blog/kubecost-pros/cons-pricing-tutorial-alternatives-2026-guide&lt;/a>&lt;/li>
&lt;li>CloudBolt · Top Kubecost Alternatives (2026) — &lt;a href="https://www.cloudbolt.io/blog/top-kubecost-alternatives/">https://www.cloudbolt.io/blog/top-kubecost-alternatives/&lt;/a>&lt;/li>
&lt;li>Amnic · OpenCost vs Kubecost — &lt;a href="https://amnic.com/blogs/opencost-vs-kubecost">https://amnic.com/blogs/opencost-vs-kubecost&lt;/a>&lt;/li>
&lt;li>Clanker Cloud · Best tools for managing GPU usage in Kubernetes (2026) — &lt;a href="https://clankercloud.ai/blog/best-tools-managing-gpu-usage-kubernetes-2025-2026-cost-roi">https://clankercloud.ai/blog/best-tools-managing-gpu-usage-kubernetes-2025-2026-cost-roi&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>GPU/LLM FinOps: frameworks, metrics and state of the art (tool by tool)</title><link>https://blog.lo0.es/en/posts/gpu-llm-finops-frameworks-metrics-state-of-the-art/</link><pubDate>Sat, 13 Jun 2026 03:00:00 +0200</pubDate><guid>https://blog.lo0.es/en/posts/gpu-llm-finops-frameworks-metrics-state-of-the-art/</guid><description>&lt;blockquote>
&lt;p>Notation: amounts in &lt;strong>euros (N €)&lt;/strong>, decimals with a point. The references are &lt;strong>European&lt;/strong>
(providers and prices from FR/DE/ES), as this is a sovereign proposal; when a source quotes
dollars it is marked &amp;ldquo;USD&amp;rdquo;. The dollar sign is not used (on this site it is a formula
delimiter).&lt;/p>
&lt;/blockquote>
&lt;h2 id="what-this-introduction-covers">What this introduction covers&lt;/h2>
&lt;p>Second article in the data series, and the first pillar &lt;em>deep dive&lt;/em>. Here the &lt;strong>FinOps&lt;/strong> tooling
for GPU/LLM infrastructure is inventoried with the detail an architecture decision needs: what
metrics each tool handles, how it allocates cost internally, what GPU support it has, under
what licence and pricing model it operates, and where its limits are. It is the natural
continuation of the &lt;a href="https://blog.lo0.es/en/posts/cost-performance-energy-three-axes-llm-inference/">opening article&lt;/a>,
which established that cost per token is the unit that allows on-prem and cloud to be compared.
No recommendations: the final choice is settled in the synthesis article with the Pareto table;
here there are only facts and methodology.&lt;/p>
&lt;hr>
&lt;h2 id="why-gpu-finops-is-a-different-problem">Why GPU FinOps is a different problem&lt;/h2>
&lt;p>Classic cloud FinOps was born to split CPU, memory and storage, cheap and elastic resources. The
GPU breaks three assumptions at once, and that is why it needs its own treatment:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>It is expensive and discrete.&lt;/strong> An H100 costs on the order of 2.7 to 7 €/hour in European
cloud (Scaleway from 2.73 €/h; OVHcloud somewhat more), or its depreciated capex on-prem; it is
not a resource that gets split in trivial fractions. A 10 % allocation error across a GPU fleet
is real money.&lt;/li>
&lt;li>&lt;strong>It is easily underused.&lt;/strong> Unlike the CPU, a GPU draws its power even when idle, and
average occupancy in ungoverned clusters is notoriously low. The cost of &lt;em>idle&lt;/em>, the GPU
powered on without working, is waste number one, and it is invisible if it is not measured.&lt;/li>
&lt;li>&lt;strong>It is hard to attribute.&lt;/strong> Who owns the cost of a GPU shared by &lt;em>time-slicing&lt;/em> or MIG across
several pods from several teams? Without an allocation layer, GPU spend is a black hole nobody
claims and nobody optimises.&lt;/li>
&lt;/ol>
&lt;p>The goal of GPU FinOps is to turn that black hole into an attributed, measured and actionable
invoice: knowing what each team, each model and, in the end, each token costs.&lt;/p>
&lt;hr>
&lt;h2 id="the-finops-metrics">The FinOps metrics&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Metric&lt;/th>
&lt;th>Definition&lt;/th>
&lt;th>Unit&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>CPM&lt;/strong> (cost/1M tokens)&lt;/td>
&lt;td>cluster cost ÷ tokens produced&lt;/td>
&lt;td>€ / 1M tok&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cost per request&lt;/td>
&lt;td>cost charged to a complete request&lt;/td>
&lt;td>€ / req&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>€/GPU-hour&lt;/td>
&lt;td>hourly cost of a GPU (depreciated or rented)&lt;/td>
&lt;td>€/h&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Utilisation&lt;/strong>&lt;/td>
&lt;td>fraction of the GPU actually used&lt;/td>
&lt;td>% (MFU, GPU-hour util)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cost of idle&lt;/td>
&lt;td>GPU powered on without useful work&lt;/td>
&lt;td>€/h wasted&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Showback&lt;/td>
&lt;td>reporting the cost to each team (without charging)&lt;/td>
&lt;td>€ / team&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Chargeback&lt;/td>
&lt;td>charging the cost to each team&lt;/td>
&lt;td>€ / team&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cost efficiency&lt;/td>
&lt;td>real cost ÷ cost if it were at 100 %&lt;/td>
&lt;td>%&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>The metric that closes the loop with the business is cost per token (or per request): it is the
only one that can be compared across providers, across models and against the price of an external
API. All GPU FinOps tooling exists to reach, one way or another, that number.&lt;/p>
&lt;hr>
&lt;h2 id="the-three-finops-phases-finops-foundation">The three FinOps phases (FinOps Foundation)&lt;/h2>
&lt;p>The FinOps Foundation framework organises the work in a three-phase cycle. Applied to GPU:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Phase&lt;/th>
&lt;th>Goal&lt;/th>
&lt;th>Typical GPU action&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Inform&lt;/strong>&lt;/td>
&lt;td>visibility and allocation&lt;/td>
&lt;td>measure cost per namespace/team/model/token&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Optimize&lt;/strong>&lt;/td>
&lt;td>reduce spend&lt;/td>
&lt;td>rightsizing, spot, quotas, switch off the idle, quantise&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Operate&lt;/strong>&lt;/td>
&lt;td>continuous governance&lt;/td>
&lt;td>budgets, idle alerts, automated chargeback&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>The common mistake is jumping to &lt;em>Optimize&lt;/em> without having done &lt;em>Inform&lt;/em>: GPUs get bought or
replicas get adjusted without knowing where the money really goes. Allocation (the Inform phase) is
the prerequisite for everything else, and it is where the tooling comes in.&lt;/p>
&lt;hr>
&lt;h2 id="how-cost-is-allocated-in-kubernetes-opencosts-mechanics">How cost is allocated in Kubernetes: OpenCost&amp;rsquo;s mechanics&lt;/h2>
&lt;p>OpenCost is the de facto standard, so it is worth understanding how it allocates cost,
because that defines what any tool on top can and cannot do. It is a vendor-neutral, Apache 2.0
project, originally built by Kubecost and donated to the CNCF (incubating project)
(&lt;a href="https://github.com/opencost/opencost">OpenCost · GitHub&lt;/a>).&lt;/p>
&lt;p>The model works at node level: it starts from the node&amp;rsquo;s resource capacity (CPU, RAM, GPU,
storage) and its total price, and splits that price across the resources. When the provider does
not give explicit CPU/GPU/RAM prices, OpenCost uses the ratio of a set of base prices (the
provider&amp;rsquo;s marginal rates, customisable) and &lt;strong>normalises them so that the sum of the components
equals the node&amp;rsquo;s total price&lt;/strong>
(&lt;a href="https://opencost.io/docs/configuration/on-prem/">OpenCost · on-prem&lt;/a>). This is key on-premise:
you define the node cost (depreciated capex + opex) and OpenCost splits it.&lt;/p>
&lt;p>It obtains utilisation by scraping Prometheus: &lt;code>kube-state-metrics&lt;/code>, &lt;code>node-exporter&lt;/code>
and &lt;code>cAdvisor&lt;/code> give it the real consumption per pod, and with that it allocates cost per
cluster, node, namespace, controller, service or pod (&lt;a href="https://opencost.io/docs/integrations/opencost-exporter/">OpenCost · exporter&lt;/a>).
For the GPU, the signal comes from DCGM (via the NVIDIA GPU Operator) exported to
Prometheus, the same base as &lt;a href="https://blog.lo0.es/en/posts/gpu-observability-llm-inference-twelve-dcgm-vllm-metrics/">GPU observability&lt;/a>.
A common idle detection pattern: an alert when &lt;code>DCGM_FI_DEV_GPU_UTIL &amp;lt; 10&lt;/code>
for more than 15 minutes, routed to the team that owns the namespace.&lt;/p>
&lt;div class="diagram" style="max-width:780px;margin:1rem auto;">
&lt;svg viewBox="0 0 780 250" role="img" aria-label="OpenCost cost allocation mechanics: utilisation metrics from Prometheus and DCGM, node-level pricing model, and allocation per namespace, team and pod" xmlns="http://www.w3.org/2000/svg">
&lt;style>.bx{fill:none;stroke:currentColor;stroke-width:1.3}.dsh{fill:none;stroke:currentColor;stroke-width:1.3;stroke-dasharray:5 3}.tl{font:600 12px sans-serif;fill:currentColor}.ts{font:11px sans-serif;fill:currentColor}.ar{fill:none;stroke:currentColor;stroke-width:1.3;marker-end:url(#fm)}&lt;/style>
&lt;defs>&lt;marker id="fm" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto">&lt;path d="M0,0 L10,5 L0,10 z" fill="currentColor"/>&lt;/marker>&lt;/defs>
&lt;text x="20" y="26" class="tl">Utilisation metrics (Prometheus)&lt;/text>
&lt;rect class="bx" x="20" y="36" width="200" height="84" rx="6"/>
&lt;text x="32" y="58" class="ts">kube-state-metrics&lt;/text>
&lt;text x="32" y="76" class="ts">node-exporter · cAdvisor&lt;/text>
&lt;text x="32" y="94" class="ts">DCGM (GPU, via GPU Operator)&lt;/text>
&lt;text x="32" y="112" class="ts">usage per pod&lt;/text>
&lt;path class="ar" d="M220,78 L265,78"/>
&lt;rect class="bx" x="265" y="36" width="210" height="84" rx="6"/>
&lt;text x="277" y="58" class="tl">Pricing model (per node)&lt;/text>
&lt;text x="277" y="78" class="ts">total node price split&lt;/text>
&lt;text x="277" y="96" class="ts">across CPU/GPU/RAM/disk&lt;/text>
&lt;text x="277" y="114" class="ts">normalised so sum = total&lt;/text>
&lt;path class="ar" d="M475,78 L520,78"/>
&lt;rect class="bx" x="520" y="36" width="240" height="84" rx="6"/>
&lt;text x="532" y="58" class="tl">Allocation&lt;/text>
&lt;text x="532" y="78" class="ts">per cluster / node / namespace&lt;/text>
&lt;text x="532" y="96" class="ts">controller / service / pod&lt;/text>
&lt;text x="532" y="114" class="ts">→ cost per team&lt;/text>
&lt;rect class="dsh" x="20" y="150" width="740" height="74" rx="6"/>
&lt;text x="34" y="172" class="tl">On-premise you define the node cost (depreciated capex + opex); OpenCost only splits it.&lt;/text>
&lt;text x="34" y="192" class="ts">GPU idle: alert if DCGM_FI_DEV_GPU_UTIL &amp;lt; 10 for &amp;gt;15 min → route to the namespace owner.&lt;/text>
&lt;text x="34" y="210" class="ts">What OpenCost allocates per resource, the layers above enrich into cost per token.&lt;/text>
&lt;/svg>
&lt;/div>
&lt;hr>
&lt;h2 id="frameworks-tool-by-tool">Frameworks, tool by tool&lt;/h2>
&lt;h3 id="opencost--the-allocation-standard-cncf-apache-20">OpenCost — the allocation standard (CNCF, Apache 2.0)&lt;/h3>
&lt;p>What it measures: allocated cost of in-cluster resources (CPU, GPU, memory, volumes) by any
Kubernetes dimension. Method: node-level pricing model + Prometheus scraping (above). GPU: yes,
via DCGM. Licence: Apache 2.0, free. It can run as a metrics exporter to Prometheus with no
further dependencies. Limit: it is the allocation layer, it brings no optimisation, governance
or product unit economics; for that you put something on top of it.&lt;/p>
&lt;h3 id="kubecost--the-commercial-product-on-opencost-ibm">Kubecost — the commercial product on OpenCost (IBM)&lt;/h3>
&lt;p>What it measures: what OpenCost does (it is built on it) plus enterprise capabilities. &lt;strong>Kubecost
3.0 (2025)&lt;/strong> added GPU monitoring via &lt;strong>NVIDIA DCGM&lt;/strong> and integration with &lt;strong>IBM
Turbonomic&lt;/strong> for automatic &lt;em>rightsizing&lt;/em>, and extended its scope from Kubernetes to cloud service
cost. IBM acquired Kubecost and integrated Kubecost/OpenCost into its FinOps Suite alongside
Cloudability and Turbonomic (&lt;a href="https://www.cloudzero.com/blog/kubecost-vs-opencost/">CloudZero · Kubecost vs OpenCost&lt;/a>).
Differentiator: rightsizing, governance, support. Limit: it is a commercial product; the bulk of
the value over free OpenCost is the optimisation and enterprise layer.&lt;/p>
&lt;h3 id="cloudzero--unit-economics-and-cost-per-product">CloudZero — unit economics and cost per product&lt;/h3>
&lt;p>What it measures: it maps cloud cost to features, products, teams and customers, not just to
resources. Method: it ingests multi-cloud billing and models it in business dimensions.
Differentiator: the deepest allocation and the unit economics approach (cost per business
unit). Limit: less focused on intra-Kubernetes mechanics than OpenCost/Kubecost; it is the
&amp;ldquo;cost to business&amp;rdquo; layer.&lt;/p>
&lt;h3 id="vantage--multi-cloud-with-many-integrations">Vantage — multi-cloud with many integrations&lt;/h3>
&lt;p>What it measures: multi-cloud cost with more than 20 native integrations (AWS, Azure, GCP,
Kubernetes, Snowflake, Datadog, OpenAI and so on). Differentiator: breadth of sources, including
the invoice from LLM providers (OpenAI), which brings it closer to end-to-end AI cost. Limit:
the depth of intra-cluster allocation is lower than that of K8s-native tools.&lt;/p>
&lt;h3 id="finout--virtual-tagging-fast-deployment">Finout — virtual tagging, fast deployment&lt;/h3>
&lt;p>What it measures: multi-cloud cost with virtual tagging: it applies cost labels &lt;strong>without
modifying the real resources&lt;/strong>, which allows spend that was not properly tagged at source to be
allocated. Differentiator: fast deployment and flexible reallocation without touching the infra.
Limit: like the others in its category, it depends on the quality of the billing data it ingests.&lt;/p>
&lt;h3 id="comparison-table">Comparison table&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Tool&lt;/th>
&lt;th>Scope&lt;/th>
&lt;th>GPU&lt;/th>
&lt;th>Licence / model&lt;/th>
&lt;th>Differentiator&lt;/th>
&lt;th>Layer&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>OpenCost&lt;/strong>&lt;/td>
&lt;td>Kubernetes&lt;/td>
&lt;td>Yes (DCGM)&lt;/td>
&lt;td>Apache 2.0 (CNCF), free&lt;/td>
&lt;td>allocation standard&lt;/td>
&lt;td>resource&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Kubecost&lt;/strong>&lt;/td>
&lt;td>K8s + cloud&lt;/td>
&lt;td>Yes (DCGM, 3.0)&lt;/td>
&lt;td>commercial (IBM)&lt;/td>
&lt;td>rightsizing, enterprise&lt;/td>
&lt;td>resource+optim&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>CloudZero&lt;/strong>&lt;/td>
&lt;td>multi-cloud&lt;/td>
&lt;td>indirect&lt;/td>
&lt;td>commercial&lt;/td>
&lt;td>unit economics per product&lt;/td>
&lt;td>business&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Vantage&lt;/strong>&lt;/td>
&lt;td>multi-cloud (20+)&lt;/td>
&lt;td>via K8s/provider&lt;/td>
&lt;td>commercial&lt;/td>
&lt;td>breadth (incl. OpenAI)&lt;/td>
&lt;td>business&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Finout&lt;/strong>&lt;/td>
&lt;td>multi-cloud&lt;/td>
&lt;td>via K8s/provider&lt;/td>
&lt;td>commercial&lt;/td>
&lt;td>virtual tagging&lt;/td>
&lt;td>business&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="pricing-models-of-commercial-tooling">Pricing models of commercial tooling&lt;/h2>
&lt;p>They are worth knowing because the cost of the FinOps tool is also FinOps:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Model&lt;/th>
&lt;th>How it charges&lt;/th>
&lt;th>Range&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Savings-based&lt;/td>
&lt;td>% of the savings delivered&lt;/td>
&lt;td>&lt;strong>15–35 %&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Fixed-fee&lt;/td>
&lt;td>% of annual cloud spend&lt;/td>
&lt;td>&lt;strong>1–3 %&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>(&lt;a href="https://www.cloudzero.com/blog/finops-tools/">CloudZero · FinOps Tools&lt;/a>). The implication: at
large cloud spend, a 1–3 % &lt;em>fixed-fee&lt;/em> can exceed the &lt;em>savings-based&lt;/em> model; at small spend with a
lot of waste, &lt;em>savings-based&lt;/em> aligns incentives. OpenCost, being free, changes the equation for
whoever has a team to operate it.&lt;/p>
&lt;hr>
&lt;h2 id="focus-the-cost-data-standard">FOCUS: the cost data standard&lt;/h2>
&lt;p>The cross-cutting problem of multi-source FinOps is that each provider bills in its own format.
&lt;strong>FOCUS&lt;/strong> (FinOps Open Cost and Usage Specification) is the open technical specification that
defines requirements so that providers produce uniform billing datasets
(&lt;a href="https://focus.finops.org/focus-specification/">FOCUS · FinOps Foundation&lt;/a>).
The committee ratified FOCUS v1.3 on 4 December 2025.&lt;/p>
&lt;p>What is relevant for this series: at &lt;strong>FinOps X 2026&lt;/strong> the focus has been put on &lt;strong>extending FOCUS
to AI workloads&lt;/strong>, with token economics pushing the specification, and the expansion requests
include AI, datacenter and SaaS/PaaS workloads (&lt;a href="https://siliconangle.com/2026/06/08/focus-specification-ai-cost-accountability-finopsx/">SiliconANGLE&lt;/a>).
In other words, the standard that normalises cloud cost is being stretched to cover AI cost per
token. For an architecture proposal, betting on tools that emit and consume FOCUS is betting on
future interoperability.&lt;/p>
&lt;hr>
&lt;h2 id="from-resource-to-token-cost-per-token-with-a-gateway">From resource to token: cost per token with a gateway&lt;/h2>
&lt;p>Resource allocation (OpenCost) gets as far as &amp;ldquo;this vLLM pod cost X €/hour&amp;rdquo;. To get to &amp;ldquo;this
request from this team cost Y&amp;rdquo; you have to intercept the inference traffic. That is where the
gateway comes in.&lt;/p>
&lt;p>Tools such as LiteLLM sit between the application and the LLM provider/engine, and &lt;strong>intercept
every request to record tokens, latency and cost in real time&lt;/strong>. Layers above (for instance
OpenLM&amp;rsquo;s AI Gateway) generate usage logs compatible with FOCUS (v1.0 to 1.3) and map spend to
team, product, customer or feature, enabling showback or chargeback
(&lt;a href="https://www.openlm.com/enable-ai-finops-with-real-time-token-attribution/">OpenLM · token attribution&lt;/a>).
This links up with &lt;a href="https://blog.lo0.es/en/posts/finops-multi-tenancy-gpu-cluster-who-pays/">FinOps and multi-tenancy of the GPU cluster&lt;/a>,
where the gateway is the piece that splits cost between tenants.&lt;/p>
&lt;div class="diagram" style="max-width:780px;margin:1rem auto;">
&lt;svg viewBox="0 0 780 230" role="img" aria-label="From GPU-hour to cost per token: OpenCost allocates the pod cost, the LiteLLM gateway intercepts requests and counts tokens, and cost is split per team and product" xmlns="http://www.w3.org/2000/svg">
&lt;style>.bx{fill:none;stroke:currentColor;stroke-width:1.3}.dsh{fill:none;stroke:currentColor;stroke-width:1.3;stroke-dasharray:5 3}.tl{font:600 12px sans-serif;fill:currentColor}.ts{font:11px sans-serif;fill:currentColor}.ar{fill:none;stroke:currentColor;stroke-width:1.3;marker-end:url(#fm2)}&lt;/style>
&lt;defs>&lt;marker id="fm2" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto">&lt;path d="M0,0 L10,5 L0,10 z" fill="currentColor"/>&lt;/marker>&lt;/defs>
&lt;rect class="bx" x="20" y="40" width="160" height="58" rx="6"/>
&lt;text x="32" y="63" class="tl">OpenCost&lt;/text>
&lt;text x="32" y="82" class="ts">vLLM pod cost (€/h)&lt;/text>
&lt;path class="ar" d="M180,69 L225,69"/>
&lt;rect class="bx" x="225" y="40" width="180" height="58" rx="6"/>
&lt;text x="237" y="63" class="tl">Gateway (LiteLLM)&lt;/text>
&lt;text x="237" y="82" class="ts">intercepts · counts tokens&lt;/text>
&lt;path class="ar" d="M405,69 L450,69"/>
&lt;rect class="bx" x="450" y="40" width="150" height="58" rx="6"/>
&lt;text x="462" y="63" class="tl">FOCUS logs&lt;/text>
&lt;text x="462" y="82" class="ts">tokens · latency · cost&lt;/text>
&lt;path class="ar" d="M600,69 L645,69"/>
&lt;rect class="bx" x="645" y="40" width="115" height="58" rx="6"/>
&lt;text x="657" y="63" class="tl">Showback&lt;/text>
&lt;text x="657" y="82" class="ts">per team&lt;/text>
&lt;rect class="dsh" x="20" y="130" width="740" height="72" rx="6"/>
&lt;text x="34" y="152" class="tl">Two halves that have to be joined: allocation per resource (OpenCost) + measurement per token (gateway).&lt;/text>
&lt;text x="34" y="172" class="ts">Without the gateway you know the pod's cost, not the request's. Without OpenCost you know the tokens, not the real hardware cost.&lt;/text>
&lt;text x="34" y="190" class="ts">FOCUS is the common format that lets them be crossed with the rest of the cloud spend.&lt;/text>
&lt;/svg>
&lt;/div>
&lt;hr>
&lt;h2 id="worked-example-chargeback-of-a-multi-tenant-cluster">Worked example: chargeback of a multi-tenant cluster&lt;/h2>
&lt;p>To see the two halves joined, a split over an example node (&lt;strong>4×H100&lt;/strong>, depreciated cost
12 €/hour) shared by three teams via namespaces and MIG:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Team&lt;/th>
&lt;th>GPU-hours allocated (OpenCost)&lt;/th>
&lt;th>Hardware cost (€/h)&lt;/th>
&lt;th>Tokens/day (gateway)&lt;/th>
&lt;th>Cost/1M tok&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>A · chat product&lt;/td>
&lt;td>50 %&lt;/td>
&lt;td>6.00&lt;/td>
&lt;td>8M&lt;/td>
&lt;td>~0.75 €&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>B · nightly batch&lt;/td>
&lt;td>30 %&lt;/td>
&lt;td>3.60&lt;/td>
&lt;td>3M&lt;/td>
&lt;td>~1.20 €&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>C · experimentation&lt;/td>
&lt;td>20 %&lt;/td>
&lt;td>2.40&lt;/td>
&lt;td>0.5M&lt;/td>
&lt;td>~4.80 €&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>How it comes out: OpenCost splits the node&amp;rsquo;s 12 €/h according to the GPU-hours each namespace
consumes (half for A → 6 €/h). The gateway supplies the tokens per team. Each one&amp;rsquo;s cost per
million tokens is its hardware cost divided by its output, and it reveals something neither half
would see alone: team &lt;strong>C pays 6× more per token than A&lt;/strong>, not because its model is worse, but
because its GPU is underused (a lot of allocated GPU-hours for few tokens). That 4.80 €/1M is
the chargeback signal that triggers an optimisation conversation: either C raises its utilisation,
or it releases the GPU. Without crossing allocation and tokens, that waste stays hidden in a
cluster average.&lt;/p>
&lt;hr>
&lt;h2 id="the-hidden-cost-utilisation">The hidden cost: utilisation&lt;/h2>
&lt;p>Optimisation lever number one is not changing GPU, it is stopping paying for an idle GPU. As
seen in the opening article, the electricity cost per token at 80 % utilisation is a quarter of
what it is at 20 %, and utilisation spreads all the fixed cost (capex + energy) over more tokens.
Measuring idle is, therefore, the highest-return action of the &lt;em>Optimize&lt;/em> phase:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Signal&lt;/th>
&lt;th>Source&lt;/th>
&lt;th>Typical threshold&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Idle GPU&lt;/td>
&lt;td>&lt;code>DCGM_FI_DEV_GPU_UTIL&lt;/code>&lt;/td>
&lt;td>&amp;lt; 10 % for &amp;gt; 15 min&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Unused GPU memory&lt;/td>
&lt;td>&lt;code>DCGM_FI_DEV_FB_USED&lt;/code>&lt;/td>
&lt;td>reserved but not used&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Pods with no traffic&lt;/td>
&lt;td>gateway metrics&lt;/td>
&lt;td>0 requests, GPU allocated&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Allocation (OpenCost) locates whose the idle GPU is; scheduling and co-residency
(&lt;a href="https://blog.lo0.es/en/posts/sharing-one-gpu-time-slicing-mps-mig/">sharing the GPU: time-slicing, MPS and MIG&lt;/a>)
recover it. FinOps closes the loop: measure → attribute → optimise → govern.&lt;/p>
&lt;hr>
&lt;h2 id="optimize-the-saving-levers-with-data">Optimize: the saving levers (with data)&lt;/h2>
&lt;p>Once cost is allocated (Inform), the &lt;em>Optimize&lt;/em> phase has a bounded repertoire of levers. Ordered
by typical return:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Lever&lt;/th>
&lt;th>Typical saving&lt;/th>
&lt;th>Mechanism&lt;/th>
&lt;th>Cost/risk&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Recover idle&lt;/strong>&lt;/td>
&lt;td>the largest&lt;/td>
&lt;td>switch off/share the idle GPU&lt;/td>
&lt;td>requires measuring utilisation&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Quantisation (FP8/INT4)&lt;/strong>&lt;/td>
&lt;td>raises throughput, lowers VRAM&lt;/td>
&lt;td>more tokens per GPU-hour&lt;/td>
&lt;td>possible quality cost&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Reserved commitment&lt;/strong>&lt;/td>
&lt;td>&lt;strong>20–40 %&lt;/strong> over on-demand&lt;/td>
&lt;td>reserve capacity&lt;/td>
&lt;td>less elasticity&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Spot/preemptible&lt;/strong>&lt;/td>
&lt;td>the deepest discount&lt;/td>
&lt;td>interruptible capacity&lt;/td>
&lt;td>you have to tolerate cuts&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Rightsizing&lt;/strong>&lt;/td>
&lt;td>variable&lt;/td>
&lt;td>match GPU type/count to the SLO&lt;/td>
&lt;td>requires benchmarks&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Autoscaling (HPA/KEDA)&lt;/strong>&lt;/td>
&lt;td>variable&lt;/td>
&lt;td>scale replicas with demand&lt;/td>
&lt;td>tuning metrics&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>On commitment, the 2026 cloud data is conclusive: reserved plans give 20–40 % saving
against on-demand, and spot the deepest discount in exchange for interruptibility; the price of
the H100 fell 64–75 % between Q4 2024 and the start of 2026
(&lt;a href="https://www.spheron.network/blog/gpu-cloud-pricing-comparison-2026/">Spheron · GPU Cloud Pricing&lt;/a>).
Rightsizing and autoscaling connect with cluster scheduling: fitting the workload onto the
right GPU and scaling replicas with demand are, at the same time, performance and cost levers.
Quantisation appears here because it raises throughput, and, by the identity from the opening
article, lowers cost and energy per token at the same time.&lt;/p>
&lt;hr>
&lt;h2 id="gpu-finops-maturity">GPU FinOps maturity&lt;/h2>
&lt;p>A simple model to place where an organisation is, and what it is missing:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Level&lt;/th>
&lt;th>State&lt;/th>
&lt;th>What is missing to move up&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>0 · blind&lt;/td>
&lt;td>aggregate invoice, no attribution&lt;/td>
&lt;td>instrument OpenCost + DCGM&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>1 · visibility&lt;/td>
&lt;td>cost per namespace/team&lt;/td>
&lt;td>per-token measurement (gateway)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2 · unit economics&lt;/td>
&lt;td>cost per token and per product&lt;/td>
&lt;td>idle alerts and budgets&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3 · optimisation&lt;/td>
&lt;td>idle recovered, commitment, rightsizing&lt;/td>
&lt;td>automated chargeback&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4 · governance&lt;/td>
&lt;td>chargeback + budgets + FOCUS&lt;/td>
&lt;td>continuous improvement&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Most organisations with GPUs are at level 0 or 1: they see a big invoice but do not know whose
each euro is. The value jump is in reaching level 2, cost per token and per product, which is
exactly where the tooling in this article stops being optional. The series&amp;rsquo; FinOps track walks that
ladder up to the full TCO model and the comparable cost/token that underpins the architecture
proposal.&lt;/p>
&lt;hr>
&lt;h2 id="the-minimum-stack-to-reach-level-2">The minimum stack to reach level 2&lt;/h2>
&lt;p>Bringing the previous pieces together into a concrete toolchain, all open source, that takes you
from blindness (level 0) to cost per token and per product (level 2):&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Piece&lt;/th>
&lt;th>Function&lt;/th>
&lt;th>Alternative&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>NVIDIA GPU Operator + DCGM&lt;/strong>&lt;/td>
&lt;td>exports GPU metrics (usage, memory, power)&lt;/td>
&lt;td>—&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Prometheus&lt;/strong>&lt;/td>
&lt;td>stores the usage and cost series&lt;/td>
&lt;td>VictoriaMetrics&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>OpenCost&lt;/strong>&lt;/td>
&lt;td>allocates cost per resource and dimension&lt;/td>
&lt;td>Kubecost (commercial)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Gateway (LiteLLM)&lt;/strong>&lt;/td>
&lt;td>counts tokens per team/model&lt;/td>
&lt;td>OpenLM AI Gateway&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Grafana&lt;/strong>&lt;/td>
&lt;td>cost, utilisation and idle panels&lt;/td>
&lt;td>—&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>It is, deliberately, infrastructure many clusters already have for observability (DCGM,
Prometheus, Grafana); GPU FinOps reuses that base and adds OpenCost and the gateway to it. It is
not a new product, it is a layer on top of what exists.&lt;/p>
&lt;h3 id="kpis-to-watch">KPIs to watch&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>KPI&lt;/th>
&lt;th>What it indicates&lt;/th>
&lt;th>Typical target&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Average GPU utilisation&lt;/td>
&lt;td>waste&lt;/td>
&lt;td>&amp;gt;70–80 % sustained&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cost per 1M tokens (per model)&lt;/td>
&lt;td>economic efficiency&lt;/td>
&lt;td>compare against cloud rental&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>% of GPU-hours idle&lt;/td>
&lt;td>money thrown away&lt;/td>
&lt;td>minimise (&amp;lt;10–15 %)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Cost per team/product&lt;/td>
&lt;td>attribution&lt;/td>
&lt;td>fair split, no surprises&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Deviation against budget&lt;/td>
&lt;td>governance&lt;/td>
&lt;td>alert before it is exceeded&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>These five KPIs are what turn GPU FinOps from a pretty dashboard into a decision tool: if you watch
them, you know at all times what each thing costs and where the waste is.&lt;/p>
&lt;hr>
&lt;h2 id="state-of-the-art-2026">State of the art 2026&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Consolidation in Kubernetes&lt;/strong>: OpenCost is the CNCF allocation standard; Kubecost
(IBM) the reference commercial product, already with GPU via DCGM and rightsizing through
Turbonomic.&lt;/li>
&lt;li>&lt;strong>From resource to token&lt;/strong>: the strong platforms of 2026 track cost at token and GPU level,
combining resource allocation (OpenCost) with gateway measurement (LiteLLM); it is the only route
to a comparable cost/token for on-prem against cloud.&lt;/li>
&lt;li>&lt;strong>FOCUS v1.3&lt;/strong> (Dec 2025) as the interoperability layer, extending to AI at
FinOps X 2026: the cloud cost standard absorbs token economics.&lt;/li>
&lt;li>&lt;strong>Mature GPU FinOps&lt;/strong>: instrumentation leans on DCGM (the same base as observability), and idle
detection by a utilisation threshold is common practice.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="cost-per-token-the-bridge-to-the-business-decision">Cost per token: the bridge to the business decision&lt;/h2>
&lt;p>All the previous tooling exists to produce a number the business understands: cost per token
(or per request). It is the one that lets you answer the three questions that underpin an
architecture proposal:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Build or buy?&lt;/strong> On-prem cost/token (depreciated capex + opex, at real utilisation) against the
price of an external API or of cloud rental. Below the volume threshold (~2M tokens/day) buying
usually wins; above it, building.&lt;/li>
&lt;li>&lt;strong>How do you price a product?&lt;/strong> If a feature consumes N tokens per use and each million costs C,
the marginal cost per use is N·C/10⁶, the basis of any margin.&lt;/li>
&lt;li>&lt;strong>Where is the waste?&lt;/strong> Cost/token per team (the chargeback example) points at whoever underuses
the GPU before the aggregate invoice hides it.&lt;/li>
&lt;/ol>
&lt;p>The trap: comparing cost/token across scenarios without fixing the assumptions (utilisation,
precision, ownership model). An on-prem cost/token calculated at 80 % utilisation is not comparable
with one at 20 %, nor an FP16 with an FP8. That is why allocation (Inform) is not an end in itself:
it is the raw material of a cost model with explicit assumptions, which is what the synthesis
article turns into the &amp;ldquo;build vs buy&amp;rdquo; argument with defensible numbers. GPU FinOps is not
accounting; it is the quantitative basis of the architecture decision.&lt;/p>
&lt;hr>
&lt;h2 id="limits-and-traps-data-driven">Limits and traps (data-driven)&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>Allocation ≠ per-token measurement.&lt;/strong> OpenCost splits the resource cost; without a gateway you
do not reach the request. They are two halves that have to be joined explicitly.&lt;/li>
&lt;li>&lt;strong>Badly set base prices = badly set allocation.&lt;/strong> On-prem, OpenCost splits the cost &lt;strong>you
declare&lt;/strong> for the node; if the depreciated capex/opex is wrong, the whole split is wrong. Input
data quality rules.&lt;/li>
&lt;li>&lt;strong>Invisible idle.&lt;/strong> Without DCGM exported to Prometheus and without utilisation alerts, waste
number one does not appear on any dashboard.&lt;/li>
&lt;li>&lt;strong>Cost of the tool.&lt;/strong> A 1–3 % &lt;em>fixed-fee&lt;/em> on large spend is real money; compare the tooling cost
with the saving it delivers (it is FinOps on top of FinOps).&lt;/li>
&lt;li>&lt;strong>Proprietary formats.&lt;/strong> Tools that do not emit/consume FOCUS tie you to their data model; in
2026 the robust bet is FOCUS interoperability.&lt;/li>
&lt;/ol>
&lt;p>The next article in the series (A2) goes into OpenCost in depth; this one fixes the map. With
allocation settled, the rest of the FinOps track builds the TCO model and the cost/token the
proposal needs.&lt;/p>
&lt;h2 id="sources">Sources&lt;/h2>
&lt;ul>
&lt;li>OpenCost · GitHub (CNCF, Apache 2.0) — &lt;a href="https://github.com/opencost/opencost">https://github.com/opencost/opencost&lt;/a>&lt;/li>
&lt;li>OpenCost · documentación on-prem (modelo de precio por nodo) — &lt;a href="https://opencost.io/docs/configuration/on-prem/">https://opencost.io/docs/configuration/on-prem/&lt;/a>&lt;/li>
&lt;li>OpenCost · exporter de Prometheus — &lt;a href="https://opencost.io/docs/integrations/opencost-exporter/">https://opencost.io/docs/integrations/opencost-exporter/&lt;/a>&lt;/li>
&lt;li>CloudZero · Kubecost vs OpenCost (2026) — &lt;a href="https://www.cloudzero.com/blog/kubecost-vs-opencost/">https://www.cloudzero.com/blog/kubecost-vs-opencost/&lt;/a>&lt;/li>
&lt;li>CloudZero · FinOps Tools: Definitive Guide (2026) — &lt;a href="https://www.cloudzero.com/blog/finops-tools/">https://www.cloudzero.com/blog/finops-tools/&lt;/a>&lt;/li>
&lt;li>FOCUS · especificación (FinOps Foundation) — &lt;a href="https://focus.finops.org/focus-specification/">https://focus.finops.org/focus-specification/&lt;/a>&lt;/li>
&lt;li>SiliconANGLE · FOCUS y la economía de tokens de IA (FinOps X 2026) — &lt;a href="https://siliconangle.com/2026/06/08/focus-specification-ai-cost-accountability-finopsx/">https://siliconangle.com/2026/06/08/focus-specification-ai-cost-accountability-finopsx/&lt;/a>&lt;/li>
&lt;li>OpenLM · atribución de tokens en tiempo real (LiteLLM + FOCUS) — &lt;a href="https://www.openlm.com/enable-ai-finops-with-real-time-token-attribution/">https://www.openlm.com/enable-ai-finops-with-real-time-token-attribution/&lt;/a>&lt;/li>
&lt;li>Finout · Best AI Cost Observability Tools (2026) — &lt;a href="https://www.finout.io/blog/best-ai-cost-observability-tools-in-2026">https://www.finout.io/blog/best-ai-cost-observability-tools-in-2026&lt;/a>&lt;/li>
&lt;/ul></description></item></channel></rss>