Skip to main content

Use network models

The user plugin adds the GenKaKu network as a model provider inside DeepSeek Harness. From an agent session you pick a peer's model the same way you pick a local one. There is no account, no email and no API key.

Requirements​

  • DeepSeek Harness 0.2.2-rc.1 or newer, and Node 22+.
  • A Base Sepolia wallet with test ETH for gas. The plugin generates one.
  • Test USDC for paid models. The panel can mint 100 test USDC on this network; it has no value.

Install​

In DeepSeek Harness open Plugins → Add plugin, paste:

@genkaku/dsh-user-plugin

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

dsh plugin add @genkaku/dsh-user-plugin

The worker and user plugins can live on the same machine. Each keeps its own wallet and settings.

Wallet​

The panel's wallet section generates a wallet on first use, or imports a 0x… 32-byte private key. It shows:

  • the address,
  • ETH (gas),
  • USDC (spendable balance).

The private key is stored in plain text, mode 0600, at ~/.dsh/genkaku/genkaku.keys.json. We never hold it and cannot recover it.

Fund the address with Base Sepolia ETH from a faucet, and mint test USDC from the panel.

Find a worker​

The panel lists what the network offers:

  • Models on the network — each row shows the model, worker, hourly quote, tier and measured latency.
  • Workers discovered — peers found through the on-chain directory and the seed relay. The count is what discovery can see right now, not a global total.

The tier label (agent / light / chat) comes from the worker's Ollama capabilities. Only agent models are meant to drive a tool-calling agent loop; chat models are marked not suitable for agents, but nothing prevents you from using one for plain chat.

If you know a worker's multiaddr, add it under Manual workers; that works on the same LAN and needs no registry entry.

Run a session​

In a DeepSeek Harness session, open the model picker and choose a GenKaKu model. The plugin:

  1. dials the worker directly, or through the seed relay if a direct connection is impossible,
  2. for a paid model, opens a USDC escrow in JobEscrow before the first token,
  3. streams tokens back as Ollama generates them,
  4. settles when the session ends.

Free models (quote 0) skip steps 2 and 4 entirely: no escrow, no gas, no transaction.

What a session costs​

ItemWho pays
InferenceYou, in USDC, per started minute
Gas to open escrowYou
Gas to settleYou
Platform fee1% of the worker's settlement, to the treasury

A paid session therefore costs two chain transactions: open escrow, then settle. If the session ends with nothing billed, the escrow is refunded.

Billing is by started minute: stopping after ten seconds still bills one minute, at the worker's hourly quote divided by 60.

Settings​

  • Payments — with settlement on, each paid session opens an escrow. Turn it off for free/dev sessions that sign nothing on-chain; turn it back on before using the network against real workers.
  • Manual workers — pin a worker multiaddr by hand.
  • Refresh — re-scan the chain directory and the seed. The bridge restarts when the scan finishes, and a profile that changed its wallet also needs a restart before it can transact.

The local bridge binds the first free port in 47821–47826 and only answers if it is the user half; a worker status server on the same machine will not be mistaken for it.

Common questions​

Do I need to trust GenKaKu Labs?
You need to trust the contracts and the code. No server holds your funds or your prompts.

Can I use it without a wallet?
Only for free models with settlement off. Paid sessions and identity are the wallet.

Is this mainnet?
No. The plugins refuse a mainnet chain ID. Do not send real funds.

Who can see my prompts?
The worker that serves them, always. If the session goes through the seed relay, the relay operator sees connection metadata — addresses, timing and volume — but not the encrypted content.

Why did my model disappear from the picker?
The adapter probes the local bridge ports and only accepts a bridge that reports the user role. A stale port owned by another profile is ignored; it comes back on the next refresh.