Quick Start
The native miner is a patched build of the official
quantus-miner
with pool-mode support (--payout-address + --worker-name).
Three things to do: download the binary, get a payout address, run the miner.
1. Download
⬇ Windows x86_64 · Linux x86_64 · macOS arm64 · SHA256SUMS
After download, make the binary executable (Linux/macOS):
chmod +x quantus-miner-*
xattr -d com.apple.quarantine quantus-miner-darwin-arm64macOS Intel (x86_64) build is coming later. Apple Silicon (M1/M2/M3/M4) only for now.
2. Get a payout address
You need a Quantus address (starts with qz…). Options:
- Phone wallet: quantus.com/wallet (iOS, Android, Web)
- CLI wallet:
quantus-cli
—
quantus wallet create --name myrig
Your rewards will be credited to whatever address you put on the --payout-address flag.
The address is sent over the wire on every connection, so you can use different addresses on different rigs.
3. Run the miner
Minimum config (CPU only, auto-detected workers):
quantus-miner serve \ --node-addr 38.190.136.73:9890 \ --payout-address qzYOUR_ADDRESS_HERE \ --worker-name my-rig
What to expect in the log:
⛏ Sent pool-hello (payout=qz…, worker=my-rig) ⛏ Bidirectional stream established ⛏ Received job: id=…, hash=0x… 🎉 GPU worker 0 found solution! … ⛏ Job … completed: N hashes in X.XXs (Y MH/s)
Confirm on the dashboard: your worker appears on the Connected Miners table within ~5s with a non-zero hashrate. Click your address to see the per-worker miner detail page.
GPU Selection
Multi-GPU systems are common (e.g., a laptop with an iGPU + dGPU, a workstation with multiple cards). The miner uses
wgpu, which enumerates every GPU it can see across every supported backend (Vulkan, DirectX 12, Metal),
so your "RTX 5090" may appear three or four times in the list. Picking the right one matters.
Step 1: List the GPUs
quantus-miner gpu-list
Output looks like this on Windows (RTX 5090 + iGPU + Microsoft fallback):
idx | name | backend | vendor | device | type 0 | AMD Radeon(TM) 890M Graphics | Vulkan | 0x00001002 | 0x0000150e | IntegratedGpu 1 | NVIDIA GeForce RTX 5090 | Vulkan | 0x000010de | 0x00002b85 | DiscreteGpu 2 | NVIDIA GeForce RTX 5090 | Vulkan | 0x000010de | 0x00002b85 | DiscreteGpu 3 | NVIDIA GeForce RTX 5090 Laptop GPU | Vulkan | 0x000010de | 0x00002c58 | DiscreteGpu 4 | NVIDIA GeForce RTX 5090 Laptop GPU | Vulkan | 0x000010de | 0x00002c58 | DiscreteGpu 5 | AMD Radeon(TM) 890M Graphics | Dx12 | 0x00001002 | 0x0000150e | IntegratedGpu 6 | NVIDIA GeForce RTX 5090 | Dx12 | 0x000010de | 0x00002b85 | DiscreteGpu 7 | NVIDIA GeForce RTX 5090 Laptop GPU | Dx12 | 0x000010de | 0x00002c58 | DiscreteGpu 8 | Microsoft Basic Render Driver | Dx12 | 0x00001414 | 0x0000008c | Cpu
Same physical GPU often appears two or three times under different backends. Vulkan tends to perform best on NVIDIA & AMD discrete cards on Windows and Linux; DirectX 12 is the fallback. macOS only has Metal (via Vulkan→Metal translation).
Step 2: Pick the index(es) you want
Two ways to tell the miner which GPU(s) to use:
| Flag | Behavior |
|---|---|
| --gpu-devices N | Use the first N enumerated adapters. Simple but blind: usually picks the iGPU first. Avoid on multi-GPU systems. |
| --gpu-device-ids 1,3 | Use exactly these enumeration indices (comma-separated). The way to actually choose which GPU(s) you want. Pair with the indices from gpu-list. |
Step 3: Examples
Single discrete GPU (RTX 5090 on Vulkan, ignore the iGPU):
quantus-miner serve \ --node-addr 38.190.136.73:9890 \ --payout-address qz… \ --worker-name rtx5090-rig \ --cpu-workers 0 \ --gpu-device-ids 1
Two GPUs in parallel (desktop 5090 + laptop 5090, both on Vulkan):
quantus-miner serve \ --node-addr 38.190.136.73:9890 \ --payout-address qz… \ --worker-name dual-5090 \ --cpu-workers 0 \ --gpu-device-ids 1,3
CPU + GPU mixed (4 CPU threads + one dGPU):
quantus-miner serve \ --node-addr 38.190.136.73:9890 \ --payout-address qz… \ --worker-name mixed-rig \ --cpu-workers 4 \ --gpu-device-ids 1
All CLI flags
| Flag | Default | What it does |
|---|---|---|
| --node-addr | 127.0.0.1:9833 | QUIC endpoint to connect to. For pool: 38.190.136.73:9890. Must be IP:port, hostnames not supported. |
| --payout-address | — | Required for pool mining. Your qz… address. Sent in the pool-hello frame. |
| --worker-name | hostname | Friendly name shown on the dashboard. Useful when you have multiple rigs. |
| --cpu-workers | auto | CPU mining threads. Set 0 for GPU-only. |
| --gpu-devices | auto | Use first N GPU adapters. Blunt — prefer --gpu-device-ids. |
| --gpu-device-ids | — | Comma-separated GPU indices from gpu-list. Overrides --gpu-devices. |
| --gpu-batch-size | 1000000 | Nonces per GPU dispatch. Larger = higher throughput, longer cancellation latency. Default is fine. |
| --cpu-batch-size | 10000 | Hashes per CPU cancellation check. Default is fine. |
| --metrics-port | 9900 | Prometheus metrics on http://0.0.0.0:N/metrics. Change if running multiple miners on one host. |
| -v / --verbose | off | Debug-level logging. Useful for troubleshooting; loud otherwise. |
Also: quantus-miner gpu-list (enumerate GPUs) and quantus-miner benchmark (10s engine speed test, no pool needed).
Running as a service
For a long-lived rig you'll want auto-restart on crash and on reboot. On Linux with systemd:
sudo tee /etc/systemd/system/quantus-miner.service <<'EOF'
[Unit]
Description=Quantus Native Miner (pool)
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=mining
WorkingDirectory=/home/mining
ExecStart=/home/mining/quantus-miner-linux-x86_64 serve \
--node-addr 38.190.136.73:9890 \
--payout-address qzYOUR_ADDRESS \
--worker-name my-rig \
--cpu-workers 0 \
--gpu-device-ids 0
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now quantus-miner
sudo journalctl -u quantus-miner -f
On Windows, easiest is NSSM to wrap the .exe as a service.
Troubleshooting
Connection refused / can't connect to 38.190.136.73:9890
- QUIC is UDP. Some corporate / café firewalls block outbound UDP. Try a different network.
- Verify port 9890 is reachable: on Linux,
nc -zvu 38.190.136.73 9890. - Don't use a hostname —
--node-addrneeds an IP:port literal.
"payout address rejected"
- Re-type the address. SS58 validation catches Cyrillic homographs (а/о vs a/o), embedded spaces, wrong-length addresses.
- Verify with the official wallet: it shows the canonical form.
Hashrate drops, then climbs again
- That's vardiff. Pool starts you at low difficulty (lots of shares, low value) and ramps you up to match your real hashrate. Stabilizes in 1-2 minutes.
- On the dashboard, your worker's
Diffcolumn will climb steadily until it matches your throughput.
Browser GPU on Mac doesn't work, native does
- Known issue. The WebGPU client on Safari/Chrome on Mac has a separate ~3% invalid-hash rate at high difficulty that the native miner doesn't have. Use the native binary on Mac for reliable hashrate.
Multiple miners on one host
- Set a different
--metrics-porton each (default 9900 collides). - Use distinct
--worker-names so they show separately on the dashboard.