RUEN
To articles
Free Optimization

Idle-time mining on Vast.ai: Pearl (PRL) as a background job

Vast Sale editorial, 12 min

A Vast.ai server earns only while it is rented. Between rentals the GPU sits idle — for hours, and on new machines for days. Those hours can be filled with mining, without getting in a client's way for a single second. You do not need home-made watchdogs for that: the marketplace has a built-in mechanism, the background job (default job). Below is how it works and a step-by-step Pearl mining setup with commands, which we tested on a live server in October 2026.

How it works, in short

  • The host attaches a background job to the machine: a Docker image and a launch command. The marketplace runs it as a separate container on every free GPU.
  • A client arrives with a regular (on-demand) rental — Vast.ai stops the background job by itself and hands the GPU to the client. In our test it took about 15 seconds from rental creation to the miner stopping, and another 6 seconds for the card to go idle.
  • The client leaves — the marketplace starts the job again. Our miner was back about 20 seconds after the rental ended.
  • The marketplace neither charges nor pays for a background job. The price in the job is a priority: an interruptible rental bidding above your price also preempts the miner, one bidding below does not.
  • Inside the job runs the SRBMiner-MULTI miner on Pearl, with payouts from the Kryptex pool. No pool registration needed: an e-mail can be used instead of a wallet.
Mining is an idle-time filler, not a replacement for rentals. Renting a card out almost always earns more than mining on it, so the setup below is built to keep the client first at all times.

Why Pearl

Pearl (PRL) is a coin on the pearlhash algorithm with proof of useful work: instead of grinding hashes, the GPU computes matrix multiplications, the same kind of work neural networks do. The network launched on 27 April 2026, and in autumn 2026 it is the most profitable coin for NVIDIA GPUs. Cards from the RTX 20 series up are supported; RTX 30/40/50 work best because the algorithm leans on tensor cores.

CardHashratePowerRevenue per day (estimate)
RTX 5090~370 TH/s~520 W~$12
RTX 4090~310 TH/s~400 W~$10
RTX 2060 Super (our measurement)52 TH/s~165 W~$1.5
The 5090/4090 figures come from the WhatToMine and Kryptex calculators for October 2026, before electricity. Profitability changes daily with price and network difficulty — check a calculator before you start.

Know the risks up front: PRL trading is concentrated almost entirely on one exchange and liquidity is thin; one of the pools was hacked in August 2026; the miner developers have warned that a future network upgrade may make consumer GPUs unprofitable. That is why we withdraw regularly and do not hold PRL — the Kryptex pool can exchange it to USDT or BTC automatically.

What you need

  • A server already connected to Vast.ai as a host, with an NVIDIA RTX 20 series card or newer. No server yet? Start with installing Ubuntu for Vast.ai.
  • The vastai utility on any computer: pip install vastai. You need an API key from your Vast.ai account (the API keys section).
  • The machine ID: shown in the Machines section of your account or in the output of vastai show machines.
  • Where to receive payouts: an e-mail for the Kryptex pool (simplest) or a Pearl wallet address (starts with prl1) for other pools.
code
pip install vastai
vastai set api-key ВАШ_API_КЛЮЧ      # YOUR_API_KEY
vastai show machines                 # ID машины / machine ID, min_bid_price
The API key gives full access to your account: do not publish it, do not put it in scripts you send to anyone, and do not place it inside the background job — the job does not need it.

Step 1. Pool and wallet

The easiest start is the Kryptex pool: 1% fee, 1 PRL minimum payout, automatic exchange to USDT, BTC and other coins. No registration in advance — the wallet field takes an e-mail followed by a slash and a worker name (the server name), for example you@example.com/rig1. Later you log in at pool.kryptex.com with that e-mail and see hashrate, earnings and withdrawals. The separator must be a slash: with a dot the pool will not let you in.

PoolAddress (stratum)What goes in the wallet field
Kryptex, Europeprl-eu.kryptex.network:7048e-mail/worker or a prl1… address
Kryptex, globalprl.kryptex.network:7048same
K1Pool, Europeeu.pearl.k1pool.com:3360pool account address (after sign-up)
LuckyPoolpearl-us-east.luckypool.io:3360prl1… address

The miner supports backup pools: pools and wallets are listed comma-separated in the same order, and if the first pool is unreachable the miner moves to the next. Check each pool's login format on its “Getting started” page.

Step 2. The miner script

The background job runs from the plain python:3.12-slim image (about 120 MB), with no SSH and no Jupyter — only a launch command. On first start the script below downloads SRBMiner-MULTI from its official GitHub releases page, then runs it in a loop: if the miner crashes it comes back in 10 seconds and the container does not exit. Save it on your computer as miner.sh and change the three lines at the top.

code
# --- edit these three lines / настройте эти три строки ---
ALGO="pearlhash"
POOLS="prl-eu.kryptex.network:7048,prl.kryptex.network:7048"
WALLETS="you@example.com/rig1,you@example.com/rig1"
# --------------------------------
VER="3.7.7"
mkdir -p /root/srb && cd /root/srb
if [ ! -x miner/SRBMiner-MULTI ]; then
  python3 -c "import urllib.request as u; u.urlretrieve('https://github.com/doktor83/SRBMiner-Multi/releases/download/$VER/SRBMiner-Multi-$(echo $VER | tr . -)-Linux.tar.gz', 'm.tgz')" || exit 1
  tar xzf m.tgz && rm m.tgz && mv SRBMiner-Multi-* miner
