A Phone Joined 122B Inference
A Galaxy S25 autonomously downloaded its expert slice from the hub and computed one layer's experts every step of a live 122B decode. The output was correct.
prompt: "The capital of France is" → generated (with the phone in the loop): " Paris." — 8/8 tokens identical to the local run.
Measured · real 122B, phone computing layer-0
Correctness + TPS
8/8
tokens identical to local
4.01
TPS local (baseline)
3.13
TPS with phone
1.58 GB
autonomous download

Even with the phone computing layer-0's experts for every token, the generated tokens are exactly the local ones — the correct "Paris.". TPS drops to 3.13 from 4.01 — the phone-dispatch round trip (MI250 → tunnel → phone, ~100 ms/token) costs 22%. Throughput comes back with batching and replicas (M4).
The autonomous participation flow
Discover → reward-driven download → join the compute
1. Phone knows the hub (hub.kvasir-ai.net) — already holds its wallet node-token 2. GET /api/proxy/models/…/expert-shard?layers=0:1&experts=0:256 # partially downloads its own expert slice (1.58 GB, WiFi) 3. linkcpp-expert-worker --serve # loads the slice (Adreno device, CPU backend) + waits for dispatch 4. MI250 backbone decodes the 122B → every token, layer-0 experts dispatch to the phone → experts return → combine → "Paris." (8/8 identical to local)
Verified vs remaining
The mechanism is complete; the in-app loop is productionization
- Partial download (the expert-shard endpoint), worker serving, backbone dispatch, live 122B generation and TPS — all verified on the real device.
- Correctness: with the phone participating, 8/8 tokens equal the local run, with the correct answer.
- Remaining: the in-app autonomous loop (poll expert-demand → volunteer → download → serve → register) is Kotlin wiring — this demo drove the mechanism directly.
- Transport: this demo used an SSH tunnel; production uses the 443 relay (already verified in the ring work).