How routing works
The Topo Router picks a node for every request in a few milliseconds, scoring live latency, load, reputation and price across 40+ regions.
The request path
- 01
Authenticate
The router checks the key or wallet signature, the key's scope and the wallet balance at the edge, in under 3 ms.
- 02
Filter
Only nodes that have the model loaded, satisfy any region pin and hold enough stake for the request's value are eligible.
- 03
Score
Each eligible node is scored on recent time to first token, queue depth, verification history and price.
- 04
Dispatch
The best node gets the request and the runner-up is held in reserve. If no first token arrives within 600 ms, the runner-up starts too and the faster stream wins.
- 05
Verify and settle
Attestors re-run a sample, the node signs a receipt, and the cost settles in the next batch.
Scoring
score = 0.45 × latency + 0.25 × load + 0.20 × reputation + 0.10 × price| Signal | Measured as | Window |
|---|---|---|
| Latency | Time to first token, p50, from the caller's region | 5 minutes |
| Load | Queue depth and free GPU memory | Live |
| Reputation | Share of sampled requests that matched the attestors | 30 days |
| Price | The operator's ask against the model's list price | Live |
Regions
| Region | Location | GPUs | p50 TTFT |
|---|---|---|---|
us-east-4 | Virginia | H100, B200 | 164 ms |
us-west-2 | Oregon | H100, 4090 | 171 ms |
eu-west-2 | London | B200, H100 | 182 ms |
eu-central-1 | Frankfurt | H100 | 176 ms |
ap-northeast-1 | Tokyo | H200 | 189 ms |
ap-southeast-1 | Singapore | H100, 4090 | 198 ms |
sa-east-1 | São Paulo | 4090 | 231 ms |
Pinning and priority
Pass topo.region to keep a request in one region (Max and Enterprise), and topo.priority: "priority" to skip the standard queue at peak (Builder and up).
{ "model": "claude-sonnet-5.5", "messages": [{ "role": "user", "content": "Classify this support ticket" }], "topo": { "region": "eu-west-2", "priority": "priority" }}