CostMonStart free

Product

Catch it before the invoice.

A monthly bill is the slowest possible way to find out something went wrong. CostMon watches your normalized daily spend and fires the moment it breaks its own baseline. Drag the sliders below to run the exact detection math yourself.

Try the actual detection math

Would your last runaway bill have been caught?

Pick a scenario and drag the same four thresholds a real anomaly rule uses. Watch it decide. The math is anomaly.Detect. It runs in your browser against 60 days of illustrative daily spend.

Anomaly rule simulatorIllustrative data, real detection math
Live

A coding agent's retry logic fans out into far more model calls than intended. Token spend, not request count, moves first.

Raising the z-score or minimum-% thresholds cuts false alarms. It also means real spend has to climb further before the rule fires, so a genuine anomaly gets caught later. No single setting maximizes both at once. That trade-off is the whole tuning problem.

14 days

Trailing days used to build the baseline mean & standard deviation

3

How many standard deviations above baseline before it's suspicious

50%

Also requires spend to beat the baseline mean by at least this percent

$5

Ignores anomalies below this dollar amount, so low-spend periods stay quiet

ResultCaught on day 51: 9 days before the invoice.
Days of early warning
9 days
Still to accrue once caught
$19,312
False alarms in the quiet weeks
0

Illustrative, deterministic sample data. It is not a customer's real spend. The math deciding each bar is the same triple-gate logic CostMon runs in production.

Alert preview

Illustrative data. The message is the exact text CostMon's notifier sends. It redraws live as you change the scenario or a slider above.

FromCostMon <no-reply@costmon.com>
Toyou@yourcompany.com
SubjectCostMon alert: Anomaly: anthropic / claude-opus-4-6 spend spike
Anomaly: anthropic / claude-opus-4-6 spend spike

anthropic / claude-opus-4-6 was $1072.87 on 2026-06-20 — 51% above its 14-day average of $710.01.

Severity: warning
Occurred on: 2026-06-20

How CostMon's alerting actually works

How the detector decides

An anomaly rule doesn't fire on a single loose signal. It requires three gates to hold at once for the same day's spend. First, the value has to beat the trailing baseline's mean plus a set number of standard deviations. This is the z-score gate. The default is 3.0, which is statistically rare for a normal day. Second, it separately has to beat the baseline mean by a minimum percentage (default 50% over). This is a plain-language sanity check that does not rely on the shape of the distribution. Third, it has to clear a minimum absolute dollar floor (default $5), so a service that goes from $2/day to $6/day doesn't page anyone.

The baseline itself is the trailing window of days before the one being evaluated; the evaluated day is never counted in its own baseline. If there are fewer than 2 days of history, the rule does not fire yet. It needs a rough sense of normal before it can call something abnormal.

Raising the z-score or the minimum-percent gate cuts false alarms. It also detects a real problem later, because the value has to climb further before either gate clears. A slow ramp can slip under the gates indefinitely. Each day's increase stays small against the rolling baseline mean, and the baseline mean climbs with it. That is why the third scenario in the simulator above never fires at the default settings. Both gates block it independently. Moving one slider alone never catches it. Lower the z-score to 2.0 and the minimum-percent gate to 10% together, and it is caught on day 24 with no false alarms. Loosen only one of the two, and it stays invisible at every setting. A rule tuned for spikes needs help with a slow leak. Anomaly rules and a budget's burn-down projection work together here.

What you get on day one

Every new org gets an org-wide anomaly rule seeded automatically the first time someone logs in. The rule uses a 14-day lookback, a 3.0 z-score threshold, a 50% minimum over baseline, and a $5 floor. You configure nothing before it is live. The tuning above is for teams that want to scope a rule tighter.

That default rule watches spend. You can add rules that scope to a single provider source (a label like "aws" or "anthropic"), a specific service, or a cost tag. These rules can watch token volume, request count, or tokens per request instead of dollars. That lets a team watch its own slice of the bill without drowning in org-wide noise.

Budgets and the burn-down projection

A budget asks a different question than an anomaly rule. An anomaly rule asks whether today is unusual. A budget asks whether you are still on pace to land under a number you picked. Budgets scope to the org, a provider source, or a tag. They run over either a fixed calendar month or a rolling window (30 days by default). Each one also carries a forward projection: projected total spend and projected percent of budget, based on the pace so far in the period.

Threshold alerts fire at 80% and 100% of budget by default. The warning arrives while there is still room to react.

Watch tokens, not just dollars

Anomaly rules aren't limited to spend. They can also watch token volume, request count, or tokens per request. That last one suits agentic workloads. An agent loop can fan out into far more calls, or far more tokens per call, than intended. This often shows in tokens-per-request before it moves the dollar figure. Pricing tiers and caching can blunt the dollar signal for a while, even after the usage pattern has changed.

The seeded default rule doesn't watch this; it tracks spend. A tokens_per_request rule is one you create and scope to an AI provider source, and it catches the runaway-agent shape this page's first scenario illustrates.

