Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Publish, roll back, and alias a site

Every publish is an immutable deployment: boatramp sync uploads a folder’s blobs, records a manifest, and activates the site to point at it. Activation is a pointer flip, so switching between deployments is instant. This page covers publishing, inspecting history, rolling back, and aliases.

Routing config (redirects, headers, SPA fallback) lives in project.cfg; see Configure routing.

Publish a folder

sync negotiates a manifest with the server, streams only the blobs it is missing, then activates the result:

boatramp sync ./dist --site my-site --server https://pad.example.com
scanned 128 file(s), 142 unique blob(s)
uploading 12 missing blob(s) (3.4 MiB)… done
activated my-site -> 4f3a2b2c

Re-running sync on an unchanged tree uploads nothing. Change one file and only that blob uploads before the site flips. Every command on this page also accepts a global --project <name> (env BOATRAMP_PROJECT, or [publish].project); omitting it targets the reserved default project — byte-identical to pre-0.2.0. See Organize sites into a project. Preview a publish without writing anything:

boatramp sync ./dist --site my-site --dry-run
scanned 128 file(s), 12 changed — would upload 12 blob(s) (3.4 MiB), then activate
dry run: nothing uploaded

Inspect the current deployment

boatramp status --site my-site
my-site  live 4f3a2b2c  age 4m  128 files

Review history

boatramp deployments --site my-site
* 4f3a2b2c  2026-07-09 14:02  128 files
  5c7742de  2026-07-09 11:18  127 files
  1a09e3b4  2026-07-08 22:40  126 files

Label a deployment

So you can tell at a glance what a deployment is, sync records provenance alongside it — shown in status, deployments, and the web console.

When run inside a git repo, sync captures the commit SHA, branch, and (via git describe --tags) the nearest release tag automatically. Override any of them, add a free-form message, or attach arbitrary key=value tags:

boatramp sync ./dist --site my-site \
  -m "hotfix: cache headers" \
  --tag env=prod --tag ticket=ABC-123

--tag is repeatable and takes key=value. All of it is optional metadata: it never affects the (content-addressed) deployment id, and re-deploying an unchanged tree preserves the prior provenance. status shows it in full:

my-site
  deployment  4f3a2b2c
  activated   4m ago
  release     v1.2.3
  tags        env=prod ticket=ABC-123

Roll back

Re-activate the previous deployment. Because activation is a pointer flip, this takes effect at once and uploads nothing:

boatramp rollback --site my-site
my-site rolled back to 5c7742de (was 4f3a2b2c)

Target a specific deployment by its id or a unique prefix:

boatramp rollback 1a09e3b4 --site my-site
my-site activated 1a09e3b4 (was 4f3a2b2c)

Point an alias at a deployment

An alias is a named pointer alongside the live site — a staging URL, a per-branch preview. Point one at a deployment id (from deployments):

boatramp alias set staging 4f3a2b2c --site my-site
alias staging -> 4f3a2b2c

List and remove aliases:

boatramp alias ls --site my-site
boatramp alias rm staging --site my-site

To serve an alias on its own hostname, see Attach a custom domain. For every command and flag, see the CLI reference.