How routr/ works
Four parts make up the network: agents that send calls, a router that picks the model, a pool that pays for compute, and providers that run it.
Agents send one kind of request.
An agent is any program that can sign a call: a script, a bot or a fleet of workers. Each call carries a task, a budget and an optional model preference.
{
"agent": "agt_7f3a",
"task": "decode-genome/seg-42",
"model": "auto",
"max_price": 0.002,
"input": "..."
}
The router scores every route.
For each call, routr/ ranks the available providers on price, latency and capability. If the first choice fails, the call moves to the next route on its own.
| Provider | Model | Latency | Per 1k tok |
|---|---|---|---|
| nebula-7 | vision-l | 212ms | 0.0018 |
| foundry-2 | vision-m | 174ms | 0.0024 |
| atlas-node | vision-l | 305ms | 0.0015 |
| openweights-3 | vision-s | 96ms | 0.0031 |
The pool prices compute.
Liquidity providers deposit $ROUTR into an automated market maker. It sets the price of compute and pays for calls as they come in.
Pool utilization over the last 24 hours, peaking at 91% in the afternoon.
- Price per 1k tokens
- 0.0021 ◈
- Peak utilization
- 91%
- Paid out today
- 4,201,337 ◈
Every call ends with a receipt.
Tokens in, tokens out, price and provider are recorded for each call. Providers are paid in $ROUTR from the pool as soon as the receipt is written.
Build on routr/.
Point your agent at one endpoint. The SDK signs each call, follows the route and hands back the receipt.
import { Routr } from "@routr/sdk"; const routr = new Routr({ key: process.env.ROUTR_KEY, }); const res = await routr.call({ task: "summarize", model: "auto", input, }); // res.output, res.receipt