For developers | Spacefast

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, included cached delivery, 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 → 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, an immutable 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 --jsonand 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.

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.

A version for each change

A publish that changes files freezes an immutable version with its own URL. Republishing identical files creates nothing new. Free spaces keep 200 versions, then expire the oldest ones nothing serves. The live URL 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. Static files are prepared at publish; dynamic requests use the selected runtime and may read app data. Your live version is never auto-deleted.

Leaving is one command

sf spaces download writes files from a retained version to a folder. Static sites can move with those files. Apps using Spacefast runtimes need code changes and a separate data export.

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:

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.