HomeProductsGPU Pods

GPU Pods

Sort offers by scorecard, rent by the second, connect over SSH or Jupyter. The second you shut down, billing stops; you don't pay for seconds that don't work anyway.

This is the product that works today. We are in Phase 0: supply comes from the pools of integrated providers, and our own host network joins the same marketplace in Phase 1.

The flow

Search, rent, connect, pay by the second.

Four steps. No sales call, no commitment, no minimum duration, no reservation fee in between.

Search offers

Narrow the pool by GPU model, VRAM, price range, scorecard threshold, region and a Verified-only filter. The default sort is by score: price, host scorecard and network are weighed together — the cheapest row is not always on top. Filters are written into the address bar, so you can share a search.

Rent

Pick the image (a ready template or your own), give the disk size and environment variables, and set a separate budget cap for the pod if you want. Before you confirm, the hourly, daily and end-of-month cost preview stays on screen. If the offer went stale before you pressed the button, we show the new price and ask again.

Connect

Once the pod is up, the SSH command and the Jupyter link are ready in the pod detail. A browser terminal, live log stream, GPU/VRAM/temperature/power telemetry and the files on disk are all on the same screen. Your secrets are encrypted at the application layer; they never land on the host's disk.

Pay by the second

The counter ticks every second; live cost and the end-of-month estimate stay on screen. Say stop and payment stops, the disk stays. Say delete and the disk goes too — and we state that plainly before deleting.

Why here

Three things are different, and all three are measurable.

Scorecard-driven placement

Every host is benchmarked continuously. The placement score weighs price, the reliability scorecard and network latency together; the components of the score expand above the row. The scorecard is not a black box — you should be able to see why a row sits where it does.

Live cost and a hard cap

Spend updates every second. The monthly cap is not an indicator but an enforced rule: notices go out at 80% and 95%, and when the cap fills, pods are stopped — not deleted, and your disk stays. Storage and traffic are separate, visible line items.

EU and TR region pinning

Pin your pod to a country or a group of regions; the pin is enforced server-side, and an interface filter is not treated as a security boundary. For an unpinned pod the screen shows different, honest wording — we don't let anyone read a guarantee that isn't there.

The SLA-backed, on-site audited Verified host tier falls under Phase 3 and is not open yet. What works today is scorecard scoring and region pinning. Detail: sovereignty.

API

Whatever is in the console is in the API.

One key to search offers, spin up a pod, stream logs. The CLI and the Python SDK use the same endpoints; for anyone who wants to poke by hand there is a thin REST surface.

The scorecard is in the API: the score and its components come back with the offer record, so you can make the choice in your own code.
Idempotency-Key: the same key returns the same response for 24 hours — a dropped connection does not start two pods.
Errors are machine-readable: stale offer, no payment method, budget exhausted, region-pin violation — each has its own distinct reason.
CLI
# Sort offers by score — output is illustrative $ kaldera offers --gpu RTX4090 --region eu_tr GPU QTY REGION $/HR SCORE RANK RTX 4090 1 Istanbul 0.42 4.9 0.90 RTX 4090 4 Frankfurt 1.58 4.8 0.61 # Rent the one you like, by the second $ kaldera pod create --offer ofr-8817 \ --image pytorch/2.4-cuda12.4 --volume-gb 100 ✓ pod ready → ssh root@fra1.kaldera.ai -p 40122 # Stop: billing stops, the disk stays $ kaldera pod stop pod_01J9ZQ4M7B
Python
# pip install kaldera from kaldera import Kaldera k = Kaldera(api_key="kld_...") offers = k.offers.list( gpu="RTX4090", min_vram_gb=24, region="eu_tr", min_score=4.5, ) pod = k.pods.create( offer_id=offers[0].id, image="pytorch/2.4-cuda12.4", volume_gb=100, ) print(pod.connection.ssh)
curl
# Search offers $ curl -s "https://api.kaldera.ai/v1/offers?gpu=RTX4090&region=eu_tr" \ -H "Authorization: Bearer $KALDERA_API_KEY" # Spin up a pod $ curl -X POST https://api.kaldera.ai/v1/pods \ -H "Authorization: Bearer $KALDERA_API_KEY" \ -H "Idempotency-Key: 01J9ZQ4M7B" \ -d '{"offer_id":"ofr-8817", "image":"pytorch/2.4-cuda12.4", "volume_gb":100}' # Stream the logs $ curl -N https://api.kaldera.ai/v1/pods/ID/logs?follow=true

