If you own or host the hardware, an idle hour is not neutral — it costs you power and wear and returns nothing. Connected here, the same hour earns twice over: the card mines PRL whenever nothing is being asked of it, and serves AI inference when a request arrives. You keep 75% of what the card bills, paid in USDC on Base, and your PRL is paid to your own address. Nothing is exclusive: you can connect one machine, keep the rest where they are, and stop whenever you like.
One HTTP call per card model — not per machine. Nothing is installed and nothing is downloaded. Give it the VRAM the driver reports and the card's name; it answers with the model that card would serve and the exact settings it would run. This asks for every card in the box, because a plan is per card and a mixed machine gets a different answer on each:
nvidia-smi --query-gpu=index,name,memory.total --format=csv,noheader,nounits |
while IFS=, read -r i name vram; do
echo "== GPU$i $name"
curl -s -G "https://pool.linkrra.com/v1/nodes/recommend" \
--data-urlencode "vram_mib=$(echo $vram)" --data-urlencode "gpu_name=$(echo $name)"
doneThe part that decides whether a card is worth connecting is reason:
| It says | What that means |
|---|---|
serve_and_mine | Serves inference and mines in the gaps. 32 GB cards (RTX 5090) and up. |
serve_only | Serves, but has no VRAM left for the miner once the model is resident. 24 GB cards (RTX 4090, 3090). |
servable: false | Too small or too old for the serving kernels. The card can still mine — see the NVIDIA rig guide. |
Pick a single machine to prove the path before you touch the fleet. It needs an NVIDIA driver, Python 3.10 or newer, and a build toolchain — the serving engine compiles a small GPU shim the first time a model loads, on your machine.
sudo apt update sudo apt install -y build-essential python3-dev python3-venv
Two addresses and a key. The PRL address is where mined PRL goes; the USDC address on Base is where inference earnings go, and you can leave it out now and bind it later. The API key is created at the dashboard. Run this once per machine, not once per card:
curl -fsSL https://pool.linkrra.com/install.sh -o install.sh
less install.sh # we would rather you read it first
sudo LINKRRA_PRL_ADDRESS=prl1... \
LINKRRA_USDC_ADDRESS=0x... \
LINKRRA_API_KEY=sk-pool-... \
LINKRRA_NODE_HOST=YOUR.PUBLIC.IP \
bash install.shIt finds every card, asks the pool for a plan per card, and installs one model server, one node registration and one pinned miner for each. An 8-GPU server becomes eight nodes on ports 8000–8007, each registered separately, each with its own miner that stops only for its own card's requests. Cards too small to serve are listed and skipped; they can still mine.
Every precondition — driver, Python, toolchain, disk for every distinct model, the pool's reachability, and whether each card's memory budget actually works — is checked before the download starts. A machine that cannot serve says so in seconds and has fetched nothing.
LINKRRA_NODE_URLS="http://host:50018,http://host:50019". Behind NAT with no
port open, a node is never given work.With sudo it installs systemd units and starts them, so the box comes back
by itself after a reboot or an OOM. One card restarting never touches another:
systemctl status 'linkrra-serve@*' # is every card up journalctl -fu linkrra-register@0 # registration + heartbeat, card 0 systemctl restart linkrra-serve@3 # one card only systemctl stop linkrra-node.target # the whole box
Each card's registration prints its node id and status:
Registered: node_f889091f958ee374 — status: pending_approval
pending_approval is the normal first answer, and it
means the node is not yet earning from inference. Being in the registry and being handed
a customer's prompt are different things: the requests we would route to you contain other
people's data, so approval is a deliberate decision on our side. We check first — we reach
each of your nodes with its own key, confirm it serves the model id it registered under,
send a real completion, and read back the context your cards actually hold — and then a
person approves. Your registration raises that review by itself; you do not have to
chase it. Meanwhile your cards mine PRL and are paid for it. If you want to tell us who
you are, or you have not heard within a business day:
weare@linkrra.com.Your statement is one call, any time, and shows only your own figures:
curl -H "Authorization: Bearer sk-pool-..." https://pool.linkrra.com/v1/earnings
Once one machine is proven, the installer is fully non-interactive, so a rollout is a loop over the machines whose card models came back servable in step 1. One invocation per machine, whatever number of cards it has:
LINKRRA_YES=1 LINKRRA_PRL_ADDRESS=prl1... LINKRRA_API_KEY=sk-pool-... \ LINKRRA_NODE_HOST=THIS.MACHINE.IP bash install.sh # LINKRRA_GPUS=0,1,2 restrict to some cards; the rest stay yours # LINKRRA_PORT=9000 move the port block
LINKRRA_IDLE_IMAGE and LINKRRA_IDLE_ARGS run any GPU miner on an idle
card instead of ours; it is pinned to that card and never touches the serving path. If your
pool partners with us, it earns a share of what your cards serve.
Serving is an extra income stream on idle capacity, not a migration.Talk to us → — not required to get out of
pending_approval (registering raises the review on its own), but it is the
fastest way to put a name to the address. Send the card models, roughly how many, and the
node ids if you have them. Ask before you install and we will tell you what is realistic.
What a card earns while it is quiet. Mining only, from our own single-card runs on pearlhash, priced at PRL $1.47 on 2026-11-03 — a public SafeTrade ticker quote, not a filled trade — at 0.01274 PRL/TH/day and a 0.90 realisation factor, i.e. $0.01684 per TH/day:
| GPU | PRL hashrate | Mining revenue | Source |
|---|---|---|---|
| NVIDIA H100 | 679 TH/s | $0.476/hour | Measured |
| RTX 5090 | 423 TH/s | $0.297/hour | Measured |
| RTX 4090 | 309 TH/s | $0.217/hour | Measured |
| RTX 3090 | 140 TH/s | $0.098/hour | Measured |
Subtract your own power to get the number that matters to you: a card drawing
W watts at P dollars per kWh costs W × P / 1000
per hour. We deliberately do not print an electricity rate here — yours is the only one that
counts, and it is the whole difference between an idle hour and a paid one. A PRL price from
a ticker is also not a price you have realised; it moves.
What a card earns while it is serving. You keep 75% of what the card bills a customer; the pool fee is the other 25% (15% to the pool and 10% to a partner pool, when you joined through one). Today that model sells at $0.27 per million output tokens, and one RTX 5090 served 9,024 output tokens per second at saturation — measured 2026-10-03 over 5,120 requests with no errors.
What we will not quote you. Revenue per card per day, because it depends on utilisation — how much of the day your card is actually answering requests — and we have never measured that on a partner's hardware. Any figure we gave you would be a model wearing a measurement's clothes. We would rather tell you the two things we do know (what it mines while quiet, and what it bills while busy) and let you hold us to them.
Can one card mine and serve at the same time? On 32 GB and up, yes — that is
what serve_and_mine means, and the miner runs in the memory the model does not
need. On 24 GB, no: once the model is resident there is not enough VRAM left for the
miner, so the card does one or the other.
How a multi-GPU box is treated. Every card is its own node: its own model server on its own port, its own registration, and its own miner pinned to that card by GPU UUID. That is not a detail — it is the only arrangement in which "mining stops when paid work arrives" is true per card. A single miner spanning the box would sit on cards that were busy answering requests, and the governor watching one card's queue would have no idea. On a mixed machine each card gets its own plan from the pool and may serve a different model.
Verified on real hardware. Every step on this page was run on 2026-11-03 on a rented RTX 5090 (32,607 MiB, driver 580.178.04) on stock Ubuntu 24.04, from the public installer, as an outside operator — install, serve, register, and a request answered through the node's public URL. The serving plan the pool returned for that card (32,768-token context) produced an 86,240-token KV cache against a predicted 82,621. Three defects that run exposed are fixed in the installer linked above.
Your keys stay yours. The pool never holds a wallet. It sees a PRL address, a USDC address and an API key, and nothing is written outside the install directory and one optional service unit.