Push your first site
You need a directory containing an index.html (or any other static asset
your viewer will load first). Anything that runs in a static-site generator
works — Vite output, an MkDocs build, a hand-written index.html, the
output of an agent run.
Authenticate (one-time)
If you haven’t already, run bv init to capture an installation token. See
Install the CLI → Authenticate.
Push
bv push .The CLI:
- Bundles the directory into a tarball (
.git/,node_modules/, and dot-files are skipped by default; pass--include-hiddento include them). - Asks the API for a presigned R2 upload URL.
- Streams the tarball.
- Calls
finalize, which expands the tarball and publishes the site. - Prints the assigned
site_id, the URL, the manifest SHA, and the expiry timestamp.
Provisioned kind-otter-7q (https://kind-otter-7q.butverify.dev)Bundled 142 files (3568912 bytes)Uploaded tar to stagingSite: kind-otter-7qURL: https://kind-otter-7q.butverify.devStatus: liveManifest: sha256:…Expires: 2026-05-27T00:00:00ZThe URL is private by default — only you and any GitHub users granted access via the dashboard can open it.
Each push is a new site
bv push mints a fresh site_id per invocation. To re-use an existing
site_id after a transient error, pass the --upload-id from the prior
attempt:
bv push --upload-id u-1a2b3c4d… .To pin a site so it survives the retention window:
bv pin <site-id>