Pricing & credits
Tanvrit Compute has a simple pricing model: self-hosted nodes are always free, and Tanvrit-hosted compute is metered against a credit balance.
Self-hosted nodes — free, forever
If you run your own tanvrit-agent workers (on a laptop, a desktop, a NUC, a Raspberry Pi cluster, or a cloud VM you own), there is no charge. You can register an unlimited number of nodes and submit an unlimited number of jobs against them. The control plane is happy to schedule jobs onto self-hosted pools all day long.
This is the default mode for individuals, OSS projects, and teams who already have hardware.
Free tier — $30/month credit on Tanvrit-hosted compute
Every account gets $30 of free credit per month to spend on Tanvrit-hosted nodes. The credit refills on the first of each month and does not roll over. This matches Modal's free tier and is enough to:
- Run roughly an hour of GPU inference, or
- Run several hours of CPU CI builds, or
- Render a few minutes of Blender output.
No card is required to use the free tier. If you exhaust your credit before the month resets, jobs against Tanvrit-hosted pools will be rejected with a 402 — but jobs against your own self-hosted pools will continue to schedule normally.
Pay-as-you-go (post-MVP)
Per-second metering on CPU, RAM, and GPU is on the roadmap but not yet live in the MVP. When it ships, the model will be:
- CPU: charged per vCPU-second.
- RAM: charged per GiB-second.
- GPU: charged per GPU-second, by SKU (T4, L4, A10, A100, H100, …).
There will be no minimum, no commitment, and no egress charges between Tanvrit-hosted nodes. Per-second pricing will be published on the pricing page when the meter goes live.
Until then, the free tier is the only path to Tanvrit-hosted compute.
Enterprise
For dedicated pools, regional placement, SSO/SCIM, a 99.9% SLA, and HIPAA/SOC 2 attestations: contact sales at compute@tanvrit.com. Enterprise contracts are quoted per-month against committed capacity, with overage billed at the pay-as-you-go rate.
How credit charging works
In the MVP, the credit ledger uses a deliberately simple unit:
> creditCost = durationMs — one credit is approximately one millisecond > of wallclock runtime.
The cost is computed at job completion (success, failure, or cancellation — all consume credits, since the underlying agent burned cycles either way). The control plane writes a credit_ledger row with:
account_idjob_iddelta(negative for spend, positive for top-ups)balance_afterbucket—freeorpaidcreated_at
When pay-as-you-go ships, this formula will be replaced with a per-second metered rate that takes vCPU, RAM, and GPU into account.
Free-tier drains first
Every job spend is debited from the free bucket first. Only after the free bucket hits zero does the control plane start charging the paid bucket. This ordering means:
- You always burn the monthly free credit before paying anything.
- A top-up to the paid bucket can sit there indefinitely without being
- Free credit that is unused on the 1st of the month is discarded and
consumed if your monthly usage stays under the free tier.
replaced with a fresh $30, regardless of any paid balance.
You can see the live state of both buckets at the top of the portal's Billing tab, and query it programmatically:
GET /api/compute/billing/balance
returns:
{
"free": { "balance": 21500000, "resetsAt": "2026-05-01T00:00:00Z" },
"paid": { "balance": 0 },
"currency": "credits"
}
(balance is in credits — i.e. milliseconds of runtime — under the MVP formula.)