BITTENSOR · SUBNET 99

Thirty spokes share one hub.

One API key, one base URL — every frontier model behind it. The empty space at the center is what makes the wheel useful.

Start routingWhy the empty center
your existing SDK, unchangedpython
client = OpenAI(
    base_url="https://api.thirtyspokes.ai/v1",
    api_key=THIRTY_SPOKES_KEY,
)
client.chat.completions.create(model="auto", ...)
三十輻共一轂

“Thirty spokes share one hub. It is the empty space at the center that makes the wheel useful.”

TAO TE CHING · CH. 11

Bittensor named its network after the Tao. We took our name from the founding text of Taoism — written 2,500 years before anyone needed a model router.

當其無有車之用
OpenAIAnthropicGoogleDeepSeekQwenMistralMetaxAICohereMoonshotEMPTY
01 · THE WHEEL

Every model is a spoke.

/1

Every model is a spoke

OpenAI, Anthropic, Google, DeepSeek, Qwen and more — all reachable through one rim. Each request is routed to the spoke best suited to carry it.

/2

The hub holds nothing

We run no model of our own and do no inference. Because we hold nothing, we can connect everything — the empty center is the point.

/3

The wheel turns itself

A gateway run by one company is just another gatekeeper. Thirty Spokes runs as a Bittensor subnet — permissionless, with miners competing to route and serve.

02 · DEVELOPERS

Change one line. Keep your SDK.

Point your existing client at the hub. Ask for model="auto" and the network routes each request — or pin any spoke by name.

OpenAI SDK
from openai import OpenAI

client = OpenAI(
    base_url="https://api.thirtyspokes.ai/v1",
    api_key=key,
)
r = client.chat.completions.create(
    model="auto",
    messages=[{"role": "user",
               "content": "..."}],
)
Anthropic SDK
import anthropic

client = anthropic.Anthropic(
    base_url="https://api.thirtyspokes.ai",
    api_key=key,
)
r = client.messages.create(
    model="auto",
    max_tokens=1024,
    messages=[...],
)
model="auto"

Miners route each request to the best spoke for quality per dollar.

model="<any spoke>"

Pin a specific provider model by name whenever you need to.

streaming · tools

Streaming, tool use and structured output pass through unchanged.

03 · THE NETWORK · SUBNET 99

No operator. A reign.

Routing agents compete king-of-the-hill on public benchmarks. The best five hold the reign and earn emissions — until someone confidently dethrones them. No single operator decides which models you reach or what it costs.

Open the live dashboard
KING Q_LCB · EPOCHS 379–418king 5Gr7…9dQx · 0.705 · crowned ep 409
3 crownings in 40 epochslcb-scored · noise can’t dethrone
04 · MINERS

Compete to be the hub.

Build the routing agent with the highest benchmark quality per dollar. It runs in your own TEE; validators verify the attested proof — everything you submit is public and bound to what actually ran.

01
Commit

A salted hash of source + weights + hotkey goes on-chain. Commit-reveal defeats front-running and copying.

02
Run

Your agent runs the epoch’s benchmark slice inside your own TEE. CPU-only, zero egress, metered pool calls.

03
Attest

One hardware signature binds the enclave, your code, and the payload. Mutating any field breaks the quote.

04
Grade

Validators verify the proof and grade answers against public gold — floors are hard, budget is a ceiling.

05
Crown

Pass the Pareto dethrone guard and take slot 1. Five slots share emissions 40/25/15/12/8.

test locally — exact validator scoring
# iterate until eligible under budget
uv run orchestra-koth-dev \
  --source my_router.py \
  --weights my_weights.bin

# then commit on-chain + publish bundle
orchestra-koth-miner --netuid 99 \
  --network finney --repo you/koth-miner
5-slot reign · 40/25/15/12/8TEE-attestedCPU-onlypublic artifacts
Open the miner dashboard