Providing a GPU

Turn an idle NVIDIA GPU into an earning machine. This takes about 30 minutes the first time.

Requirements

OS Linux (Ubuntu 22.04 or 24.04 recommended)
GPU NVIDIA, with a recent driver: nvidia-smi must work
Containers Docker and the NVIDIA Container Toolkit
Network A public IP or router port forwarding for TCP 8443 (gateway) and 30000–30099 (renters' apps)
Wallet A Solana wallet for payouts. It never needs to be on the GPU machine.
Disk 100 GB+ free; ML images are large

Check that Docker can see the GPU:

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

1. Install the node

Download kiln-provider for Linux from the Download button on List your GPU, then:

chmod +x kiln-provider
sudo mv kiln-provider /usr/local/bin/
kiln-provider --help

It's a single self-contained program with no other dependencies.

2. Create the heartbeat key

kiln-provider heartbeat-key new

This writes ~/.config/kiln/heartbeat.json and prints its public key. Send that key some SOL: it pays the network fee for each heartbeat, one per minute while you're rented. That's about 0.007 SOL per day of rental, so 0.1 SOL covers roughly two weeks of continuous use. Top it up as you earn.

The heartbeat key can do two things: send heartbeats for your listing, and trigger settlement, which anyone can do and which always pays your wallet. It can't move your funds.

3. List your GPU

On Provide, connect your payout wallet and fill in:

  • GPU model, count and region
  • Price per hour in USD. You're always paid in USDC, even when a renter pays with $KILN.
  • Public address: your public IP and port, for example 203.0.113.7:8443, or a hostname
  • Heartbeat public key from step 2

Submit to create your listing on-chain. You can change price, address and availability any time under Your listings. Open leases keep the price they started with.

4. Start the node

kiln-provider run \
  --rpc https://api.devnet.solana.com \
  --owner <YOUR_PAYOUT_WALLET> \
  --mint EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v   # USDC on mainnet

You should see:

level=INFO msg="listing found" gpu="1x RTX 4090" region=EU-West host=http://203.0.113.7:8443
level=INFO msg="renter gateway listening" addr=:8443 public_host=203.0.113.7 ports=30000-30099

Run it as a service

# /etc/systemd/system/kiln-provider.service
[Unit]
Description=Kiln provider
After=docker.service network-online.target
Requires=docker.service

[Service]
ExecStart=/usr/local/bin/kiln-provider run --rpc https://api.devnet.solana.com --owner <WALLET> --mint <USDC_MINT>
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
sudo systemctl enable --now kiln-provider
journalctl -u kiln-provider -f

What happens when you're rented

  1. A renter opens a lease. It appears on the live network.
  2. They connect. Your gateway checks their wallet signature against the lease on Solana.
  3. They launch a workload. Your node pulls the image and runs it with the GPU attached and their ports mapped.
  4. Heartbeats go out only while their container runs. Each one adds verified time to the lease.
  5. Every hour the node settles: verified time is paid into your wallet in USDC, minus the 2.5% protocol fee.
  6. When the lease ends or is closed, the node removes the container. Your GPU is free for the next renter.

One workload runs at a time per listing. While you're busy, other renters get a clear message and can close for a full refund.

Configuration

Flag Default
--rpc devnet Solana RPC URL. Use a paid RPC on mainnet.
--key ~/.config/kiln/heartbeat.json Heartbeat key file
--listen :8443 Gateway listen address
--public-host host of your listing's address Hostname/IP shown to renters for their ports
--port-range 30000-30099 Host ports for renters' apps
--interval 60s Heartbeat cadence (max 90 s)
--settle-every 1h Payout cadence; 0 disables
--memory, --cpus unlimited Per-container limits, e.g. --memory 48g --cpus 16
--shm-size 8g Shared memory for data loaders
--tls-cert, --tls-key off Serve the gateway over HTTPS
--runtime docker none = heartbeat every lease and run workloads yourself

Pricing your GPU

Look at what similar GPUs are listed for on Rent, and remember you're only paid while you're proven. A reliable machine at a fair price earns more than an expensive one that sits idle.

Security on your machine

  • Renters' containers run without --privileged, with no-new-privileges and some risky capabilities dropped.
  • They still have network access and your GPU. Treat the machine as shared: keep nothing sensitive on it, and ideally put it on its own network segment.
  • Keep the driver, Docker and the NVIDIA toolkit up to date.
  • See Security and trust for the full threat model.

Troubleshooting

Symptom Fix
no listing at … The --owner and --mint must match the listing you registered.
listing's heartbeat key is … but this machine's key is … Update the heartbeat key on your listing, or point --key at the right file.
Renters can't connect Check ports 8443 and 30000–30099 are reachable from outside, and that your listing's public address is correct.
could not read GPU utilisation nvidia-smi isn't on the PATH. Heartbeats still go out with 0%.
Heartbeats failing The heartbeat key is out of SOL. Top it up.
Previous← Renting a GPUNextProof of rental →