Skip to main content

Your first hour

This page walks the whole path once: from no account to a result file on your laptop and a pod that has stopped billing. Each step says what you will see, how long it took when we timed it (6 Sep 2026, CLI 0.0.33, a 1×RTX 3090 at $0.25/h), and the one thing that trips people up. The dashboard-only version is the Quickstart; this page adds the money and the CLI.

Whole run, install to torch.cuda.is_available() == True: under 10 minutes of wall clock, about $0.03 of GPU time.

0. What you need (2 min)​

  • An email address — or nothing at all, if you sign up with a fingerprint.
  • A way to pay: a card, a crypto wallet (USDT, USDC, ETH, BTC and others on several networks), or TAO. All top-ups are non-refundable.
  • An SSH client (ssh, scp). Linux and macOS have one; on Windows use WSL.

What it costs: the cheapest single-GPU nodes are RTX 3090 / RTX 4090 at $0.20–0.35 per hour. You pay for the seconds the pod exists, from the moment it is created (provisioning included); the ledger is settled every 5 minutes and once more when the pod is removed. There is no hourly minimum.

1. Sign up (1 min)​

Go to lium.io/register. Four ways in:

MethodWhat happens next
Email + passwordA verification email is sent; click its link before you log in. Look for the mail titled "Please confirm your email" — the welcome mail has no link.
GitHub / GoogleSigned in at once.
Register with fingerprintNo email. You get a 32-character string that is your login and the only way back into the account — save it before you continue.

New accounts get $5 of free credit when signup passes Lium's abuse checks. Among them, a signup the risk score rates high risk gets no credit, Lium gives no second credit to an email address or a device that a credited account already used, and the credits are capped per network and per day; other checks apply too. The credit expires after 14 days. With email + password, the $5 lands after you click the confirmation link (within 14 days of signup); GitHub, Google and fingerprint signups get it at signup. Check the balance in the top-left of the dashboard (or lium balance) after you sign up; a failed check still creates the account, just without the bonus. The grant is once per new account.

2. Top up (2–5 min)​

Open the account menu (your name, bottom-left of the sidebar) → Billing → TOP UP, or click your balance at the top of the sidebar. Enter the amount (the presets are $10 / $20 / $50 / $100; card and stablecoin top-ups start at $10 and automatic top-ups at $20; the form shows the same $10 for TAO) and pick a rail:

RailWhere it happensBonusWhen the balance moves
CardStripe checkout in the browser—When Stripe confirms the payment — normally by the time you are redirected back to /billing
CryptoHosted invoice (21 currency/network pairs, e.g. USDT on Tron, USDC on Base)+2.5 %After on-chain confirmation; the invoice expires after 30 minutes, so send from a wallet you control, not an exchange withdrawal
TAOTransfer from a wallet you first verify on the account; credited at the amount received+2.5 %After the transfer is seen; send from the verified wallet only

Card top-ups exist only in the browser; the API and CLI can create crypto invoices (lium topup) and TAO transfers (lium fund). Coins sent straight from a wallet are credited at the amount received.

Verify the wallet you will send from before sending

A transfer from a wallet you have not verified cannot be credited automatically. If you sent first, verify the sending wallet in the Pay with TAO window (Add Wallet): transfers received from it in the last 30 days are credited when the verification completes; an older one needs support. A transfer from a verified wallet is normally credited as soon as it is seen; one that was received but not credited yet is listed in the Pay with TAO and Pay with Alpha windows as received, crediting…, so you know it is not lost. A row that reads received, contact support (it turns to that after a few minutes, or at once when it cannot be credited), or a transfer sent to an address other than the one shown in the window, needs support.

Renting has a balance floor

Rent is refused until your balance is above 15 minutes of the node's hourly price — $0.07 for a $0.25/h node, $0.75 for a $3/h node. With a balance of exactly $0 the only message you get, on the web and from lium up, is "Insufficient balance"; with a balance between $0 and the floor the message names the node price and the amount required.

3. Install the CLI (1 min)​

curl -fsSL https://lium.io/install.sh | bash     # 36 s measured; binary, no Python needed
exec $SHELL -l # or: export PATH="$HOME/.lium/bin:$PATH"
lium --version # lium, version 0.0.33

The Python package is also fine — uv tool install lium.io or pip install lium.io. The name on PyPI is lium.io; pip install lium fails with No matching distribution found for lium.

4. Connect the CLI to your account (2 min)​

lium init            # opens the browser, you click Approve, the key is stored in ~/.lium/config.ini
lium init --no-browser # prints the approval URL instead (headless machines, agents)

If you have no SSH key, the CLI generates one at ~/.ssh/id_ed25519 the first time it needs one and registers it when you rent. If you would rather paste an API key than approve in the browser, create one under sidebar → Access → API Keys (the page keeps the key copyable, so you can copy it again later) and run lium config set api.api_key sk_....

Check with lium balance — it prints your balance when the key works and an error when it does not. (lium config show also works, but it prints the full key; keep it out of logs and screenshots.)

