Cut your cloud bill without handing anyone your keys.
CloudPilot inventories what you run, prices it, finds the waste, and either recommends a fix or applies an approved one with a rollback path. At month end it reports what you actually saved — measured against your bill, not against its own estimates.
Daily cost, last 90 days
Unblended cost from Cost Explorer
Kubernetes, by namespace
Charged on max(request, usage)
Four jobs, in the order a team actually needs them.
See the bill, attribute it, find the waste, then fix it without breaking anything.
See the whole bill
Multi-account cost visibility from Cost Explorer, joined to a live inventory of EC2, EBS, RDS, S3, load balancers, NAT gateways, elastic IPs and EKS. Spend you cannot attribute is called out rather than buried.
Charge Kubernetes back to the team that caused it
Node cost splits across pods by their share of allocatable capacity,
on max(request, usage). A pod reserving four cores and burning
one blocks the scheduler, so the team that set the request owns the cost.
What no pod claims is reported as idle capacity.
Find waste you can defend in a review
Every finding ships with the metrics that produced it, a confidence level and a risk level. An instance with under 48 hours of CloudWatch history is never called idle. A downsize that would push p95 CPU past 70% is never recommended.
Fix it, reversibly
Dry run is on by default. Nothing changes until a named person approves it. Volumes are snapshotted before deletion; workloads record their original resource block before being patched. All of it lands in an audit log.
From launched to first finding in about ten minutes.
Create a read-only role
Attach the read-only policy and CloudPilot physically cannot change anything. You lose nothing but the ability to press Execute.
Run it next to your infrastructure
Docker Compose on a t3.small, a systemd unit, or Helm
into the cluster it is costing. All three reach the same dashboard.
Scan and read
Findings arrive with their evidence. Dismiss what does not apply; dismissals stick across scans.
Turn dry run off when you are ready
Start with gp2→gp3: online, reversible, and roughly 20% off every gp2 volume you own.
Four gates before anything changes
Dry run by default, human approval per action, accounts you mark read-only are never touched, and anything irreversible stays behind a separate flag you have to set deliberately.
What leaves your network
A licence check carrying aggregate counts — accounts, clusters, open findings, total identified saving. No resource ids, no account ids, no per-service cost. That is the whole list.
Most tools report what they think they saved.
CloudPilot reports what your bill actually did.
From the pricing model
Shown on every finding, useful for prioritising, and labelled an estimate wherever it appears. Reserved Instances and Savings Plans are not modelled, so forecasts for covered resources overstate the benefit — the docs say so rather than hiding it.
Measured, not claimed
For each executed action, the affected Cost Explorer service's average daily spend over the 14 days before is compared with the 14 days after, scaled to a month. Both daily rates ship with the number. Dry runs count as zero.
Start on the free tier. No key, no card.
Cost visibility for one AWS account, with all 19 detection rules. Add a licence when you want multi-account, Kubernetes allocation and automated remediation.