Skip to main content
We offer two kinds of nodes: Reserved and Spot. Once provisioned, you can run VMs on them.

Reserved vs Spot

Use Reserved nodes if you need guaranteed access to GPUs for a specific duration of time. Spot nodes are a good fit if you have an interruptible workload and are flexible about the timing and duration assigned to your VMs.

Quick start

Install the sf CLI and log in.
sf login
Generate a startup.sh that configures SSH access to your nodes. This can also be a cloud-init user-data file.
cat >startup.sh <<SCRIPT
#!/bin/bash

mkdir -p /root/.ssh
cat >>/root/.ssh/authorized_keys <<"EOF"
$(cat ~/.ssh/id_rsa.pub 2>/dev/null)
$(cat ~/.ssh/id_ecdsa.pub 2>/dev/null)
$(cat ~/.ssh/id_ecdsa_sk.pub 2>/dev/null)
$(cat ~/.ssh/id_ed25519.pub 2>/dev/null)
$(cat ~/.ssh/id_ed25519_sk.pub 2>/dev/null)
$(cat ~/.ssh/id_xmss.pub 2>/dev/null)
$(cat ~/.ssh/id_dsa.pub 2>/dev/null)
EOF
SCRIPT
Create a Reserved node.
sf nodes create cuda-crunch --zone landsend --duration 1h --max-price 20.00 --user-data-file ./startup.sh
Check the status of your node.
sf nodes list
NAME                    TYPE            STATUS       CURRENT VM                 GPU    ZONE          START/END
cuda-crunch             Reserved        Running      vm_mxCExUDERw8zvxrTf0e5W   H100   landsend      Oct 2, 3pm → 5pm
Use the node name or ID to get logs or SSH into the VM running on your node.
sf nodes logs cuda-crunch

sf nodes ssh root@cuda-crunch

Create Reserved nodes

# Create a reserved node for 2 hours starting now
sf nodes create cuda-crunch --zone landsend --duration 2h --max-price 10.00

# Create a reserved node starting in 1 hour for 6 hours
sf nodes create cuda-crunch --zone landsend --start "+1h" --duration 6h --max-price 10.00

# Create a reserved node with specific start/end times
sf nodes create cuda-crunch --zone landsend --start "2024-01-15T10:00:00Z" --end "2024-01-15T12:00:00Z" --max-price 10.00
If you need to hold onto a reserved node for longer, you can extend it. See Configure nodes for details on custom OS images or configuring VMs on startup.

Create Spot nodes

# Create a spot node with a max price of $10 per node hour
sf nodes create cuda-crunch --auto --zone landsend --max-price 10

# Create 3 spot nodes with a max price of $10 per node hour
sf nodes create -n 3 --auto --zone landsend --max-price 10 -U ./cloud_init.yaml
Once created, we will continually bid to rent nodes at or below your max price. If successful, a VM will be provisioned on the node to run your workload. If the market price exceeds your max price, any running VM will be terminated at the end of your allotted time, but the node will remain active and continue waiting for the price to drop before provisioning a new VM. If you want to stop renewing a spot node, you can release it. See Configure nodes for details on custom OS images or configuring VMs on startup.

List nodes

View all your nodes.
sf nodes list --verbose
Node: cuda-crunch
ID: n_0d2f72f0b631b674
Type: Spot Node
Status: Released
GPU: H100
Zone: landsend
Owner: sfcompute-com

Schedule:
   Start: 2025-08-04 19:03:09 UTC
   End: 2025-08-07 15:50:24 UTC
   Duration: 68 hours

Pricing:
   Max Price: $10.00/hour

Virtual Machines         Status         Start/End
   vm_47xHVvU6dewFvMXNJZJ9M Destroyed      2025-08-05 15:41 → 18:00
   vm_9imnBqbLvpJWToxmnYCJs Destroyed      2025-08-04 19:04 → 14:00

Actions:
   Logs: sf nodes logs cuda-crunch
   SSH: sf nodes ssh root@cuda-crunch