5. Pick a node (2 min)​

lium ls --gpu RTX4090          # or RTX3090, A6000, H100, ...

The table adapts to your terminal width, and that matters on the first run: at the default 80 columns it shows neither the node name nor the row index and truncates the prices to 0…; the Id and Location columns only appear from about 130 columns, and the full table needs about 160. Widen the window or ask for JSON:

lium ls --gpu RTX4090 --format json | jq '.[] | {id, huid, price_per_hour, download_mbps, country}'

What the columns mean:

ColumnMeaning
IdThe node's name (e.g. brave-wolf-26) — in JSON as huid, next to the UUID id
ConfigN×GPU — the number of GPUs you get and their model
Tiersecure (dedicated) or spot (may be reclaimed)
Max CUDAThe highest CUDA version the host driver supports
$/GPU·hPrice per GPU per hour. An 8×A100 row at 0.60 costs $4.80/h — multiply by the GPU count. JSON has both price_per_gpu_hour and price_per_hour
LocationCountry of the machine
VRAM / RAM / DiskGB per GPU, host RAM, disk available to the pod
Upload / DownloadThe provider's speed-test result in Mbps. A rough filter, not a promise: measure inside the pod before a large download
PortsHow many ports you can expose besides SSH
★Pareto-optimal on price against bandwidth — the rows the CLI would auto-select from

Not shown yet: CPU count and whether multi-GPU nodes have NVLink — both are on the way; until then check nvidia-smi topo -m on the pod for anything with more than one GPU.

6. Rent (1 min)​

lium up 54075f7a-1114-40fa-884a-9b617ab2dc31 --name first --ttl 2h -y --no-ssh
  • Use the UUID from --format json, or the short name the table shows (brave-wolf-26) — accepted since lium 0.3.0; a CLI older than that answers the name with "Node 'brave-wolf-26' not found".
  • --ttl 2h is your safety net: the pod removes itself and stops billing even if you forget it. Set it every time.
  • -y skips the confirmation. --no-ssh returns to your shell when the pod is ready.

What you see: Est. deploy time: ~1m 0s (image: ~3.5 GB, download: 614 Mbps) and then nothing until Pod brave-hawk-d5 (name: first, id: …) ready — 42 seconds here. Typical is 20–60 s with the default image; a node that has to pull the image first can take several minutes. lium ps shows the status meanwhile.

7. Run something on the GPU (3 min)​

lium exec first "nvidia-smi -L"
lium exec first "python -c 'import torch; print(torch.__version__, torch.cuda.is_available(), torch.cuda.get_device_name(0))'"
# 2.12.0+cu130 True NVIDIA GeForce RTX 3090
lium ssh first # an interactive shell, when you want one

The default template (daturaai/pytorch, Ubuntu 24.04, Python 3.12) has PyTorch with CUDA ready. Things that surprise people in the first ten minutes:

  • pip install x works on the default template (the -lium1 build). On a custom template it can fail with externally-managed-environment (PEP 668): use pip install --break-system-packages x, or a venv: python -m venv /workspace/venv && . /workspace/venv/bin/activate.
  • Jupyter is not running even though port 8888 is mapped. Ask for it when you rent (lium up ... --jupyter, or the Jupyter checkbox in the web form) and the CLI prints the URL and token.
  • /root is an encrypted volume (persists across a reboot, but slower for large files); /workspace is plain disk. Keep datasets, model weights and caches in /workspace (export HF_HOME=/workspace/hf).
  • Missing tools: screen. Present: nvcc, ffmpeg, git, git-lfs, rsync, tmux, htop, jq, vim, curl. apt-get update && apt-get install -y screen works.
  • Long commands: lium exec waits for the command to finish; start anything over a minute with nohup … > log 2>&1 & and tail the log.

8. Get a result back (1 min)​

lium exec first "python train.py > /root/out.txt"
lium scp first /root/out.txt ./ -d # -d = download

The CLI copies over SSH through the pod's public port; a 10 MB file took 18 s in our run. For anything above a few hundred megabytes, push from the pod straight to object storage or Hugging Face.

9. Stop billing (1 min)​

lium rm first -y
lium ps # the pod is gone within seconds

Removal settles the last partial billing interval. Billing in the dashboard shows what you spent per day, split into pods and volumes; while a pod runs, lium ps shows its $/h and Spent. After removal the pod's charges stay on its statement.

Measured timeline​

StepTimeNotes
Install the CLI36 sbinary download + PATH line
Sign up (fingerprint)1 ssignup_credit_granted: false when an abuse check refuses the bonus
Top up—the only step that needs a human and a payment method
lium ls3 s162 nodes listed
lium up → ready42 s1×RTX 3090, default template
first torch.cuda result8 s after readyvia lium exec
pip install (10 MB of wheels)5 smeasured on the previous default with --break-system-packages; the -lium1 default needs no flag
lium scp 10 MB out18 s
lium rm → gone from lium ps6 s
GPU time billed for the run$0.0245 min 43 s at $0.25/h

Next​