How to mine PEARL with one Docker command (2026 guide)
If you've tried to mine PEARL in 2026, you've probably hit the same wall everyone else has: a multi-hour bare-metal install of pearld + vLLM + the gateway, only to end up with a GPU at 2% utilization earning nothing. This guide skips all of that. One docker command, ~2.5 hours to first share, real mining.
The 30-second answer
Spin up an H100 or H200 GPU on RunPod or Vast.ai with this image as the custom container:
ghcr.io/terrapin88/pearl-miner-docker:latest
Set two environment variables, expose ports 8000, 8337, 8339, attach a 250GB volume, and you're mining. The full command is at the bottom of this article.
The critical insight that nobody tells you
Here's what made the difference between "running a $0.30/hour rig that earns $0/day" and "actually mining PEARL":
Mining ONLY happens when inference requests are being processed. The NoisyGEMM kernel finds blocks as a by-product of matrix multiplication during LLM inference. No requests = no mining.
The official Pearl entrypoint launches three services: pearld, pearl-gateway, and vllm serve. Then it stops. vLLM sits idle with a fully-loaded model and zero requests, doing zero matmul, finding zero blocks. A working GPU at 0 PEARL/hour.
The fix is a tight loop of inference requests that keeps the GPU saturated. The miner image embeds a worker that POSTs chat/completions requests to localhost:8000 with 32 concurrent threads, max_tokens=1 per request — a constant matmul load that keeps NoisyGEMM working. This is what actually mines PEARL.
Without this worker, the official setup is dead weight.
Credit where credit is due
The Docker image and the request-worker insight both come from terrapin88's pearl-miner-docker repo — MIT-licensed, public, audited clean (no exfiltration, no hardcoded addresses, standard Docker → ghcr.io build). I tested the image, verified the code, and it works as advertised. If you mine PEARL successfully because of this guide, send a thank-you on Discord.
Hardware requirements (2026)
Pearl mining requires NVIDIA Hopper architecture (sm90) — H100 or H200 only. The NoisyGEMM kernel uses Hopper-specific instructions that consumer cards (RTX 4090, 5090) don't have. Full GPU comparison here.
| GPU | VRAM | Recommended model | Cheapest source |
|---|---|---|---|
| H100 SXM 80GB | 80GB | Llama 3.1 8B (fits tight) | Vast.ai $1.20–1.80/hr |
| H100 PCIe 80GB | 80GB | Llama 3.1 8B | RunPod $1.99/hr |
| H200 SXM 141GB | 141GB | Llama 3.3 70B (official miner) | RunPod / Vast $3.50–4.50/hr |
The full command
On RunPod "Deploy a Pod" → "Custom Container":
- Container image:
ghcr.io/terrapin88/pearl-miner-docker:latest - GPU: H100 SXM 80GB or H200 SXM 141GB
- Volume: 250GB attached to
/app/chain-data - Exposed ports: 8000 (vLLM), 8337 (gateway), 8339 (P2P)
- Environment variables:
PEARL_WALLET_ADDRESS=<your prl1... address> HF_TOKEN=<your huggingface token>
If you don't have a Pearl wallet yet, create one first. Your HF_TOKEN comes from huggingface.co/settings/tokens — needs read access to the gated Llama models.
Timeline to first share
| Stage | Duration | What's happening |
|---|---|---|
| Container pull | ~3 min | Docker downloads the image (~12GB) |
| Chain sync from genesis | ~2 hours | pearld downloads the entire chain (longer than the official "30 minutes" estimate) |
| Model download | ~30 min | HuggingFace Llama download into volume |
| vLLM warmup | ~30 min | Loading model weights into GPU memory |
| Worker generates load | immediate | 32 threads start hitting the local API |
| First share to gateway | ~2.5h total | NoisyGEMM produces a valid solution |
Watch progress on /stats. Your wallet appears in the leaderboard once your first block lands.
The non-obvious config details
Things terrapin88's image gets right that most setup guides don't:
VLLM_USE_DEEP_GEMM=0— required always, not just for CUDA mismatches. DeepGEMM conflicts with NoisyGEMM and silently kills mining.- vLLM args:
--no-enable-prefix-caching --no-enable-chunked-prefill --data-parallel-size <gpu_count>— every miner forum I've seen omits at least one of these. - H100 80GB tuning:
max_model_len=4096, gpu_memory_utilization=0.95(tight fit on 8B). - H200 141GB tuning:
max_model_len=8192, gpu_memory_utilization=0.9(relaxed for 70B). - 32 worker threads at
max_tokens=1per request — this is the magic that creates constant matmul load.
Profitability check (May 2026)
Pearl has no exchange listing yet, so block rewards are speculative. Rough math:
- Cost (H100 SXM, Vast.ai cheapest): ~$1.20/hr = $28.80/day
- Block reward: ~2,900 PEARL per block (decaying)
- Solo H100 hash share: roughly 1 block per few days at current network hashrate
- Break-even price: PEARL needs to hit ~$0.05–$0.20 once tradeable
That's the price-prediction debate — bull case sees CEX listing in 2026 driving price into break-even territory; bear case is "maybe never". Mine because you believe in PoUW, not because the math works today.
Cold storage for the PEARL you mine
PEARL doesn't have native Ledger support yet, but the moment it does (or the moment you swap mined PEARL into BTC/ETH/USDT), you'll want a hardware wallet. Ledger Nano S Plus review for miners covers the full setup. Get one at shop.ledger.com.
FAQ
Can I mine PEARL on a 4090?
No. The NoisyGEMM kernel requires sm90 (Hopper). 4090 is sm89. Same for A100, AMD GPUs, Apple Silicon. H100 and H200 only.
Why does first sync take 2 hours and not 30 minutes?
Because the chain has grown since the docs were written. Genesis to current tip is ~50K blocks of real data plus header validation. Plan for 2 hours, be pleasantly surprised if it's faster.
What if my pod gets evicted mid-sync?
Use a persistent volume on RunPod / Vast. The 250GB volume mounted at /app/chain-data survives pod restarts and resumes sync from where it stopped. Without a volume, every restart = 2-hour resync.
Should I run my own image instead of terrapin88's?
If you want full control: fork the repo, build your own image, push to your own ghcr.io. Same code, your distribution. For most miners — just use his image, it works.
How do I monitor mining progress?
Three places: lordofpearls.xyz/stats (network-wide stats and your block in the leaderboard once it lands), the gateway logs in your container, and the Pearl Discord #gpu-mining-beta channel.
Bottom line
Mining PEARL went from "two-day adventure for a Linux wizard" to "docker run + 2.5 hours of patience" thanks to terrapin88. The earlier you start, the lower the network difficulty when you mine, and the more PEARL you accumulate before mainstream interest hits.
Action items:
- Sign up for RunPod (claim free credit) or Vast.ai (cheapest H100s)
- Create a Pearl wallet and grab your
prl1...address - Get a HuggingFace token with read access to the Llama gated repos
- Deploy
ghcr.io/terrapin88/pearl-miner-docker:latestwith the env vars above - Watch /stats — your wallet appears once your first block lands