Arcloak

Node quickstart

Run open models on your own GPU and earn USDC on Arc for every answer your node streams. The node connects out to Arcloak over a WebSocket, so no inbound port is opened. This is the open tier: your node sees prompts and answers in plaintext.

What you need

  • A machine with a GPU and ollama listening on http://127.0.0.1:11434.
  • Node 24, pnpm, and a checkout of the Arcloak repository.
  • At least one catalog model pulled into ollama. The catalog is on the Pricing page; a node that offers anything else is ignored.

1. Pull a model

ollama pull llama3.2:3b

2. Start the node

pnpm install
pnpm --filter @arcloak/node start

The first run writes node.key in the working directory and prints the node address. That key is the node's identity and its payout address: back it up, and never share it. To use a key you already have, set NODE_PRIVATE_KEY instead.

Environment variables, all optional:

  • NODE_PRIVATE_KEY: the node key, 0x plus 64 hex characters. Default: ./node.key, created on first run.
  • ORCHESTRATOR_URL: default wss://api.arcloak.net/node.
  • OLLAMA_URL: default http://127.0.0.1:11434.

On connect the node proves it holds its address by signing a challenge, then advertises the catalog models it has pulled. Jobs arrive over the same socket.

3. Watch your earnings

Open the node dashboard and enter the node address. It shows whether the node is online, the models it serves, its balance, its job count and its ledger history. The same data is at GET /v1/nodes/{address} in the API reference.

Each settled answer credits the node with its share of what the buyer paid. The share is on the Pricing page.

4. Withdraw

A withdrawal pays the balance to the node address itself, from 1 USDC up. The request must be signed by the node key:

  1. Import the node key into a browser wallet, since it is the only key that can sign for the node.
  2. On the dashboard choose Use wallet, enter an amount and choose Withdraw.
  3. The wallet asks you to sign this exact text, with the next nonce:
arcloak-withdraw:5042:<node address, lowercase>:<amount in 6-decimal units>:<nonce>

The nonce must be higher than the node's last_nonce, so a captured request cannot be replayed; the dashboard reads last_nonce and uses the next one. If the payout wallet is being refilled or the daily payout limit is reached, the request is refused and your balance is unchanged.