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.