A practical operator memo from live operation of Pluralis Agora compute nodes on rented GPUs. Not a "what is Pluralis" explainer — it is about the gap between setting a node up and actually earning from it, written for anyone about to treat this like ordinary node deployment when it is really a live compute-operations problem.
The one thing that matters more than everything else
Take this if you take nothing else: your earnings are decided almost entirely by whether your node reaches and holds the Active state — not by which GPU you rent.
Running these nodes, I watched the leaderboard span a roughly 100x gap between lowest and highest earners. It is tempting to assume that gap is hardware — that the top operators run monster cards. They do not. The gap is about one thing: whose nodes finished syncing, went Active, and stayed Active without dropping.
A node that is online but still syncing earns almost nothing. A node that drops and re-syncs earns almost nothing during that window. A node that reaches Active and holds it for days earns continuously. That is the whole game. Everything below serves that single fact.
How earning actually works: three states, one that pays
A compute node does not earn the moment it joins. It passes through three states, and only the last pays meaningfully:
Weight sync (~400 steps): downloads and syncs model weights. Earns only a tiny presence baseline — about one point per hour. No real reward.
Optimizer sync (~100 steps): short warm-up; compute rewards begin to trickle in.
Active: processes training batches continuously and earns full compute reward — well over a hundred times the idle baseline. The only state that matters.
The number to internalize: getting from "just caught a slot" to Active took 5 to 6 hours of uninterrupted running. That fragile window is the thing you are protecting.
The setup sequence from live operation
The mechanics are the easy part. Here is the real sequence, including what the official instructions gloss over.
Rent the box: 24GB+ GPU, 80GB RAM, 80GB disk, North America (sub-80ms latency gate). Use the provided container template so the network port is pre-opened.
Read the externally-mapped port: the host maps your internal port to an external one, and you need that external number to launch. Get it wrong and peers cannot reach you.
Clone, install, launch: pull the node software, install the matching GPU compute libraries (newer cards need a specific build or the node will not run), launch pointed at your ports.
The seat-capture retry loop — the part nobody warns you about: the run is frequently at capacity, enforced per pipeline stage. Your launch will often fail instantly with "maximum number of active nodes reached." That is not a bug or a setup error — there is simply no open seat in your stage at that instant. The only fix is to retry until one frees, via a loop that relaunches every few seconds and doubles as auto-rejoin if the node later drops. My observed waits to catch a seat ranged from minutes to over 20 hours. A trap: the dashboard's total count can show open capacity while your stage is full — trust the per-stage view and keep the loop running.
Then walk away. Once a seat is caught, the 5–6 hour sync begins, and the most damaging thing you can do is touch it.
Performance drivers, ranked by what actually moved earnings
I compared compute output across GPU types — each node's processed-compute divided by its active hours, filtered to one pipeline stage at a time for an apples-to-apples read, pooled across dozens of nodes. Normalized per-card rates:
- RTX 5090 — ~1.95. Highest consumer rate. The best card to rent for this.
- L40S — ~1.85. Surprisingly strong, often cheaper. A genuine fallback.
- RTX 4090 — ~1.45. Solid.
- RTX PRO 6000 — ~1.45. Same as a 4090 despite costing far more. Worse per dollar than a 5090.
- PRO 6000 Workstation — ~1.35.
- Older RTX 6000 — ~1.25. Lowest of the group.
The headline: the most expensive card was not the best earner. The 5090 beat the PRO 6000 outright — because the bottleneck is not GPU horsepower, it is the network. These are commodity cards training over the public internet with no datacenter interconnect, so the work is communication-bound and a bigger GPU mostly waits for data.
That reorders the whole selection problem. What actually drove earnings, in order:
- Staying synced / reliability — dominant. The 100x factor. A node that holds Active beats everything.
- Bandwidth — up to a point. Top earners clustered at 800–1000 Mbps; below that, nodes starved. Above ~800 Mbps, more bandwidth bought nothing. Paying for a higher tier past that plateau is wasted money.
- Latency. Matters mostly because high latency makes a node drop. Comfortably under the gate is fine.
- GPU model — smallest factor. Real but minor, because the network is the limiter.
One note on the leaderboard's very top: the run's own operator nodes earned ~10x a contributor node. That is not replicable by renting — they sit co-located in a datacenter with sub-millisecond latency and gigabit interconnect. Renting one box near them does not help; distributed peer latency dominates.
The failure modes I actually hit
This is what separates a memo from a tutorial. Each cost me real time or earnings.
Interrupting a working node. The biggest time-waster. Restarting — for any reason — forfeits the pipeline seat and forces the entire 5–6 hour sync again. A running node should be left alone, full stop. Most of the time I lost came from touching things that already worked.
The token-cycle trap. I rotated my account credential while a node was running. The live node kept working — it had loaded the credential at startup — but the saved config on disk still held the old, now-invalid one. Everything looked fine until the next restart, when authentication would have failed silently. Fix: edit the saved config to the new credential (a file edit that does not disturb the running process). Rotating a credential does not propagate to a running node's config, and you will not find out until the worst moment unless you check.
Zero-balance outage. My rental balance hit zero. Every node stopped at once, lost its seat, and re-queued and re-synced from scratch — hours gone. Prevention is trivial and I should have done it on day one: automatic top-up billing with a buffer. Billing is an uptime dependency, not an afterthought.
Dead-on-arrival hosts. A fresh box showed "machine no longer connected" within minutes. You are not billed while it is offline, but waiting for recovery is a mistake — an immediate drop is a reliability signal. Destroy and re-rent.
Over-optimizing a working box. I had a node running fine, chased marginally better specs, swapped to a "better" host — which returned worse real latency than advertised. I bounced it and landed back on the original host. Net: lost time, zero gain. Once a box clears the thresholds and earns, leave it.
Listed specs are not real specs. The marketplace's advertised bandwidth and latency are measured to its own servers, not the training swarm. One box listed low latency and returned more than double at the real speed test. Read the actual numbers at launch and bounce a bad host before it catches a seat — that costs nothing.
What a new operator gets wrong
Approach this like ordinary node setup and you will get four things wrong:
You will assume online means earning. It does not — only Active earns, and reaching it takes hours.
You will buy the biggest GPU you can afford. Wrong lever: a mid-tier card with great bandwidth and reliability out-earns a flagship on a flaky host.
You will restart the node when something looks off — forfeiting your seat and resetting your sync clock.
You will treat billing, monitoring, and host quality as background concerns. They are the operation.
The mental shift that fixes all of it: you are not deploying software, you are running a live compute operation where uptime is the product. Set up a box that clears the thresholds, automate the retry and the billing, back up your node identity, verify the real numbers — then get out of its way.