Configure nodes

Images

You can run any custom UEFI bootable x86_64 raw image.
# Upload a custom os.img to your account
sf nodes images upload ./path/to/os.img

# Create a node with the custom image
sf nodes create -n 1 --image <image-id> --zone landsend --max-price 30

Cloud-init

With a cloud-init file, you can set up users, SSH keys, install packages, and run setup scripts. Generate an SSH key pair if you don’t already have one.
ssh-keygen -t ed25519 -C "youremail@example.com"
Create a file named startup.yaml with your SSH public key.
startup.yaml
#cloud-config
disable_root: false
ssh_pwauth: false
users:
  - name: root
    ssh_authorized_keys:
      - ssh-ed25519 <ssh_public_key> alice@example.com
      - ssh-ed25519 <ssh_public_key> bob@example.com
Create a node with the cloud-init file.
sf nodes create -n 1 --user-data-file ./startup.yaml --zone landsend --max-price 30

Update node configuration

There is no persistent storage attached to a node. Redeploying a node will result in loss of all data stored on the node.
Redeploy a node to update its cloud-init file or OS image.
# Redeploy with a new cloud-init file
sf nodes redeploy cuda-crunch --user-data-file ./new_startup.yaml

# Redeploy with a new OS image
sf nodes redeploy cuda-crunch --image <new-image-id>

# Redeploy with both a new cloud-init file and OS image
sf nodes redeploy cuda-crunch --image <new-image-id> --user-data-file ./new_startup.yaml

# Redeploy with the same configuration (re-runs cloud-init)
sf nodes redeploy cuda-crunch

# Redeploy with a new OS and remove the existing cloud-init file
sf nodes redeploy cuda-crunch --image <new-image-id> --override-empty

Extend nodes

Extend only works with Reserved nodes.
Hold onto a reserved node for longer by buying more time.
sf nodes extend cuda-crunch --duration 1h --max-price 10.00

Release nodes

Release only works with Spot nodes.
Stop renewing a spot node. Any running VMs will be terminated at the end of your allotted time.
sf nodes release cuda-crunch

Node observability

View logs or SSH into any VM running on your node.
sf nodes list
NAME                    TYPE            STATUS       CURRENT VM                 GPU    ZONE          START/END
cuda-crunch             Reserved        Running      vm_mxCExUDERw8zvxrTf0e5W   H100   landsend      Oct 2, 3pm → 5pm
Get logs for the VM running on your node.
# Logs by node name
sf nodes logs cuda-crunch

# Logs by specific VM ID
sf nodes logs --instance vm_mxCExUDERw8zvxrTf0e5W
SSH into the VM.
sf nodes ssh root@cuda-crunch

Delete nodes

Deleting a node is permanent and cannot be undone.
sf nodes delete cuda-crunch
You cannot delete a node that is currently running a VM. You must first release it (for spot nodes) or wait for the reservation to end (for reserved nodes). Deleted nodes do not appear in sf nodes list output.

Limitations

  • Nodes only support Virtual Machines.
  • You cannot extend or redeploy nodes less than five minutes before their scheduled end time.
  • There are no public IPs. To host an inference server, set up a proxy (like nginx) in another cloud, connect it to your VPN, and point it at your nodes.
  • InfiniBand is not supported.
  • Nodes do not share a VPC or virtual LAN. Configure a VPN if you need connectivity between nodes.
  • Nodes take about 5 minutes to spin up. Rebooting will cause temporary loss of access.
  • There is no persistent storage. If the underlying machine dies due to a hardware issue, you will be given a replacement, but it will not share the same disk.
  • There is no GPU monitoring. GPUs may occasionally fall off the bus — reboot the node or contact us.
  • If all nodes are taken and yours dies, you may not get a replacement. We will refund you for the time, but it is not automatic — you will need to contact us.
  • VMs created using the nodes command do not show up in sf vm list.

API reference

See the Nodes API for programmatic access.