The idea: the LLM's math is the mining

Pearl is a Layer-1 blockchain whose proof-of-work is large matrix multiplication — the same primitive every AI model runs (we wrote the full breakdown in Mining Pearl on Consumer GPUs). Jonathan's alpha-inference-miner takes that to its logical conclusion: he quantized Qwen3.6-27B so its weight matmuls are int7 GEMMs in Pearl's exact mining shape. A chat request and a mining share are now the same computation.

The container supervises the whole stack — pool connection, share submission, a lazy-load vLLM server, and an outbound chat tunnel — and keeps the card mining the entire time it's up. It doesn't just mine when idle; it merge-mines your chat prompt too:

Idle > 90 s (model asleep)mines full 131072² profile — ~385 TMAC/s
Loaded, between messagesco-resident 16384²~240 TMAC/s
Chat prefill (your prompt)the prompt matmul is merge-mined — ~130 TMAC/s
Chat decode (reply streaming)~50 tok/s (0 mining by default; flip a flag to keep mining)

The card never stops mining while the container is up. Talking to it isn't downtime — it's a different mining profile. Same 5090, same int7 kernels, answering you and earning Pearl at once.

What you need

🎮
An NVIDIA RTX 5090 (and only a 5090).

The mining kernels and the serve sizing are tuned and validated exclusively for the 5090 (sm_120, 32 GB). Other cards — including the 5080 — are not supported. Host driver must be R570 or newer.

🐳
Docker + the NVIDIA Container Toolkit.

CUDA is bundled inside the image, so the host only needs the NVIDIA driver plus the toolkit (the package that lets docker run --gpus all see your GPU). On managed hosts like vast.ai / RunPod these are already set up.

💾
~60 GB free disk.

The image is ~25.7 GB and the model is ~28 GB (downloaded once on first run into a mounted volume, then reused). Allow ~60 GB for headroom.

The model

It runs dominant-strategies/Qwen3.6-27B-heretic-pearl — a decensored ("heretic") Qwen3.6-27B with int7 weights, Apache-2.0, ~28 GB across 12 shards, a 102,400-token context window, served through a custom vLLM pearl_gemm kernel plugin. It's a reasoning model, so it emits a "thinking" block before its answer (the chat UI shows that as a collapsible Thoughts section). The quantization to int7 is precisely what makes inference be proof-of-useful-work.

The setup, step by step

Every command below is a standalone copy-paste line. Replace <YOUR_PRL_ADDRESS>, <YOUR_PASSWORD>, and <RIG_NAME> with your own values.

Step 0 — Verify you have a supported box

You want an RTX 5090, driver ≥ R570, and ~60 GB free:

nvidia-smi --query-gpu=name,driver_version,memory.total --format=csv,noheader
df -h /

Step 1 — Install Docker (skip if docker --version already works)

curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER && newgrp docker

Step 2 — Install the NVIDIA Container Toolkit (skip if nvidia-ctk --version works)

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker && sudo systemctl restart docker

Step 3 — Confirm Docker can see the GPU

docker run --rm --gpus all nvidia/cuda:12.8.1-base-ubuntu22.04 nvidia-smi

Step 4 — Create the model cache folder

This just makes an empty folder — nothing downloads yet. The model gets saved here when you launch the container in Step 6, so it only ever downloads once and is reused on every later run.

mkdir -p ~/.cache/alpha-inference-miner/model

Step 5 — Stop any miner already using the GPU

The 5090 can only do one at a time. If your current miner runs in a tmux session named pearl:

tmux kill-session -t pearl

Step 6 — Launch the inference miner in a detachable tmux session

tmux new -d -s inference 'docker run --rm --name alpha-inference --gpus all --ipc=host --shm-size=2g -v ~/.cache/alpha-inference-miner/model:/root/models/qwen36-27b-pearl-e8 jonathanquai/alpha-inference-miner:1.1.0 -a <YOUR_PRL_ADDRESS> -p <YOUR_PASSWORD> -w <RIG_NAME> 2>&1 | tee ~/alpha-inference.log'

This is the heavy step — it pulls the ~25.7 GB image, then downloads the ~28 GB model, so expect roughly 8 minutes on a gigabit connection. It runs in a tmux session named inference and tees all output to ~/alpha-inference.log.

Attach to watch it live (detach again with Ctrl-b then d):

tmux attach -t inference

Step 7 — Monitor the download, and know when it's done

The image pull + model download happen inside the container on first run (~8 min on gigabit). The way to watch it from the very first second — including the image pull — is to follow the log file Step 6 writes:

tail -f ~/alpha-inference.log

