The Pearl vLLM miner is how you mine PRL: it serves a large language model with vLLM while extracting proof of work from the matrix multiplications inside the model's forward pass.
vLLM is a widely used open-source inference engine. Pearl integrates with it as a plugin rather than replacing it, so the mining rides along with normal model serving.
The two components
| Component | What it does |
|---|---|
pearl-gateway | Bridges to your node. Connects to pearld over JSON-RPC and exposes a mining interface to the miner. |
vllm-miner | Does the GPU work — serves the model and produces mining proofs from its matrix multiplications. |
The gateway listens on a Unix domain socket at /tmp/pearlgw.sock, or on TCP port 8337 if you set MINER_RPC_TRANSPORT=tcp.
Pearl-certified models
Mining requires a Pearl-certified model — a variant with Pearl's two-for-one scheme built into one of its layers, so the mining instrumentation is present in the forward pass.
Pearl-certified models are published at huggingface.co/pearl-ai.
Because the scheme instruments the internals of the forward pass, it needs access to model weights. Pearl works with open-weight models only — proprietary models such as GPT or Claude can't be certified.
Does mining cost me inference performance?
Very little, and in Pearl's published benchmarks sometimes nothing at all. Comparing Meta's Llama 3.3 70B against the Pearl-certified variant on 4×H200 GPUs:
| Model | Parallelism | MMLU score | Throughput (tok/sec) |
|---|---|---|---|
| Meta's Llama 70B | PP=4 | 0.8198 | 15,270 |
| Pearl-certified | PP=4 | 0.8190 | 17,206 |
| Pearl-certified | DP=4 | 0.8198 | 18,292 |
Accuracy is effectively unchanged, and in these configurations throughput was higher — the Pearl-certified variant uses a quantisation mechanism that both enables mining and reduces memory pressure. The baseline model couldn't run DP=4 at all, since a ~140 GB bf16 model exceeds a single GPU's VRAM.
The theoretical reason overhead is small: matrix multiplication of t×t matrices costs on the order of t³ operations, while the hashing that produces the proof costs t². The mining work is a rounding error against the multiplication itself.
Getting started
1. Install
macOS and Linux:
curl -fsSL https://raw.githubusercontent.com/pearl-research-labs/pearl/master/install.sh | sh
Windows:
irm https://raw.githubusercontent.com/pearl-research-labs/pearl/master/install.ps1 | iex
Only ever run install commands from githubusercontent.com under the pearl-research-labs organisation — see Verifying official Pearl links, domains, and downloads.
2. Create a wallet and get a mining address
Run oystercli for a guided setup, which walks you through wallet creation and generating a receive address. Record your seed phrase before going further — see Backing up your wallet.
3. Start your node with your mining address
pearld --rpcuser=… --rpcpass=… --miningaddr=<your-taproot-address> --txindex
4. Start the gateway
export PEARLD_RPC_URL="http://localhost:44107" export PEARLD_MINING_ADDRESS="<your-taproot-address>" pearl-gateway start
5. Start the miner
Docker is the simplest route, running with --gpus all and the Pearl-certified model. Full commands, including the Docker invocation and all environment variables, are in the repository README.
Building from source
You'll need Go 1.26+, a Rust toolchain, a C compiler, Python 3.12 with uv, the Task runner, and the CUDA toolkit. Then:
task build # everything task build:blockchain # pearld, prlctl, oyster, oystercli task build:miner # vLLM miner Python packages
Test before you commit hardware
Run against testnet or simnet first — start pearld with --testnet or --simnet. Worth doing before pointing production GPUs at mainnet.
Where to get help
Our Discord is where mining operators are. For bugs, see Reporting a non-security bug. The code is at github.com/pearl-research-labs/pearl under miner/.