All figures are estimates built from list prices for the resources Ankra can see. Use them for trends, right-sizing and chargeback, not for reconciling an invoice to the cent.
Get a number for every cluster
Ankra prices a cluster once two things are in place:- A price source for its capacity. For a public provider, a cloud credential for that provider. For Proxmox VE, VMware, HPE Morpheus or your own hardware, a rate card.
- The cluster online, so the agent can sync its nodes and volumes.
The fleet totals also appear on the Dashboard.
Where the prices come from
Hetzner. A server ordered before the 2026-06-15 price increase is priced from the earlier list. Without a Hetzner credential, Ankra uses its built-in copy of the list and reports
medium confidence instead of high. A server that ran for only part of the month reads slightly low, and servers outside the cluster, such as CI runners in the same project, are not in any cluster’s estimate.Private capacity: rate cards
Proxmox, VMware, Morpheus and imported hardware have no published price, so you state what the capacity costs. A rate card is three monthly rates in your own currency: per vCPU, per GB of memory and per GB of provisioned storage. Ankra multiplies them by what each cluster holds. The card lives on the credential that provisions the capacity, so every cluster built from one Proxmox datacentre inherits the same rates. Set it under Credentials → your credential → Pricing.- Proxmox ships with defaults of EUR 3.00 per vCPU, 0.75 per GB of memory and 0.02 per GB of storage per month, labelled Ankra defaults. Saving the form makes them your own; clearing it returns to the defaults.
- Other private providers have no defaults, so their clusters stay not priced until you set rates.
- Imported clusters with no provider credential use the organisation’s own rate card, if you set one.
Read the fleet by credential
A cloud bill arrives per account, and an account is what a credential holds. The Credentials tab groups spend by provider, then by the credential that actually built each cluster. Each live credential opens its own page with its clusters and, for private capacity, its rate card. A deleted credential keeps its name in the list while its clusters still cost money, and clusters with no recorded credential, such as imported ones, collect into one No credential recorded row per provider.Attribute spend to teams
Every hour Ankra allocates each cluster’s cost to its namespaces by their share of CPU and memory. The Workloads tab joins that allocation to names you recognise: the stack a namespace belongs to, the add-ons in it and the applications installed into it. Rows are ranked by monthly cost and can be filtered by cluster, which gives you a chargeback view per team. The tab shows the 500 costliest rows.Cut waste
Savings turns the same data into actions, each with an estimated monthly saving:- Right-size idle capacity. When a large share of a cluster’s run rate sits idle, Right-size with AI opens Ankra’s AI on that cluster. It proposes scaling changes and applies nothing until you confirm.
- Stop non-production clusters off-hours. A non-production cluster running around the clock on a provider with power schedule support gets Add off-hours schedule. It creates two schedules in UTC: weekdays at 19:00 the worker servers are deleted, at 07:00 new ones are created, and weekends stay down. The control plane, etcd, cloud volumes and addresses are kept and keep billing. Data on the workers’ own disks is lost at every stop. A cluster without a known environment label is never offered this.
- Reduce unallocated spend. Raised when a quarter or more of a cluster’s run rate is not allocated to any workload.
Orphaned and idle resources
A waste scan runs every six hours and lists resources that bill while doing no work:
Each finding shows its monthly cost, or “price unknown”, and Resolve with AI opens a chat naming the exact resource. The provider-side scan covers Hetzner accounts; the released-volume check covers every cluster. A credential that could not be listed is shown as a partial scan, not as “no waste”.
Per-cluster drill-down
Open a cluster from Clusters, Savings or the Overview to see what to change on it and why it is safe:- Cost trend over the last 30 days, and where the money goes: compute (on-demand and spot), storage, network, control plane, and Bastion and VMs, with idle and unallocated portions.
- Node evidence: for every node, the measured average, p95 and peak CPU and memory over 24 hours, 7 days or 30 days, against what the scheduler reserved. Each node gets a verdict: underutilised (p95 fits well under the reservation on both CPU and memory, with the saving from sizing to 1.5 times p95), spiky - keep headroom (never called safe to downsize), well sized, or no metrics.
- Recommendations with that evidence attached, namespace costs, and the cluster’s waste findings.
What if the node groups changed?
Under the breakdown, a what-if draft lists the cluster’s node groups (node count, vCPU, memory, disk and GPUs per node) and its load balancers. Change a count, resize or add a group, or add a load balancer, and the panel shows today’s bill, the predicted bill and the change. Nothing is saved or applied; Discard draft or a reload clears it. The prediction is today’s bill plus the priced difference between the draft and today, so only what you changed moves the number. A resized group lands on the cheapest published size that holds its vCPU, memory and GPUs, keeping its CPU architecture, and the panel names the size. Private capacity is priced from the cluster’s rate card. Pick another provider to price the same draft there, including from private capacity. A group with GPUs is placed only on a GPU size and keeps its card where a size carrying it fits; a group without GPUs is never placed on one. On UpCloud every GPU plan in the price book is a size, and a GPU group marked Spot lands on the matching spot plan. Where a provider’s price book records no GPU sizes, the group reads Not priced instead of taking a CPU size of the same shape. A group nothing can price reads Not priced with the reason. Scripts can use the same estimate: see What-if estimate.Compare providers
Compare providers, a button on the cluster’s cost page, prices the whole bill (node groups, the control plane Ankra provisioned, volumes and load balancers) on every provider Ankra can build on, side by side.- DigitalOcean, Hetzner, OVHcloud, Scaleway and UpCloud price from Ankra’s list-price book.
- AWS, Google Cloud and Azure price from their per-region catalogues, and each column names the region it used. AWS offers every current-generation EC2 type except Apple Mac hosts, burstable T instances included. Google Cloud and Azure offer only the families whose shape can be read from the size name: general-purpose and compute-optimised, plus Azure’s memory-optimised E series. Which sizes each hyperscaler offers.
- Proxmox VE and HPE Morpheus price per unit of capacity from a rate card, and the column says which card.
- Like-for-like (the default) keeps each group on the same vCPU class, shared or dedicated, where the target sells one. The class of each provider’s sizes is listed in the reference.
- Cheapest size that fits ignores class. Under like-for-like it stays as a footnote on each column.
Settings
Each member can set Your display currency under Cost → Settings, and every cost figure they see, including provider quotes in the cluster-create wizards, renders in it. Organisation admins set the defaults:- Currency - the organisation default: EUR (the default), USD, GBP, SEK, NOK, DKK, CHF, PLN, CZK, JPY, CAD, AUD or INR.
- Effective discount - a flat 0-100% discount on list prices, to approximate committed-use or enterprise agreements.
- Network egress estimate - whether to add an estimated egress component.
From the CLI and Ankra AI
-o json. See the ankra cost reference for savings, the ledger and per-object cost, and the Cost API reference for field meanings.
In chat and over MCP, Ankra’s AI reads the same figures with get_fleet_cloud_cost, get_cluster_cost, get_stack_cost, get_cloud_savings and get_cost_settings. Changes need an mcp:write token and the same permissions as in the portal.
Budgets and the cost autopilot
A budget is a monthly amount for the organisation, one cluster, one environment label or one application. It shows spend so far, the projected month end and the hour it would cross the budget. Ankra sends a Budget crossing notification when the projection reaches the alert threshold (80% unless you set another). Route it with notification routing. The cost autopilot decides how much Ankra may do about cost without asking. Each environment kind (production, staging, development, preview, unknown) takes a tier: hands-off, scheduled, managed or ephemeral. An organisation that never set a policy is hands-off everywhere, so every change waits for a person. You can override one cluster’s tier and set daily quiet hours.billing.manage permission; changing the autopilot also needs clusters.write. Ankra’s AI uses get_cost_budgets, set_cost_budget, get_cost_autopilot and update_cost_autopilot.
Next: stop idle clusters on a schedule with power schedules.