prices should not need an engineer
For most of this project, changing what a model costs meant editing JSON, opening a merge request, waiting for CI, and playing a deploy job. Perfectly safe. Completely wrong.
Pricing is the fastest-moving number in a marketplace. When a measurement shows that hosts are earning less than their electricity, the price has to move that afternoon — not after a release window.
two layers, on purpose
The shipped price book is still there. It is what a fresh environment starts from, what the coherence tests read, and what a deploy carries. What changed is that an operator override now beats it, set from the dashboard and applied to the very next job.
There is a reset next to every overridden price. The way out of a bad edit is one click back to what shipped, which is the property that makes editing prices in a web form acceptable at all.
the guard rails are the interesting part
A price form that accepts anything is a liability. The same invariants our build-time tests enforce are enforced again on write, because this path bypasses the file:
- A model that does not exist cannot be priced. An id with no catalogue entry is a model customers can call and no host can serve — we shipped exactly that bug once, and the tests exist because of it.
- Output can never be cheaper than input. Almost always a typo, and an expensive one.
- Nothing is free. A zero would make hosts work for nothing.
- The promised context cannot exceed what the least capable build serves. A customer cannot choose which host answers them, so the promise has to hold on the smallest one.
The form shows those limits rather than discovering them: each row displays the model's size, the smallest card that can serve it, and the context ceiling the least capable build imposes. It also previews what a host measuring 60 tokens per second would earn at the price you are typing — because that is the number that decides whether anyone will serve it.
and it is written down who did it
Every change records the operator and the timestamp. Pricing moves money between us and the hosts; "who set 0.75, and when" has to have an answer.
Meanwhile, if the database is unreachable, the shipped prices keep serving. A pricing lookup must never be the reason a job fails.
What you pay, and why it moves · Current prices · What that pays a host
Read next
one model, every card: how a 27b runs on 8 gb
Qwen3.8 27B ships in five builds, from Q5_K_M on a 24 GB card down to IQ2_XXS on 8 GB. Why we split models from builds, what quantization actually costs, and how a quantized KV cache doubled our context overnight.
we stopped projecting your earnings and started measuring them
Most GPU marketplaces advertise what a card could earn. Our dashboard shows what yours measured, and refuses to show a number until it has one. Here is why that choice cost us a nicer-looking page and was still right.