Create the first Web Yard
A Web Yard is a named public destination inside a project. Deploying publishes static files to its stable blobyard.app address. The stored deployment remains private Blob Yard data until you explicitly publish it.
blobyard --workspace <workspace-slug> --project <project-slug> deploy <local-directory> --yard <yard-name> --publicblobyard --workspace example-team --project web-products deploy ./dist --yard marketing --publicThe result includes a stable URL for the Yard and an immutable deploymentUrl for the exact retained deployment. Rollback changes only the stable URL target. A pruned deployment URL returns 404.
Configure multiple destinations
[yards.marketing]
directory = "apps/marketing/dist"
clean_urls = true
[yards.docs]
directory = "apps/docs/dist"
clean_urls = true
[yards.dashboard]
directory = "apps/dashboard/dist"
spa = trueblobyard deploy --all --publicEach named table is independent. A monorepo can publish marketing, documentation, a dashboard, and Storybook without forcing them into one build directory or one deployment history.
Choose routing behavior
- Directory index serves a directory's index.html.
- Clean URLs resolve /guide to /guide.html when that file exists.
- SPA fallback serves the root index.html when no file route matches.
- A root 404.html becomes the custom not-found response.
- Static files support HEAD, ETag, conditional requests, and byte ranges.
Inspect history and roll back
blobyard yard list
blobyard yard show marketing
blobyard yard history marketing
blobyard yard rollback marketing <deploy-id>
blobyard yard delete marketing- uploading means files are still transferring.
- finalising means the manifest is complete and the public alias is being confirmed.
- live is the deployment currently served at the stable URL.
- superseded is an older deployment available for rollback.
- failed records an actionable deployment error without exposing storage credentials.
- pruned means the history entry no longer retains its files.
Blob Yard retains the current deployment plus the nine newest other deployments. A rollback changes the live deployment without changing the public host or any immutable deployment URL.
Deploy from automation and agents
GitHub Actions can exchange repository-scoped OIDC identity for a short machine session. API and MCP clients use the same scoped Web Yard contract. No permanent storage credential enters the runner, agent, or browser.
Understand limits and the public boundary
- A Web Yard accepts at most 10,000 files in one deployment and requires root index.html.
- Yard allowances are pooled across the billing account and depend on the active plan.
- A plan downgrade keeps existing Web Yards serving but can block new deployments until usage is remediated.
- Web Yard bytes count toward the same durable storage allowance as other Blob Yard data.
- Public delivery has no bandwidth or download charge, subject to the published fair-use policy.
Recover from common failures
- If root index.html is missing, rebuild the selected directory and deploy again.
- If a newer deployment already started, an older upload cannot replace it. Inspect history and redeploy the intended build.
- If the account is over its plan allowance or restricted, existing content keeps serving while new deployments remain blocked.
- If --all reports a partial failure, retry the failed Yard by name rather than reversing successful deployments.
- If a route serves the SPA shell unexpectedly, disable SPA mode and use directory indexes or clean URLs.