Skip to main content

Run a worker

A worker is a DeepSeek Harness plugin that shares the models already installed on this machine, at a price you set. It runs Ollama locally; there is no cloud API key and no metered inference bill.

Requirements​

  • DeepSeek Harness 0.2.2-rc.1 or newer, and Node 22+.
  • Ollama with at least one model pulled (ollama pull qwen3:8b, for example).
  • A Base Sepolia wallet with a little test ETH for gas. The plugin generates one for you.

There is no GenKaKu token and no staking. You earn USDC; you spend ETH for gas.

Install​

In DeepSeek Harness open Plugins → Add plugin, paste:

@genkaku/dsh-worker-plugin

Leave the install source on Default registry (registry.npmjs.org), confirm, and restart DeepSeek Harness. The same thing from a shell:

dsh plugin add @genkaku/dsh-worker-plugin

A GenKaKu worker entry appears in the sidebar.

First start​

The plugin looks for Ollama at http://127.0.0.1:11434 and starts ollama serve itself if it is installed but not running. The first panel section shows whether Ollama is running and how many models it found.

When the offer board is empty, the plugin lists every local model at defaultPricePerHour, which is 0 by default. That is deliberate: a machine whose owner has not set a price should not put a price on their hardware.

Set a price​

Open Models offered in the panel and give each model an hourly price in USDC, as an integer with 6 decimals of precision (so 250000 is 0.25 USDC/hour). Leave it at 0 to serve the model for free.

  • A paid model opens a USDC escrow per session and settles with a signed receipt.
  • A free model is served without touching the chain: no escrow, no gas, no transaction.

Billing accrues per started minute of a session, so a two-minute job pays two minutes at the hourly rate, not a full hour.

Publish on-chain (optional)​

The Directory switch writes your peer ID and locator into WorkerRegistry, so users can find you without knowing your address in advance.

It is off by default, and it only turns on when this machine has a globally dialable address. A listing whose address nobody can dial is worse than no listing. Publishing costs one transaction, and a locator is permanent once it is on-chain — a hostname or IP written there cannot be withdrawn, only replaced.

Peers on the same LAN can connect without a registry entry, using a manual multiaddr in the user plugin.

Wallet and payout​

The Wallet section shows:

  • the worker address,
  • ETH (gas) and USDC (earnings) balances,
  • unclaimed in escrow — settled income that is already yours but still sits inside JobEscrow,
  • a Claim button that moves that balance into the wallet.

Claiming is a transaction, so the wallet needs a little ETH. USDC is what the worker earns, not what it spends.

The private key is stored in plain text, mode 0600, at ~/.dsh/genkaku/genkaku.keys.json. It signs receipts and binds the on-chain directory entry: back it up before moving the machine to a new disk, and treat anyone who can read that file as the owner of the wallet.

Model tiers​

The marketplace labels each model from Ollama's reported capabilities and parameter count:

TierMeaning
agentHas tools and at least 9B parameters — suitable for an agent loop
lightHas tools but is small or of unknown size — tool calls may be unreliable
chatNo tools capability — not suitable for agents

The tier is a label, never a filter. Nothing stops you listing a chat model; the user just sees that it cannot drive an agent.

Thinking models run with think: false by default so a single request does not spend its budget on hidden reasoning. Set GENKAKU_OLLAMA_THINK=1 before starting DeepSeek Harness to keep Ollama's default behaviour.

Ports and networking​

  • libp2p listens on /ip4/0.0.0.0/tcp/4001 and /ip6/::/tcp/4002 by default. Open the TCP ports you configure if you want direct connections.
  • The local status server binds the first free port in 47821–47826. Two DSH profiles on one machine each need their own port; if you see "Loading worker status…" forever, another profile probably owns the range.
  • On Windows, allow Node through the firewall when the worker first starts.

Troubleshooting​

Ollama is not detected. Run ollama serve once, or press Start Ollama in the panel. If Ollama lives elsewhere, change ollamaHost in the plugin settings.

The Directory switch is greyed out. The machine has no globally dialable address. Same-LAN peers can still connect by multiaddr; otherwise the session will have to go through the seed relay.

A session was served but the balance did not move. Settlement credits accrued inside the contract. Press Claim; the figure then appears as the wallet's USDC balance.

Nothing is listed on npm? Check that you are on registry.npmjs.org, not a mirror that has not synced yet.