Products / For platform admins
TAIP Billing
AvailableEvery reserved GPU-hour, priced once, on a ledger that balances.
TAIP Billing treats billing as an accounting problem, not a dashboard. It charges the reservation, not the load: usage starts when the control plane places a pod on a node and ends when its last container finishes, computed the way kube-scheduler computes requests — sidecars, init containers, pod overhead, in-place resize. Queued work costs nothing. Slurm jobs are read from slurmdbd and priced like Kubernetes pods on the same hardware, with no double counting of the slurmd reservation. Price books are immutable and effective-dated, with rules by GPU model, resource pool, priority tier, storage class, or any node label. Amounts are integer micro-units, rated with exact rational arithmetic and rounded once. The ledger is double-entry and append-only — database triggers reject edits, and a transaction that does not sum to zero cannot commit. Enforcement blocks new work at three gates — a pod admission webhook that fails open, a Kueue AdmissionCheck that keeps gang jobs queued, and Slurm submission limits — and rolls out in dry run first. Spend, runway, budgets, and estimates sit in front of account owners while there is still time to act; capacity, margin, efficiency, and a daily Prometheus cross-check sit in front of the platform team.
Specification
- Version
- v1.1.3 — generally available
- Meters
- CPU core-hours · memory GiB-hours · GPU and any extended resource per device-hour (NVIDIA, MIG, AMD, Ascend) · PVC GiB-hours per storage class
- Sources
- Pods and PVCs in tenant namespaces · Slurm jobs from slurmdbd (taip-slurm)
- Pricing
- Effective-dated, immutable price books per currency · rules by GPU model, pool, priority tier, storage class, or any node label
- Money
- Integer micro-units, exact rational rating · CNY · USD · TKN credits · double-entry, append-only ledger
- Accounts
- Personal accounts with a welcome grant · organization accounts with owner / billing admin / member roles · namespace and Slurm bindings
- Enforcement
- Pod admission webhook (fails open) · Kueue AdmissionCheck · Slurm GrpSubmitJobs — dry run first, running work never killed
- Database
- Dedicated PostgreSQL on CloudNativePG · synchronous replication · 30-day point-in-time recovery · weekly restore tests
- Footprint
- Single Go binary · two replicas, leader-elected · one Helm release
- Languages
- English · 简体中文
Proof, not promises
See it in one block.
No proprietary SDKs, no rewrites — TAIP Billing meets your tools where they already are.
# pod train-resnet-0 · 2 × A100 · 16 cores · 64 GiB · team-vision
09:31 created # pending in queue — free
09:40 PodScheduled # billing starts
12:10 finishedAt # billing ends · 4 hourly slices
meter 09:40 10:00 11:00 12:00 total
nvidia.com/gpu 8.000 24.000 24.000 4.000 60.000000
cpu 0.267 0.800 0.800 0.133 2.000000
memory 0.213 0.640 0.640 0.107 1.600000
ledger debit wallet_credit 40.000000 + wallet_cash 23.600000 → credit revenue_usage 63.600000
# Σ entries = 0.000000 TKN — an unbalanced transaction cannot commit▌ Charge what the scheduler reserved, price it exactly, post it to a ledger nobody can edit. Grants are spent before cash; illustrative prices.
Capabilities
What TAIP Billing gives you
Charge the reservation, not the load
You pay for what the scheduler set aside: requests, not utilization. Billing starts at PodScheduled and ends at the last container's finishedAt — both set by the control plane, accurate to the second — with the effective request computed exactly as kube-scheduler does it, including sidecars, init containers, pod overhead, and in-place resize. Pending, gated, and unschedulable work costs nothing; a pod on a lost node stops billing when the node went NotReady.
Every accelerator, and Slurm too
Any extended resource is metered under its own name — nvidia.com/gpu, MIG profiles, amd.com/gpu, huawei.com/Ascend910B — with no code change for a new vendor. Slurm jobs are read from slurmdbd and priced like Kubernetes pods on the same nodes; the long-lived slurmd reservation is recorded as platform capacity, never billed twice.
Price books that never rewrite the past
A price book is a set of rules for one currency with an effective date. Rules match on GPU model, resource pool, priority tier, storage class, or any node label you map to a dimension; the most specific rule wins, with configurable precedence. Books cannot take effect before usage already rated — and a meter with no matching rule is reported as unpriced, so you find it before an invoice does.
A ledger that cannot be edited
Every balance change is a double-entry transaction in integer micro-units. Database triggers reject UPDATE, DELETE, and TRUNCATE; a deferred constraint rejects any transaction that does not sum to zero. Mistakes are corrected by reversals and adjustments, never edits. Rating and posting are each exactly-once, finished months seal into immutable statements, and money-moving routes accept browser sessions only — API tokens can never post, reverse, or re-price.
Block new work, never kill running work
An account with no available balance — or a blocking budget used up — cannot start new work at any of three gates: a pod admission webhook that answers from an in-memory snapshot and fails open, a Kueue AdmissionCheck that keeps gang jobs queued rather than half-admitted, and Slurm submission limits set through account-sync. Running work continues. Roll out in dry run, then switch to enforce once prices and usage look right.
People and teams, both
Every user gets a personal account on first login with a welcome grant; organization accounts are shared by owners, billing admins, and members. Namespaces, Slurm accounts, and partitions bind to an organization from a moment forward — bindings cannot be backdated — and usage inside an organization breaks down per user from the labels TAIP apps already set, or by your own project and cost-centre labels.
Spend you can act on, before month-end
Month-to-date spend against last month, a 30-day trend, spend by resource, what is running right now at its hourly rate, and runway at both the 7-day and current burn. Budgets on accounts, namespaces, or users with thresholds and a month-end forecast; estimates for a workload before you submit it. Notifications by email in English or Chinese, and to operations on an Alertmanager-format webhook.
The platform team's view
Fleet-wide usage filterable to unattributed or unpriced, exported to Excel. Capacity — allocatable against reserved against idle per pool, GPU model, or node — with cost books for capacity cost, revenue, margin, and idle value. Reserved-versus-used efficiency, a daily cross-check of billed unit-hours against Prometheus with drift alerts, and an audit log of every change.
Built to keep the money safe
Once a pod is gone its usage exists only in billing's database, so the database is its own PostgreSQL cluster on CloudNativePG: three instances with synchronous replication, continuous WAL archiving for 30-day point-in-time recovery, monthly logical dumps, and a weekly restore test verified against the ledger. If billing itself is down, the gap is closed at the last heartbeat — silence can cost the platform money, never the tenant.
How it works
From pod to ledger, one writer per stage.
- Step 01
Meter
Informers on pods, PVCs, nodes, and resource pools — plus a five-minute reconcile and a Slurm poller — turn what the scheduler reserved into time intervals, per object and per meter.
- Step 02
Rate
Every five minutes the leader slices unrated time at clock hours, price changes, and payer changes, prices each slice exactly, and commits charges and progress together — a crash never prices usage twice.
- Step 03
Post
Hourly, rated usage moves onto the double-entry ledger, credit before cash. Finished months seal into immutable statements with CSV export.
- Step 04
Gate
Every replica reads balances back into an in-memory snapshot. Exhausted accounts are held at the webhook, the Kueue check, and Slurm submission — with events, banners, and email where people work.
Who it's for
Built for these teams
- Platform teams charging back shared GPU clusters to users and departments
- Operators selling compute internally in credits or externally in real currency
- Finance and team leads who need budgets and runway, not a month-end surprise
- Organizations running Kubernetes and Slurm side by side on one price list