fi
cd miner
while true; do
  ./SRBMiner-MULTI --algorithm "$ALGO" --pool "$POOLS" --wallet "$WALLETS" \
    --password x --disable-cpu --log-file /root/m.log > /root/o.txt 2>&1
  echo "miner exit $? $(date)" >> /root/exits.txt
  sleep 10
done
  • ALGO — the algorithm; for Pearl it is pearlhash. The same script works for other SRBMiner coins, for example quantus.
  • POOLS and WALLETS — pools and wallets, comma-separated, in the same order.
  • VER — the miner version. Pin it and update deliberately: SRBMiner charges a 2% developer fee on pearlhash, and new versions regularly speed the algorithm up.
  • The miner log goes to /root/m.log inside the container — it shows the hashrate and accepted shares.
What we ran into: the first version of the script, with exec and the miner's built-in HTTP API, exited within a fraction of a second with code 0, and the marketplace restarted it in a loop — about a thousand times in 12 minutes. The version above, without the API and with a loop, runs reliably. If you change the script, check that the container lives longer than a minute.

Step 3. Set the background job

The command hands the marketplace the image and the whole script. The price is per GPU per hour; it must be no lower than the machine's minimum bid (min_bid_price in vastai show machines). Set it slightly above the minimum: with the price exactly at the minimum our panel showed the job as “Outbid”.

code
vastai set defjob ID_МАШИНЫ --price_gpu 1.0 --price_inetu 0 --price_inetd 0 \
  --image python:3.12-slim --args sh -c "$(cat miner.sh)"

vastai show instances            # задача появится со статусом stopped / job appears as stopped
vastai start instance ID_ИНСТАНСА  # запустить один раз / start it once

The job is created stopped, so start it once with start instance. From then on the marketplace manages it: stops it for rentals and brings it back afterwards. One machine — one background job: a new set defjob replaces the previous one.

Step 4. Check that the miner works

A minute or two after starting, look at the server itself. The background job container is named C.<instance ID>.

code
sudo docker ps                                   # контейнер C.<ID> со статусом Up
nvidia-smi                                       # карта под нагрузкой / GPU under load
sudo docker exec C.ID_ИНСТАНСА grep -a "GPU0\|accepted" /root/m.log | tail -5

The log should show lines like “GPU0 RTX 2060 SUPER: 51.94 TH/s” and “share accepted”. After 10–20 minutes the worker shows up in the pool statistics.

If the log says “Pearl backend error E2012”, another process already holds the GPU: check nvidia-smi and docker ps -a. In our case it was a forgotten test container.

Step 5. Check what matters — the client arrives, the miner leaves

Take neither our word nor the documentation's — test it on your own machine. Rent it from yourself at the regular (on-demand) price: under the marketplace rules renting your own machine is not billed. While the test runs, watch the server in another window.

code
# на сервере / on the server
watch -n 2 "sudo docker ps --format '{{.Names}} {{.Status}}'; nvidia-smi --query-gpu=power.draw --format=csv,noheader"

# на своём компьютере / on your computer
vastai search offers "machine_id=ID_МАШИНЫ verified=any rentable=any"   # ID предложения / offer ID
vastai create instance ID_ПРЕДЛОЖЕНИЯ --image python:3.12-slim --disk 10
# ...майнер должен остановиться за 10-20 секунд / the miner should stop in 10-20 seconds
vastai destroy instance ID_ТЕСТОВОЙ_АРЕНДЫ -y
# ...майнер должен вернуться за 20-30 секунд / the miner should return in 20-30 seconds
TimeWhat happened (our test)
0 stest rental created
~15 sbackground job stopped by the marketplace
~21 sGPU idle at ~9 W — free for the client
rental destroyedjob set back to “running”
+~20 sminer back at full power

The -y flag on destroy instance is required when the command runs from a script or over SSH: without it the utility waits for confirmation and silently hangs.

How to remove the mining

code
vastai remove defjob ID_МАШИНЫ

The marketplace deletes the background job and its container; the GPU goes back to idle. Check docker ps and nvidia-smi on the server.

Security and fairness to clients

  • Mining runs only inside the marketplace's built-in background job. Do not run a miner directly on the host or in your own container outside Vast.ai: the marketplace will not know about it and will not stop it for a rental, and the client gets a busy GPU.
  • The job contains no Vast.ai API key, no SSH keys and no passwords — only the pool address and the wallet or e-mail for payouts.
  • The miner is downloaded from the author's official GitHub releases page. Pin the version and do not take builds from random channels.
  • Watch temperatures: under mining the card heats up just as it does for a client. If cooling is at its limit, cap the card's power on the host (nvidia-smi -pl).
  • We tested preemption with container rentals. If virtual machines (VM mode) are enabled on your machine, repeat the step 5 test for a VM rental too (more on the mode itself in VM mode on a multi-GPU server).

Summary

  • The Vast.ai background job is the built-in way to use a GPU while it is idle: the client always comes first, and the marketplace stops and restarts the miner by itself.
  • Pearl on SRBMiner-MULTI is the most profitable option for NVIDIA in autumn 2026; Kryptex accepts an e-mail instead of a wallet and exchanges earnings to USDT.
  • Five commands: set defjob, start instance, log check, self-rental test, remove defjob.
  • Always test preemption on your own machine before leaving mining unattended.
Need help setting up a server for Vast.ai, from OS install to VM mode? See our services or contact support. Everyday host commands are collected in the cheat sheet.

Need help with the move?

Turnkey setup with a launch guarantee.

View services

GPU market news and breakdowns — in our Telegram channel @flux_vast_news

© Vast Sale · Source: https://vast.sale/articles/a21
Copying, paraphrasing and AI processing are permitted only with an active link to https://vast.sale