Alerts people don't learn to ignore

Every alert carries a kind (budget or anomaly), a severity (info, warning, critical), and an owner. Its status moves from open to acknowledged to resolved as someone deals with it. Every alert also has a deterministic dedupe key. CostMon derives it from the condition that triggered the alert. The same ongoing anomaly re-evaluates every hour, and it does not spawn a new alert each time. It is the same alert until it is resolved.

The tuning that keeps a rule useful long-term isn't exotic. Give each rule a single clear owner so it doesn't become nobody's job. Favor the absolute floor over the percentage gate for low-spend services, since a 200% jump on a $3/day service is still noise. And if a rule is chatty in its own quiet periods, widen the lookback window or raise the z-score rather than turning it off entirely.

Where it lands

A new alert fans out to every enabled notification channel plus the rule owner's email automatically. There's no separate step to wire a rule to a destination. Channels are email (via SES), Slack, and a generic webhook for anything else in a team's stack. Slack uses an incoming webhook URL. You install no app and authorize no bot. The alert preview in the simulator above shows the exact message, on all three channels.

Honest limits

What this doesn't do

Alerting is only useful if you trust it. Here is exactly where the edges are.

Day-grain, not real-time

Cost data syncs on an hourly schedule. Anomaly rules evaluate on an hourly sweep. The underlying signal is a complete day of provider cost data, not a live, sub-day stream. In practice, an anomaly is typically visible hours after the day that caused it closes. That is still days to weeks earlier than the same overspend would surface on an invoice. It is not instant.

Provider data has its own lag

CostMon syncs on the schedule its connectors' provider APIs make data available on. A connector that reports cost data a day or more behind (common for some billing APIs) pushes CostMon's own detection back by the same amount. The detection math runs the moment complete data is available, not before.

No automatic per-resource attribution

An alert or a budget breach tells you which provider source, service, or tag moved. It does not automatically point at a specific instance ID or API key. A provider's cost export does not always include that level of detail. The signal narrows down where to look; a per-resource root cause is still a short investigation, not a click-through.

The simulator above is illustrative

The three scenarios in the simulator are synthetic, deterministically generated series meant to demonstrate the real detection math clearly. They are not drawn from any customer's actual data. The math running against them is the same detect() logic CostMon runs in production. The data feeding it is a teaching example, not a case study.

FAQ

Common questions about cost alerts & anomaly detection

Is CostMon's anomaly detection real-time?

No, it's day-grain, not real-time. Cost data syncs hourly and anomaly rules evaluate on an hourly sweep. The actual signal is a complete day of normalized cost data. An anomaly is typically caught hours after the day that caused it closes. That is still days to weeks earlier than the same overspend would show up on a monthly invoice. It is not an instant, sub-day stream.

What's the default anomaly rule, and do I have to set one up myself?

Every new org gets an org-wide rule seeded automatically the first time someone logs in. It has a 14-day lookback, a 3.0 z-score threshold, a minimum 50% over baseline, and a $5 noise floor. It watches spend. You configure nothing before it protects the account. Scoped rules are for teams that want tighter coverage. They can scope per provider source, service, or tag. They can also watch token or request metrics instead of dollars. You do not need them to get started.

How does Slack alerting work?

Through an incoming webhook URL you paste in, not a Slack app or bot that needs authorizing or added permissions. A new alert posts to that webhook the same way it emails the rule owner and hits any configured generic webhook.

What's the difference between a budget and an anomaly rule?

An anomaly rule asks whether today's spend is statistically unusual against its own recent baseline; it can fire in the first week of a month. A budget asks whether spend is on pace to land under a ceiling over a monthly or rolling period. It has a forward projection and threshold alerts at 80% and 100%. Use anomaly rules to catch a spike as it happens and budgets to track pace against a number you've committed to.

Why watch tokens per request instead of just dollars?

An agentic workload can fan out into far more model calls, or far more tokens per call, than intended. This often shows in tokens-per-request before it moves the dollar figure. Pricing tiers and prompt caching can blunt the dollar signal for a while even as the underlying usage pattern has already changed. A tokens_per_request rule catches that shape earlier than a spend-only rule would. You create it yourself and scope it to an AI provider source, since the seeded default watches spend.

Will re-firing the same anomaly spam me with duplicate alerts?

No. Every alert has a deterministic dedupe key. CostMon derives it from the condition that triggered the alert. The same ongoing anomaly re-evaluates on the next hourly sweep, and it does not create a new alert. It stays the same open alert until someone resolves it.

What happens if my org doesn't have enough cost history yet?

The detector requires at least 2 days of baseline history before it will ever fire. With fewer than that, there isn't enough of a "normal" to compare against, so it stays silent rather than guessing. Coverage improves day by day as more cost history syncs in.

The invoice is a lagging signal.

A monthly invoice tells you what already happened. CostMon builds a daily baseline, so a spike stands out while you can still act on it.

Esc