Skip to main content
A node is a GPU machine that runs a VM image. You create a node, attach it to a capacity, choose an image, and optionally provide a cloud-init script. The node waits for compute time (from orders) before starting.

Node lifecycle

StatusDescription
awaiting_allocationNo allocation available on the capacity right now
runningVM is up and accessible
terminatedAllocation ended or node was manually terminated
failedSomething went wrong
A node in awaiting_allocation starts running when the capacity’s allocation schedule covers the current time. For example, if you buy compute starting at now, the node starts within about a minute. If the order starts in the future, the node waits until then. The image download and boot process takes up to 10 minutes before SSH is available.

Create a node

sf nodes create --capacity dev --image ubuntu-22.04.5-cuda-12.7 --cloud-init ./startup.sh
All flags are optional in interactive mode — omit them to use pickers for capacity and image.
sf nodes create

Images

List available images to find one to use with your node.
sf images ls
│ NAME        ubuntu-22.04.5-cuda-12.7
│ ID          image_TQiHEBzCA18ToAQqBtOr_
│ VISIBILITY  public
│ STATUS      completed
│ SIZE        8 GB
└ CREATED     Feb 23, 6:50pm UTC
Pass the image ID when creating a node.
sf nodes create --capacity dev --image ubuntu-22.04.5-cuda-12.7
To build and upload your own custom image, see Custom Images.

Cloud-init

Pass a startup script or cloud-config YAML via --cloud-init to configure the VM on first boot. Shell script — inject your SSH public key:
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
Cloud-config YAML — set up users and keys declaratively:
startup.yaml
#cloud-config
disable_root: false
ssh_pwauth: false
users:
  - name: root
    ssh_authorized_keys:
      - ssh-ed25519 AAAA... you@example.com
sf nodes create --capacity dev --cloud-init ./startup.yaml

Check node status

sf nodes ls
NAME        STATUS   CAPACITY  ZONE      CREATED
gpu-worker  running  dev       richmond  Mar 19, 4:40pm
Get details on a specific node.
sf nodes get gpu-worker

SSH into a node

sf nodes ssh {node-name}
The node must be in running status and the image must be fully booted. This can take up to 10 minutes after the node starts.

View logs

sf nodes logs {node-name}
Show more lines.
sf nodes logs {node-name} --limit 500

Terminate a node

Stop the VM immediately. The node moves to terminated status.
sf nodes terminate {node-name}

Delete a node

Permanently remove a node.
sf nodes delete {node-name}

Limitations

  • No persistent storage. If the underlying machine dies, you get a replacement but not the same disk.
  • No public IPs. To serve inference, set up a proxy in another cloud and connect it via VPN.
  • No InfiniBand.
  • Nodes don’t share a VPC or VLAN. Configure a VPN if you need connectivity between nodes.
  • Boot time can be up to 10 minutes for image download and startup.
  • No GPU monitoring. GPUs may occasionally fall off the bus — terminate and recreate the node, or contact us.

API reference

See the Nodes API for programmatic access.