What models cost
How Loomplane prices a deployed model by the hour and the month, why an unknown price stays unknown, and how budget alerts reach admins without ever stopping a model.
A GPU costs money every hour it's on, whether the model on it gets traffic or not. So every model shows what it costs: on the Deployed tab (Per hour and This month for each row, and the GPU models' hourly total above them) and in the Cost section of its page, which adds a projection for the month.
Cost per hour
Loomplane prices the GPUs a model holds, by where it runs:
| Where it runs | Price | Shown as |
|---|---|---|
| A DigitalOcean GPU server Loomplane created for the model | The whole server's price from DigitalOcean, while nothing else holds a GPU there | "$12.56/hr", "The server's price for 8 of 8 GPUs." |
| A GPU server Loomplane created that other workloads share | The server's price for the share of its GPUs the model holds | "$1.57/hr", "The server's price for 1 of 8 GPUs." |
| A Kubernetes cluster | The node's list price, for the model's share of its GPUs | "~$0.82/hr", marked estimate |
| A server you connected yourself | Unknown, until you set one | "Price unknown" |
| CPU, on any server or cluster | Part of that server's own cost | "Runs on CPU. Its cost is part of gpu-1." |
List prices are reference prices, not your bill. Anything from them says "estimate".
A server Loomplane created for a model was bought for that model, so the model pays for all of it, even when it needs one GPU of eight. The deploy dialog, the model's page, the month and the budget alerts all use that price. Once another model or service holds a GPU on the same server, each one shows its share instead, and the server's other GPUs aren't charged to anyone.
A model on CPU never shows $0.00. It has no GPU of its own to price, so its cost is the server's, and its page says which server. It has no projection and no budget alert.
Setting a price
When Loomplane can't price a GPU, or you pay something else for it, open the model's page and type the hourly figure into It costs me per hour, then Save price. Your price wins from then on, in the hourly figure, the month, the projection and the budget alert. Clear it to go back to the list price.
Unknown stays unknown
An unknown price is never shown as $0.00, and it's never added in as zero. The model's row says "unknown", the Deployed tab counts it apart ("GPU models cost about $3.40/hr together, plus 1 with an unknown price."), it adds nothing to the month, and it sends no budget alert. When a price becomes known later, Loomplane counts from then on and doesn't charge the time before.
This month and the projection
Every five minutes, Loomplane adds what each model cost since the last count to its month. A model counts while it's Deploying or Ready, at the price of the GPUs its engine actually holds, or of the whole server when Loomplane created that server for it and nothing else holds a GPU there. Months are calendar months in UTC. A count that runs past midnight UTC on the first gives the minutes before midnight to the month that's ending, then starts the new month from zero. Those last minutes don't send a budget alert, and once the new month starts, the page shows only the new month.
Projected is this month so far plus the hourly price for every hour left in the month. The deploy dialog quotes a simpler figure before anything runs: the hourly price times 730, as "about $1,146/mo while it runs".
A model you added to loomplane.yaml by hand shows its hourly price, but Loomplane keeps no month, price or budget for it. Deploy it from the Models page if you want those.
Budget alerts
Give a model a monthly budget in the deploy dialog under Budget alert, or later on its page under Budget alert per month, then Save budget. It's a dollar amount above 0, up to 100,000.
Two notices can go out each month:
- "qwen2-5-7b-instruct is on track to cost $1180.00 this month", once the projection reaches the budget.
- "qwen2-5-7b-instruct passed its $1000.00 budget", once what it cost this month passes it.
Each goes out once a month. Change the budget and the new amount gets notices of its own.
They go to workspace admins (everyone with ai:manage) in their Loomplane inbox and by email, whatever their email preference, and to your webhook endpoints as model.budget_projected and model.budget_crossed. Developers and viewers don't get them.
A budget is an alert, never a cutoff. Loomplane never stops a model, scales it down or moves it because of its budget, since that would take every service that uses it offline. The notice says so, and links to the model, where you can move it somewhere cheaper or remove it.
Anyone who can change the model can set its budget and its price: ai:edit, or ai:manage in production.
What the model's cost leaves out
The figures are the model's share of its GPUs, or its whole server when the model has that server to itself. They aren't your cloud bill. A GPU server Loomplane created for a model bills for all of it, even once other workloads share it, from the moment it's created until you delete it in Infrastructure. Removing or moving the model doesn't delete that server, and the model page tells you when one is left behind. While a model moves to a new GPU server, both places bill once the new one is up, and the page shows the new server's price beside the old.
Spend and traffic covers what your Clouds cost as a whole.
Models
Browse the model registry, deploy a model in one click on a GPU or a server you have, run it in more than one environment, link services to it, and move or remove it later.
AI settings
Turn the AI section on, add the Hugging Face token gated models download with, and point Loomplane at a Hugging Face mirror.