Skip to main content

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:

Quote2-minute job pays
6 USDC / hour0.2 USDC
30 USDC / hour1.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​

SymptomLikely cause
Worker registers but no sessionsReachability check failed; check NAT and firewall
Ollama runs but the app says offlineOllama bound to 127.0.0.1 on a port the app does not expect
Sessions open then refundWorker did not produce a signed receipt before the timeout
Balance not movingSettlement 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.