Investigate cloud-cost changes with deployment context and billing evidence.
See what changed on your bill, which deployments line up, and where the evidence is inconclusive, including changes that were only code. CostTrace runs in your CI or terminal against your own billing export, and your billing data never leaves your environment.
Works with AWS, Azure, Google Cloud and Oracle Cloud. Early access: founder@costtrace.io
An N+1 query with zero infrastructure changes. A pre-merge estimate prices it at $0. CostTrace finds the line of code.
Any cloud
One tool for every cloud you run on. CostTrace reads FOCUS, the open billing format every major cloud now exports, and uses one tag convention that's valid everywhere. No per-cloud setup and no data pipeline.
- AWS
- Microsoft Azure
- Google Cloud
- Oracle Cloud
Any AI agent
Its MCP server works with any agent that supports MCP, so your coding agent answers cost questions with numbers from your bill. Not using AI? The CLI, the GitHub Action and JSON output work entirely on their own, with no API key.
- Any MCP client
- CLI
- GitHub Action
- JSON
Estimates stop at merge. Your bill doesn't.
Pre-merge tools price what they can see in your infrastructure code. Data processing, traffic, logs and discounts only show up after the change is running.
Pre-merge estimate
List prices for resources declared in your infrastructure code. Useful, but it misses usage-driven charges and your negotiated rates.
CostTrace measurement
Real billed cost from your provider's export, including your discounts, attributed to the commit that deployed it, and compared against the estimate.
costtrace explain
Your bill went up. Here's why.
Point it at a billing period and it splits the change for every service into usage, rate, new and removed resources, then lines it up with your deploys. It uses only what your bill already contains.
Coincides with PR #105 "Include full ticket history in support-agent context", deployed Sep 9 to support-agent
Correlated with PR #101, which deployed it
Reserved Instance no longer applied. No corresponding deploy detected
Sample data. Changes are split into parts that add up exactly; periods of different lengths and normal daily variation are separated out, so noise isn't blamed on a deploy. CostTrace says "coincides with", never "caused": timing is evidence, not proof. The method, and its limits, are documented for every figure.
costtrace traces
From the bill to the line of code.
The bill says which resource got more expensive after a deploy. Your OpenTelemetry traces say which code calls it. CostTrace compares the deployed service's traces before and after the deploy, finds the queries and calls that changed per request, and splits the measured cost change across them.
$ costtrace traces --traces ./otel-export --changes deploys.json --sha 7d24e0c --focus ./exports ORDERS-DB +$578.92/mo (affected) Matched to traced calls by "orders" ≈+$550/mo, 95% of the change: SELECT * FROM order_line_items WHERE id = ? repeated query (N+1), up to 39× per call site: 0 → 20.2 calls per request at /srv/checkout/app/invoices.py:57 (load_line_items) ≈+$9/mo, 2% of the change: more requests (traffic) offset by: SELECT * FROM order_line_items WHERE order_id = ? (removed)
Per request, not per day
Changes are measured per request to each endpoint, so more traffic is reported as traffic, not blamed on the code.
Patterns, with locations
Repeated queries (N+1), new calls, more calls and slower calls, each with the file and function from your traces.
Your traces, as they are
Reads OpenTelemetry exports (OTLP/JSON files) or a Jaeger-compatible query API. No new instrumentation and no agent to install.
Sample data. The resource's change is measured from the bill; the split across code paths is an estimate, because span time stands in for what the resource bills. It ranks where to look and roughly how much is at stake. Confirm a fix by measuring its deploy.
Get started
Three steps, each useful on its own
You can stop after step 2 and still know why your bill moved. During early access, we set up each step with you.
Turn on your billing export
In your cloud's billing console, export cost data in FOCUS format to storage you own. CostTrace needs read access only.
5 minutes · first data within about a dayAsk why your bill changed
Run
2 minutescosttrace explainon any two periods your export covers: usage, rates, new and removed resources, per service. No tags or deploy log needed.Get a cost comment on every PR
Tag deploys with the commit SHA, then add the GitHub Action. It reads your GitHub deployments, so there's no deploy log to keep.
15 minutes
Already export OpenTelemetry traces? Point costtrace traces at them to go from a cost change to the code behind it.
Why CostTrace
Designed for a different question.
CostTrace is a local-first tool that measures how the changes you ship coincide with changes in your actual cloud bill, using your own FOCUS data, in your own CI. Estimators ask what a change should cost; budgets ask whether spend moved; FinOps platforms ask where the money went. CostTrace asks, right in the pull request: what did this change actually do to the real bill?
Measured, not guessed
What each change actually cost, read from your bill with your negotiated rates, not list-price estimates.
Per pull request, even for code
Cost changes are lined up with the deploys they coincide with, including changes with no infrastructure diff at all.
Down to the code path
With your OpenTelemetry traces, the cost change is followed to the queries and calls that changed, with file and function.
Transparent numbers
Runs on your own FOCUS export in your CI, and every figure comes with a ± range and a documented method.
How it differs
Alongside the tools you already use
Each kind of cost or monitoring tool answers part of the question. CostTrace fills the gap between them: measured cost, per change, back to the code. It doesn't replace them.
Pre-merge cost estimators
- Good at
- Pricing new and resized infrastructure from your IaC diff, before merge.
- CostTrace adds
- What the change really cost once running, at your negotiated rates, including usage-driven charges and code-only changes an estimate prices at $0. And estimate vs. actual, so you learn how good the estimates are.
Cloud budgets & anomaly alerts
- Good at
- Telling you quickly that spend on a service or account moved.
- CostTrace adds
- Which deploy and pull request the change coincides with, and how much of it, with a ± range, so the alert has an owner.
FinOps platforms
- Good at
- Allocating spend by team, product or customer, with dashboards for finance.
- CostTrace adds
- Per-change measurement delivered to the engineer on the pull request. It runs on your own export in your own CI, so billing data isn't sent to another company.
Observability & APM tools
- Good at
- Latency, errors and traces: which code path got slower or busier.
- CostTrace adds
- What that change did to the bill. CostTrace reads your existing traces and puts measured dollars next to the queries and calls that changed.
AI usage & token trackers
- Good at
- Counting tokens and spend per model call, once the app is set up to report them.
- CostTrace adds
- The whole bill, not only AI calls, with no changes to your code: an AI model or prompt change shows up next to every other cost it moved.
Categories, not specific products, as of October 2026. Individual products vary and some overlap with parts of this. If you'd like to compare CostTrace with a tool you use, write to founder@costtrace.io.
AI-native
Ask any coding agent what a change cost
CostTrace ships an MCP server, an open standard that agents and editors support, so whichever agent your team uses answers cost questions with numbers measured from your bill instead of guesses, and can trace a spike back to the deploys it coincides with and the code paths in your traces.
orders-db (AWS RDS) went from $52 to $71 a day. Traces from the same days show a new N+1 query at invoices.py:57 (load_line_items): about 20 queries per request, ≈ $550/mo of the change by estimate. Batching them into a single query should bring it back down.Example conversation using the sample dataset. Read-only tools. Works with any MCP client.
What it catches
Every deploy, measured from the bill, whether the change was infrastructure, code or a clean-up.
New & resized infrastructure
A NAT gateway estimated at $310/mo that really costs $1,368, because data processing never shows up in a Terraform plan.
Application code
Queries, retries, log volume or LLM calls that raise the bill of unchanged resources, attributed to the PR that deployed them.
Savings
Deleted and downsized resources count as savings, so clean-up work gets the credit it earns.
Only real signals
Every figure has a ± range from daily variation, noise isn't listed as impact, and back-to-back deploys are kept apart.
How it works
No agents and no SaaS account. CostTrace runs in your CI or on your laptop against your own billing export.
Tag
Deploys stamp resources with
costtrace_sha,_pr,_repoand_service. One convention that's valid on every cloud.Measure
CostTrace reads your FOCUS export straight from S3, Blob Storage or BigQuery, and your deploys from GitHub deployments or a deploy log, then compares costs before vs. after each deploy.
Attribute
New, changed and removed resources, plus cost shifts from application code in the same service, each with a ± range. With traces, down to the queries and calls that changed.
Report
A PR comment kept up to date by the GitHub Action, a table, JSON, or a failed CI check when a change blows past its estimate.
Any cloud, one tool
CostTrace is built on FOCUS, the FinOps Foundation's open billing standard that every major cloud now exports. Point it straight at the export: no data pipeline, no copy.
s3://bucket/prefixazure://account/containerbq://project.dataset.table./exportsReads CSV, gzipped CSV and Parquet, fetching only the columns and billing months a report needs. A large export (millions of billing rows, gzipped) takes a few minutes.
Built to be trusted with your bill
Runs where you do
Local-first. Your billing data never leaves your machine or CI.
No telemetry
CostTrace sends nothing anywhere: no tracking, no usage data, no calls you didn't ask for.
Honest numbers
Every figure has a ± range, noise isn't reported as impact, and it says "coincides with", never "caused".
Least access
Read-only access to the billing export is all it needs, using your cloud's standard credentials.
Get in touch
CostTrace is in early access. Tell us about your cloud bill and we'll run it on your own billing export with you.
🧾 PR #104: Load order line items individually in invoice view
7d24e0c· checkout · deployed 2026-09-18 11:00 UTCService-level impact: no infrastructure changed, but the database bill rose after the deploy. 3 other checkout resources held steady.