V2 API and CLI in preview#
Our rewritten CLI and API are now in preview, built on a new mental model for managing compute that adds reselling support. Get started using the docs.
The new CLI and API are separate from the existing legacy API, which will continue to be supported as we continue to iterate.
Resell unused compute to recoup costs#
If you have more compute than you need, you can sell it back. Once your order fills, credits are added to your balance.
# Place a buy order
sf orders create --side buy --capacity my-capacity \
--nodes 4 --start now --duration 24h \
--max-rate '$25.00'
# Sell back unused allocation
sf orders create --side sell --capacity my-capacity \
--nodes 4 --min-rate '$20.00'
CLI Rewrite#
We've rewritten our CLI in Rust for speed. The new CLI uses different command syntax, so some commands from the previous CLI won't work without changes.
If you forget to pass required flags on a command, it'll prompt you for what it needs.


Nodes now attach to Capacities#
Attach a node to a capacity and it runs as long as allocation is available. If there's no allocation yet, it enters an awaiting state and starts automatically when capacity becomes available.
# Create a node
sf nodes create --capacity my-capacity \
--image ubuntu-22.04.5-cuda-12.7
Automate managing compute with deployments and procurements#
Use deployments to keep a target number of nodes running. Use procurements to buy and sell automatically within price bounds.
# Keep 4 nodes running at all times
sf deployments create --capacity my-capacity \
--node-template my-template \
--target-node-count 4
# Scale up
sf deployments set my-deployment --target-node-count 8
# List deployments for a capacity
sf deployments list --capacity my-capacity
# Automatically buy and sell within price bounds
sf procurements create --capacity my-capacity \
--target 4 --window 1h \
--max-buy-price '$25.00' \
--min-sell-price '$20.00'
# Pause a procurement
sf procurements set my-procurement --enabled false
Node Templates#
Node templates let you define an image and startup script once, then reference the template in deployments or when creating nodes.
# Create a template
sf node-templates create --name my-template \
--image ubuntu-22.04.5-cuda-12.7 \
--cloud-init ./startup.sh
# List templates
sf node-templates list
Tag nodes and capacities#
Tags are key-value pairs you can use to organize and filter nodes and capacities.
# Add a tag
sf nodes set my-node --tag env=prod
# Filter by tag
sf nodes ls --tag env=prod
- cliOrders now show rates labeled as
$/node/hrand display the capacity's zones in the creation preview. - cliInteractive prompts now validate input inline across most commands.
- apiImproved OpenAPI spec annotations.
- appAPI keys created with "No expiration" now correctly never expire instead of defaulting to 14 days.
- appOnboarding form now correctly surfaces unexpected validation errors.
- appTestimonial company names now display inline with attribution text.
- appQuote requests no longer get presented as suggestions when they're valid orders.
- cli
sf nodes sshnow shows a message when no trusted SSH keys are configured. - cli
sf upgradeno longer triggers recursive upgrade calls. - cli
sf nodes create --max-pricenow rounds to integer cents. - cli
sf nodes create -s/--startvalidates the value and errors clearly when unparseable.
CLI sf images command#
Uploading and managing custom OS images is now available as a top-level CLI command.
# List available images
sf images list
# View image details and download URI
sf images get <image-id>
# Upload a custom image
sf images upload ./path/to/os.img
Live system status#
The landing page footer now describes real-time system status, including incidents and upcoming maintenance.



Clicking on the footer navigates to our status page.
Sunsetting Large Scale Inference#
We have sunsetted LSI batch inference to better support the great inference providers running on SFC.
Legacy VMs purchase flow deprecated#
sf buy, sf sell, and sf extend have been removed in CLI v0.30.0. Use the Nodes API and sf nodes commands to explicitly spin up, extend and release specific nodes instead.
Transaction history cutoff beyond June 10, 2025#
For older records, contact us.

- appSimplified and improved reliability for account and org management logic.
- appOptimized dashboard balance polling and data fetching for faster load times.
- cli
sf nodes lscolumn headers now show your local timezone abbreviation (e.g., PST) for start and end times. - docsCorrected cluster technical specifications in documentation.
- apiMax node name length increased from 128 to 256 characters.
- appImproved how empty zone capacity is displayed.
- appOptimized zones capacity display on small screens.
- appFixed a bug where extending multiple nodes showed 10× the correct price.
- cliFixed zones table header incorrectly wrapping to new line.
- cliFixed
sf nodes createincorrectly marking local time as UTC instead of converting it. - apiOpenAPI spec now properly disambiguates error schemas for improved SDK generation.
- apiImproved performance and reliability for balance and transaction queries.
Custom images for Nodes#
- Pre-configure Nodes with your own software and dependencies
- Supports any UEFI bootable x86_64 raw image
# Upload a custom image
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
Read the custom images documentation for more info.
Large Scale Inference (LSI) dashboard improvements#
Jobs and usage are now in a single tab, with a reworked job details view.

Create API keys in the dashboard#
API keys support custom expiration (e.g., 1d, 30d, 60d) and descriptions.

View, manage and create API keys via the dashboard here.
Zone availability summary#
The dashboard and CLI now show an availability summary for each zone, giving you a clearer picture of capacity at a glance.


Calling sf zones ls without --all in the CLI will only show zones with current and upcoming availability.
- apiNumerous LSI batch processing stability and behavior improvements.
- appHuman-readable zone names (e.g., "Fisherman's Wharf", "Lands End") are now correctly formatted.
- apiFaster balance queries speed up dashboard and CLI load times.
- cliCLI ported from Deno to Node.js, improving UX stability.
- appZone capacity graph no longer shows "0" for the current hour when GPUs are available.
- appBatch inference dashboard no longer crashes when viewing models tab.
- docsAPI docs now show prices in cents instead of centicents.
- appRemoved broken pricing components from landing page.
B200 and B300 GPUs now available#
We've added NVIDIA B200 and B300 GPUs to our fleet. Contact us to learn more.
Large Scale Inference (LSI) dashboard released#
The LSI batch inference dashboard is now generally available.
- Usage: Batch usage and billing data with day/week/month views
- Jobs: Paginated list with request counts and statuses
- Models: Available models and their pricing
- API keys: Create, view, and revoke API keys
Access LSI via the dashboard.
Reworked zones page#
The zones page now shows more detailed capacity availability information, with clearer hour boundaries for planning your workloads.

Dashboard creates Nodes instead of legacy VMs#
When you launch a node through the dashboard, it will now create a Node and not a legacy VM.
This means you can use the sf nodes CLI commands to explicitly manage your compute.
We're continuing to deprecate legacy VMs across the platform in the coming weeks. Please migrate your workloads to Nodes as soon as possible.
Automatically select the cheapest zone#
You can now create Nodes in the cheapest zone that meets hardware requirements.
In the API, add the any_zone parameter to your Node creation request. See the API documentation for request parameters.
The --any-zone flag has been added to the CLI to allow Nodes to be created in the cheapest zone that meets hardware requirements.
# Create Nodes with automatic zone selection
sf nodes create my-node-name --any-zone -d 1d -p 10.00
# Zone information shown in CLI output
sf nodes ls
sf nodes ls --verbose
Nodes created with --any-zone show "Any matching" in sf nodes ls until they are assigned to a specific zone. Reserved Nodes show the assigned zone immediately.
- appImproved billing with saved payment methods.
- apiFixed bug where transaction view would show pricing in cents instead of dollars.
- appFixed bug where transaction view would show incorrect GPU type.
- apiImproved balance checks and ledger reliability.
- appFixed waitlist handling for users joining organizations.