Publishes like a toy.
Operates like a host.

One command, or one POST, puts your build folder live on Automattic's edge. Underneath: immutable versions, one-command rollback, unmetered static serving, and a real way out.

The whole product fits in one session

Publish, inspect the history, roll back, leave. This is the shipped CLI.

$ sf publish ./dist
✓ 128 files · live in 8s → https://quiet-sun.view.fast
  this version, forever → https://v7--quiet-sun.view.fast
$ sf versions
v7  ready  live       just now
v6  ready             2 days ago
v5  ready             last week
$ sf rollback v6
✓ v6 promoted to live — a pointer flip, no rebuild, no redeploy
$ sf spaces download --output ./quiet-sun
✓ every file written to ./quiet-sun — ready to serve anywhere

CLI

sf publish ./dist and the folder is live. Later runs re-upload only what changed, and publishing identical content is a recognized no-op, not a wasted version.

HTTP API

One POST /v1/publish with a file or zip returns a JSON receipt: the live URL, a permanent version URL and a claim link. No SDK to adopt, no account before your first publish. curl -F archive=@site.zip https://api.spacefast.com/v1/publish works right now.

CI

Run the CLI or curl from any pipeline step with a scoped key. sf api-keys create --preset ci_deploy mints a least-privilege key, shown once. Every command takes --json and exits with a stable code (0 ok, 2 validation, 10 auth, 20 not found, 30 conflict, 40 network), so scripts branch on numbers, not prose.

Agents

The same CLI, API and typed errors work when an agent is at the keyboard. Every docs page is fetchable as Markdown, and a hosted MCP server gives agents typed tools to publish, check status, diff and roll back.

No terminal at all

Drop a folder, a zip or a single index.html into the dashboard.

The CLI reference covers every command and flag. The API guide covers auth, the response envelope and idempotency.

Spacefast is in research preview. Put your name down below and we’ll come and find you.

Everything is a version

One idea does most of the work here: rollback is re-pointing, preview is visiting an old version’s URL, and “what changed?” is a diff between two.

One publish, one version, forever

Every publish is frozen as an immutable version with its own permanent URL. v7--quiet-sun.view.fast serves exactly those bytes forever. The live URL is a pointer that flips atomically, so visitors never see a half-published space.

Rollback is a pointer flip

sf rollback v6 promotes an earlier version to live. No rebuild, no redeploy. Serving is precomputed at publish, so a request never waits on a build or a database. Your live version is never auto-deleted.

Leaving is one command

sf spaces download writes every file of any version straight to a folder, and sf publish puts it back up anywhere. We’d rather earn the next publish than hold the last one hostage.

Your Netlify config already works

_redirects and _headers are a Netlify-compatible subset, compiled once at publish. They ship inside the version, so routing rolls back with your space and there’s no routing dashboard to drift out of sync.

_redirects. A redirect, a proxy to a real backend, an SPA fallback:
/old-post        /new-post                     301
/api/*           https://api.acme.com/:splat   200
/*               /index.html                   200
_headers. Response and cache rules:
/assets/*
  Cache-Control: public, max-age=31536000, immutable

A 404.html at the root handles misses, the SPA fallback is auto-detected for built apps, and a 200 rule to an absolute URL proxies a path under your own domain. Browser-ready output publishes as-is. No adapter, no framework preset to pick:

  • A Next.js export
  • Vite
  • Astro
  • SvelteKit
  • Hugo
  • Plain HTML

The full rules live in the docs: redirects & rewrites and response headers.

Put your name down, and we'll come and find you.Try it on something you already made, today.

Spacefast is currently in research preview.