Start
How it works
One request, from the moment it is sent to the moment the worker is paid.
The life of a request
1ClientAPI call or chat message, credits reserved
2Orchestratorpicks a trusted worker that has the model loaded
3Workerruns the model on its GPU, streams tokens
4Settlementexact debit, worker credited, treasury filled
- Request. A client sends
POST /v1/chat/completionswith an API key, or types in the chat. The orchestrator reserves the request's maximum cost (prompt plusmax_tokens) from the balance. - Match. The orchestrator keeps a live table of connected workers: which models they have loaded, their measured speed, their reliability and their check record. It sends the job to the best free worker for that model. If all are busy, the job waits in a queue for up to 30 seconds.
- Serve. The worker runs inference locally (WebGPU in a browser, Ollama on a node) and streams tokens back through the orchestrator to the client, in real time.
- Settle. When the job ends, the orchestrator counts the tokens, debits the exact cost, refunds the rest of the reservation, credits the worker and adds the margin to the treasury, in one database transaction.
How a worker is chosen
A worker only receives paid jobs after passing its first hidden check. Each candidate then gets a score from:
- Throughput: tokens per second on its recent jobs for that model.
- Reliability: share of accepted jobs completed without error or timeout.
- Trust: its record on hidden checks (see anti-cheat).
The highest score wins, with a random factor of plus or minus 15% so new workers get traffic and no single worker takes everything.
When a worker drops
- Before the first token (disconnect, crash, no answer within 45 seconds): the job moves to the next best worker. The client does not notice. Up to three attempts.
- Mid-answer (disconnect, or 20 seconds without a token): the stream ends with a
worker_losterror, the client is not charged at all, and the worker is not paid.
Both cases count against the worker's reliability.
How the money moves
| Step | Split |
|---|---|
| User buys credits | 1 credit = $0.001, paid in ETH on Robinhood Chain at the live ETH price. Credits never expire. |
| Job completes | 70% of its value to the worker (80% if staked), the rest to the treasury |
| Daily payout | Every worker wallet owed $1 or more is paid in ETH |
| Daily treasury run | 50% buys back and burns $MASON, 50% shared between stakers, paid in ETH |