Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.galadriel.co/llms.txt

Use this file to discover all available pages before exploring further.

Get Your First GPUs in 5 Minutes

This guide will walk you through purchasing GPU time, deploying a workload, and cleaning up.

Prerequisites

  • Unix-based system (macOS or Linux)
  • Credit card for payment
  • SSH key (optional, but recommended)

Step 1: Install the CLI

curl -sSL https://galadriel.com/install.sh | sh
Verify installation:
galadriel version

Step 2: Configure Authentication

Create an account and get your API token:
galadriel configure
You’ll be prompted to:
  1. Enter your API token (get one at https://app.galadriel.com/settings/tokens)
  2. Set default zone (e.g., us-west-1)
  3. Add your SSH public key (optional)
Your configuration is saved to ~/.galadriel/config.yaml.
Create an API token at https://app.galadriel.com/settings/tokens with full access permissions.

Step 3: Check the Marketplace

Before buying, check current prices and availability:
# View orderbook for H100 GPUs in us-west-1
galadriel orderbook --gpu-type h100 --zone us-west-1
Output:
📊 Orderbook: H100 @ us-west-1 (2025-11-11 14:00 UTC)

Market Depth:
  Best Bid:  $1.30/GPU/hr  (24 GPUs)
  Best Ask:  $1.40/GPU/hr  (16 GPUs)
  Spread:    $0.10 (7.69%)
  Mid Price: $1.35

Bids (Buy Orders):                     Asks (Sell Orders):
  $1.30 ████████████████ 24 GPUs        $1.40 ████████ 16 GPUs
  $1.25 ███████████ 16 GPUs             $1.45 ████ 8 GPUs
  $1.20 ███████████████████ 32 GPUs     $1.50 ████████████ 24 GPUs

Last Trade: $1.35 (8 GPUs) @ 13:55 UTC
24h Volume: 1,920 GPU-hours
Get a price estimate:
galadriel prices estimate --gpu-type h100 --gpus 16 --zone us-west-1

Step 4: Purchase GPUs

Option A: Market Order (Instant)

Buy GPUs immediately at the current market price:
galadriel order buy \
  --gpu-type h100 \
  --gpus 16 \
  --duration 24h \
  --zone us-west-1 \
  --type market
Market orders execute instantly but you pay the current best ask price. For this example, you’d pay ~$1.40/GPU/hr.

Option B: Limit Order (Save Money)

Wait for a specific price:
galadriel order buy \
  --gpu-type h100 \
  --gpus 16 \
  --duration 24h \
  --price 1.30 \
  --zone us-west-1
Limit orders can save 10-25% but may take minutes to hours to fill. Use this for non-urgent workloads.
Expected output:
🛒 Creating market buy order for 16 GPUs...
✓ Order matched instantly!
✓ Order ID: ord_abc123
✓ Matched at: $1.40/GPU/hour
✓ Total cost: $537.60 (16 GPUs * 24h * $1.40)
✓ Lease ID: lse_xyz123
✓ Nodes: gpu-node-042, gpu-node-043

📦 Getting kubeconfig...
✓ Saved to ~/.kube/galadriel-lse_xyz123.conf

🎉 Your cluster is ready!

Step 5: Connect to Your GPUs

Option A: Using kubectl

Set your kubeconfig:
export KUBECONFIG=~/.kube/galadriel-lse_xyz123.conf
Verify access:
kubectl get nodes
Output:
NAME            STATUS   ROLES    AGE   VERSION
gpu-node-042    Ready    <none>   30s   v1.30.0
gpu-node-043    Ready    <none>   30s   v1.30.0

Option B: Using SSH

SSH directly to a node:
galadriel ssh lse_xyz123
Or specify a node:
galadriel ssh lse_xyz123 --node gpu-node-042

Step 6: Deploy a Workload

Simple GPU Test

Create gpu-test.yaml:
apiVersion: v1
kind: Pod
metadata:
  name: gpu-test
spec:
  containers:
  - name: cuda-test
    image: nvidia/cuda:12.2.0-base-ubuntu22.04
    command: ["nvidia-smi"]
    resources:
      limits:
        nvidia.com/gpu: 1
  restartPolicy: Never
Deploy:
kubectl apply -f gpu-test.yaml
kubectl logs gpu-test

Multi-Node Training Job

Create distributed-training.yaml:
apiVersion: batch/v1
kind: Job
metadata:
  name: distributed-training
spec:
  completions: 2
  parallelism: 2
  template:
    spec:
      containers:
      - name: trainer
        image: nvcr.io/nvidia/pytorch:23.10-py3
        command:
          - python
          - -m
          - torch.distributed.run
          - --nproc_per_node=8
          - --nnodes=2
          - train.py
        resources:
          limits:
            nvidia.com/gpu: 8
        volumeMounts:
        - name: infiniband
          mountPath: /dev/infiniband
      volumes:
      - name: infiniband
        hostPath:
          path: /dev/infiniband
      nodeSelector:
        nvidia.com/gpu.product: NVIDIA-H100-80GB-HBM3
Deploy:
kubectl apply -f distributed-training.yaml
kubectl get pods -w

Step 7: Monitor Your Lease

Check lease details:
galadriel get lse_xyz123
List all active leases:
galadriel list
Output:
LEASE ID    GPUs  GPU TYPE  ZONE       STATUS  EXPIRES             COST/HR
lse_xyz123  16    H100      us-west-1  active  2025-11-12 14:00   $1.40

Step 8: Cleanup (Optional)

Finished Early?

If you’re done before your 24 hours are up, you have two options:

Option A: Terminate and Get Refund

galadriel terminate lse_xyz123
You’ll get a prorated refund for unused time.

Option B: Resell Unused Time

Recover even more by reselling to the marketplace:
# Resell remaining time at $1.20/GPU/hr
galadriel lease resell lse_xyz123 --price 1.20
If matched, you’ll receive:
  • Original refund from Galadriel
  • Net recovery from marketplace sale (minus 10% platform fee)
See the Reselling Guide for details.

Automatic Cleanup

Your lease automatically expires and cleans up at the end time. You’ll receive:
  • 5-minute warning notification
  • Automatic namespace deletion
  • Complete resource cleanup

Next Steps

Understand the Marketplace

Learn about order types and pricing strategies

Cluster Specs

GPU types, system specs, and access model

API Reference

REST API and SDK documentation

Examples

Real-world training examples

Common Issues

Limit orders may not fill if your price is too low. Check the current orderbook:
galadriel orderbook --gpu-type h100 --zone us-west-1
Cancel and create a new order with a higher price, or switch to a market order.
Make sure your kubeconfig is set:
export KUBECONFIG=~/.kube/galadriel-lse_xyz123.conf
Or get the kubeconfig again:
galadriel kubeconfig lse_xyz123 --save ~/.kube/galadriel.conf
Verify your SSH key was added during configuration:
cat ~/.galadriel/config.yaml | grep ssh_public_key
If not set, reconfigure:
galadriel configure

Getting Help