Worker guide
A worker is the desktop app serving your local Ollama models. Running one is a one-click choice in the app; there is no CLI setup and no account.
Requirements
- macOS 13+ (Apple Silicon or Intel) or Windows 11.
- Ollama — the app installs and supervises it if it is missing.
- A wallet on Base Sepolia. Test USDC comes from the faucet; it has no value.
- Enough disk for the models you choose (7B models are ~4–5 GB).
1. Install and start
Open the app, choose Run a worker, and let it install or attach to Ollama. The app starts Ollama, pulls the selected model if needed, and shows a status card when the worker is ready.
2. Pick models
Only models that Ollama can serve locally are listed. A worker serves one model per offer; you can create several offers if you have the disk and VRAM.
3. Set your price
The price is an hourly quote that you type. There is no suggested price and the app never lowers it. Billing accrues per started minute, so:
| Quote | 2-minute job pays |
|---|---|
| 6 USDC / hour | 0.2 USDC |
| 30 USDC / hour | 1.0 USDC |
4. Register
Registration writes your peer ID and policy hash to WorkerRegistry. It costs
gas on Base Sepolia. Re-registering keeps your original registration time.
5. Reachability
Before you can serve, the app checks whether peers can actually reach you. Symmetric NAT without a relay, a blocked inbound port, or a campus network that filters inbound IPv6 will fail the check.
- IPv6 is opt-in. The app does not rely on it by default.
- Relays are handshake-only. They are not a way to serve a whole session.
- Public locator is opt-in. Publishing your IP is permanent and cannot be undone by deleting the app.
6. Earn and withdraw
Settled sessions accrue to your worker wallet. Call claim() in the app to
move the balance out of JobEscrow. The treasury takes 1%; you keep 99%.
Troubleshooting
| Symptom | Likely cause |
|---|---|
| Worker registers but no sessions | Reachability check failed; check NAT and firewall |
| Ollama runs but the app says offline | Ollama bound to 127.0.0.1 on a port the app does not expect |
| Sessions open then refund | Worker did not produce a signed receipt before the timeout |
| Balance not moving | Settlement is per session; claim() is a separate step |
What the app sends
Usage reporting is disabled. The app talks to the chain via a public RPC, to workers via libp2p, and to GitHub Releases for updates. It does not send prompts, file names, or model names to GenKaKu Labs.