Fees & unit economics
7% of cleared volume, no spread-taking. The router earns by growing the market, not by widening it.
The router has exactly one revenue line: a fee of 7% of cleared volume (700 basis points, the ROUTER_FEE_BPSconstant), deducted from each provider's netted payout at epoch close. The customer pays the cleared second-score price; the provider receives 93% of it; the 7% difference is the router's take. There is no markup, no margin on the price itself, and no subscription.
That last part matters. Most inference routers monetize a spread: buy capacity at one price, resell it at another, and keep the difference invisible. Omnious cannot do that even if it wanted to, because the clearing price is receipt-verifiable. Every receipt carries the cleared per-token prices, and /v1/analytics reconstructs the whole auction, including what every losing quote would have charged. A hidden spread would show up as arithmetic that does not add up, and reconcile.ts checks that the books balance to zero every epoch.
Why a percentage take, not a spread
A spread-taker earns more when the gap between what customers pay and what providers receive widens. A percentage-taker earns more only when cleared volume grows. Volume grows when prices fall and quality rises, so the router's profit motive points the same direction as the customer's interest: run the most competitive auction possible, admit the cheapest honest providers, and publish enough data that nobody has to trust the operator. The fee aligns the house with the market instead of against it.
A worked request
The design doc's unit-economics sketch, for an illustrative request of 1,000 input and 500 output tokens on a 70B-class model:
| Item | Amount |
|---|---|
| Winning bid, input | 1,000 × $0.20 / 1M = $0.0002 |
| Winning bid, output | 500 × $0.60 / 1M = $0.0003 |
| Provider revenue | $0.0005 |
| Router fee (7% of the clearing price) | ~$0.000035 |
| Network fee (gas-sponsored on HyperEVM) | ~$0 |
| Customer pays | ~$0.0005 |
For the full anatomy of a customer bill, including the second-score premium, see What you actually pay. For how the payout side works, see Getting paid.
- router/src/config.ts the routerFeeBps constant (700 = 7%)
- router/src/payouts.ts epoch netting: payouts minus the fee
- router/scripts/reconcile.ts the independent money invariant check