Flat pricing — "10 credits per message" — is easy to understand and quietly unfair.
A one-line question and a forty-turn debugging session are not the same amount of work. Under flat pricing, the person asking quick questions subsidises the person running long sessions on a large model.
What we do instead
Every completion reports its prompt and completion token counts. We multiply the total by
a per-model rate and round up to at least one credit. The rate lives in config/ai.php,
so a model price change is a one-line edit.
Every deduction is written to an append-only ledger with the model, driver and token counts attached. Your balance is a cached number; the ledger is the truth, and it can always be replayed to recompute it.
The one exception
Personas can be configured with a flat credits_per_message — useful for premium
personas where you want predictable pricing regardless of conversation length.