(Or tmux attach -t inference to watch the live session.) The standard docker logs -f alpha-inference works too — but only after the ~25.7 GB image finishes pulling and the container is created. During the pull it returns No such container, which is normal: the container doesn't exist yet.

Prefer a raw byte counter? Watch the on-disk size climb toward ~28 GB. (HuggingFace's "Fetching 23 files" progress bar looks frozen at a low percent in a non-interactive log — it only ticks on whole-file completion, so trust the byte count, not the bar.)

watch -n 5 'du -sh ~/.cache/alpha-inference-miner/model'

You'll know it's complete and the miner is live when the logs stop showing download progress and start showing vLLM loading — Starting vLLM server, then init engine ... took ~95 s — followed by mining lines: SHARE VALIDATED ok=True and IDLE_MINE_RATE tmac_s=~350. That's the green light: the download finished, the model loaded, and the card is mining. First-run total is roughly 8 minutes on a gigabit connection. You can also just wait for your worker to appear at pearl.alphapool.tech.

Step 8 — Verify it's running, loaded, and mining

docker ps --filter name=alpha-inference
nvidia-smi --query-gpu=utilization.gpu,power.draw,memory.used --format=csv,noheader
docker logs --tail 40 alpha-inference

You're looking for SHARE VALIDATED ok=True + accepted=True lines and an IDLE_MINE_RATE around ~350 TMAC/s.

Step 9 — Confirm shares are landing on the pool

curl -s https://pearl.alphapool.tech/api/miner/<YOUR_PRL_ADDRESS> | python3 -m json.tool | grep -A4 <RIG_NAME>

Step 10 — Chat with your own mining rig 🎉

Open pearl.alphapool.tech/chat, enter your payout address, your worker name (<RIG_NAME>), and your worker password (<YOUR_PASSWORD> — the secret part of -p before any ;d=). No port-forwarding or public IP needed — the rig dials an outbound tunnel. The first message takes a few seconds while the model wakes from sleep (~5 s), then it streams. Keep your tmux visible and watch it flip from IDLE_MINE_RATE to prefill (your prompt gets merge-mined) and back. That's the whole story on one screen.

Optional tuning flags

Append any of these to the docker run command:

-e PEARL_LAZY_MINE_DURING_DECODE=1Keep mining (+~100-130 TMAC/s) while it streams a reply, at the cost of token speed (~50 → ~34 tok/s).
-d 0Use the pool's vardiff instead of the static 500000 default.
--no-chatDisable the public chat tunnel (local :8000 API still works).
-p 8000:8000Expose the OpenAI-compatible API to the host at http://localhost:8000/v1.

Managing it

# stop it
docker stop alpha-inference

# follow logs
docker logs -f alpha-inference

# update to the newest version
docker pull jonathanquai/alpha-inference-miner:latest

Prefer a resilient background service over a tmux session (auto-restarts on reboot)?

docker run -d --name alpha-inference --restart unless-stopped --gpus all --ipc=host --shm-size=2g -v ~/.cache/alpha-inference-miner/model:/root/models/qwen36-27b-pearl-e8 jonathanquai/alpha-inference-miner:1.1.0 -a <YOUR_PRL_ADDRESS> -p <YOUR_PASSWORD> -w <RIG_NAME>

Honest notes

  • 5090-only, for now. The kernels are tuned for Blackwell sm_120 / 32 GB. If you don't have a 5090, mine Pearl with the standard alpha-miner instead — it supports the whole RTX 30/40/50 lineup.
  • It's a trade, not free hashrate. A dedicated miner squeezes out a bit more raw Pearl hashrate than the inference miner's idle ~350 TMAC/s. What you gain is a live, chattable 27B LLM that doubles as useful-work mining. For a showcase rig that's a great deal; for pure max-hashrate, run the dedicated miner.
  • 1% dev fee. The inference miner contributes 1% of its mining time (10 s of every 1000 s) to the project's dev address, via a brief separate pool connection — your shares are otherwise untouched.
  • Brand new. The container shipped in June 2026. Expect frequent updates; pin a version (:1.1.0) for reproducibility or use :latest for the newest build.

Final take

This is the cleanest demonstration of Pearl's whole thesis we've found: you're not burning a 5090 on arbitrary hashes, you're running a 27B language model that happens to secure a blockchain as a byproduct of answering your questions. Spin it up, open the chat, and watch the same card type back at you while it mines. Then make a video showing your friends — it's the kind of thing that doesn't quite click until you see it live.

This post is mining commentary, not investment advice. PRL has no exchange listing or USD price discovery as of publication. Mine what you can afford to throw away.