Hardware

What can you rent, and for how much?

Hosts set the price and competition pushes it down; our commission is 15 percent and we do not hide it. The rows below are example starting prices from the pool — the live ones are in the console.

GPUVRAMTypical workStarting price (example)
RTX 309024 GBStable Diffusion, small LLMs$0.21/hr
RTX 409024 GBFine-tuning, image generation$0.42/hr
L40S48 GBInference, video$0.79/hr
RTX A600048 GBLong context, render$0.88/hr
A100 PCIe80 GBTraining, 70B inference$1.32/hr
H100 SXM80 GBSerious training runs$2.19/hr

These are illustrative figures; on the marketplace they move second by second with supply and demand. Storage and network traffic are separate line items, tracked with a live counter on the billing screen. Many GPUs in one machine exists today; clusters that join several nodes into a single job do not exist yet.

The guarantee

You don't pay for seconds that don't work — here is the mechanism.

Not a marketing sentence but a rule in the code that produces the invoice: a second that fails the health check enters no line item.

The health check runs continuously

The pod's health is measured at regular intervals and every measurement is recorded. The green band in the pod detail shows this; if health drops, the band turns to a warning and a "not being billed right now" counter starts.

An unbilled second is never written

The moment a measurement record is marked unhealthy, that second does not enter the compute line item. It is not an amount refunded later; it is an amount that never formed. In the metrics tab those intervals are marked on the chart — you can count them with your eyes.

Corrections for a closed period come back as credit

If a health correction arrives after the invoice was issued, the equivalent is written to your account as a credit row and appears in the "refunded" total on the billing screen. Which pod, which minutes — the breakdown expands.

The budget cap is a brake, not a guillotine

When the cap fills, pods are stopped, not deleted; the disk is preserved and you get a notification. Raise the cap and continue where you left off.

Let us write the limit down too: if your job crashes while the machine is healthy — out of memory, faulty code, the wrong image — those seconds are billed, because the hardware you rented was working. The guarantee covers the time the hardware and the connection were not working. The exact definition of that limit is written in the docs; we don't leave it open to argument.

Frequently Asked

Does my data survive when I stop the pod?

It does. A stopped pod's disk is preserved and is right where you left it when you start again. In exchange the storage charge keeps accruing: storage accrues on stopped pods too — and stops on a deleted pod. We don't bury that row in the invoice. If you want data to be independent of a pod's lifetime, look at persistent storage.

What happens if the pod crashes?

First billing stops: a second that fails the health check is never written. Then the pod is marked "failed", the reason sits in the event stream in machine-readable form, and a "restart on a similar offer" action appears in the console. If something goes wrong on the provider side at the moment of renting, we move to the next best offer and tell you about that switch explicitly — whose GPU spins underneath is our job to handle, but staying quiet is not.

Which images can I run?

Today you can bring your own container image; common images such as PyTorch, vLLM and ComfyUI sit as ready options on the rent screen. Images are verified with cosign, and an unsigned image is rejected. Turning the templates into a real model catalog, with version pinning and pre-pull, is planned; it is not live yet.

Can the GPU I rented change under me?

A running pod's hardware does not change on its own. A change happens in only two cases: if the provider cannot deliver the capacity at the moment of renting we move to the next offer, or if the machine loses its health check the job is moved to another host. Both are written to the event stream, and in both cases the time that did not work is not billed. For a moved job to continue where it left off you need to write checkpoints — that is not something we can invent on your behalf.

Get started

Spin up a pod, watch the counter.

No commitment, no minimum duration. If you don't like it, stop it; payment stops that second.