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

CLI

boatramp is one binary: the server (serve) and every client command. This page documents each command. Any command also prints its own flags with boatramp <command> --help, and group commands list their sub-actions with boatramp <command> help.

Precedence for any overridable value: flag / environment variable > config file > built-in default. Project commands read project.cfg; serve reads boatramp.cfg.

Global flags

FlagDescription
--config <path>Config file (project.cfg for client commands, boatramp.cfg for serve).
-h, --helpPrint help for the binary or a subcommand.
-V, --versionPrint the version.

Common client flags

Most client commands accept these, so the per-command tables below list only the flags unique to each command:

FlagEnvDescription
--server <url>BOATRAMP_SERVERServer base URL (overrides publish.server).
--site <name>BOATRAMP_SITETarget site (overrides publish.site).
--project <name>BOATRAMP_PROJECTTarget project for site-scoped commands. Falls back to [publish].project → the reserved default project; omitting it is byte-identical to pre-0.2.0.
BOATRAMP_SERVER_PUBKEYPin the control plane to a --tls rpk server’s raw public key (the hex it prints at startup). See Reach the control plane on day zero.

Commands

CommandWhat it does
serveRun the HTTP server and publishing API.
projectManage projects — the Workspace that owns sites, functions, and compute.
applyReconcile a whole project (sites + functions + compute) from a declarative apply.cfg manifest.
migrateMigrate a pre-0.2.0 control-plane store to the project-scoped layout.
sync <dir>Build (optional) and publish a folder as a new atomic deployment.
buildRun the configured build command only.
bundleBundle JS/TS + CSS in-process (bundler feature).
composeFuse several Wasm components into one linked handler.
validateParse and check a project.cfg (its routing section).
deploymentsList a site’s deployment history.
rollbackRoll back to the previous (or a specific) deployment.
statusShow a site’s current deployment.
domainAttach/detach hostnames to a site.
aliasManage named pointers to deployments.
accessConfigure visitor access control.
tokenManage control-plane API tokens.
clusterOperate a cluster’s dynamic-join membership.
operatorRun the in-binary Kubernetes operator / print its manifests.
securityInspect the operator security posture.
authGenerate/inspect the root key; edit the RBAC policy.
gatewayPublish a private service through the reverse-proxy gateway.
computeManage microVM compute workloads.
blobUpload a file as a content-addressed blob.
configRead/change the dynamic daemon config (no restart).
mcpRun the Model Context Protocol server (drive boatramp from an AI agent).
dnsConfigure DNS and issue wildcard preview certs (acme-dns feature).
logsTail a site’s captured guest stdout/stderr.
statsShow handler stats, consumer lag, and dead letters.
dlqPurge or redrive a consumer topic’s dead-letter queue.
pruneDelete orphan deployments and unreferenced blobs.
scrubVerify every stored blob still hashes to its key.
cert-statusShow cluster-managed certificate status.
completions <shell>Print a shell-completion script.
manRender the man page to stdout.
cloudflareDeploy to Cloudflare Containers natively over the REST API (cluster feature).

Exit status is 0 on success and non-zero on failure; see Errors & exit codes.

boatramp serve

Run the server: selects backends, TLS, auth, and (with the cluster feature) cluster mode. The cluster: and compute: sections are configured in boatramp.cfg, not on the command line.

Address, storage, cache

FlagEnvDefaultDescription
--addr <host:port>BOATRAMP_ADDR127.0.0.1:8080Bind address.
--data-dir <path>BOATRAMP_DATA_DIR./dataBlob + KV root for the filesystem backends.
--blobs <fs|s3|gcs|azure>BOATRAMP_BLOBSfsBlob backend (s3/gcs/azure are in the default build).
--kv <slatedb|memory|cloudflare>BOATRAMP_KVslatedbKV backend (cloudflare is in the default build).
--kv-s3BOATRAMP_KV_S3falseRun the SlateDB KV on the S3/R2 object store (reusing the --blobs s3 config) instead of local disk — durable metadata for a volumeless container.
--kv-s3-prefix <prefix>BOATRAMP_KV_S3_PREFIX_kvKey prefix for the --kv-s3 store within the bucket.
--s3-bucket <name>BOATRAMP_S3_BUCKETS3/R2 bucket (--blobs s3 and/or --kv-s3).
--s3-endpoint <url>BOATRAMP_S3_ENDPOINTS3 endpoint (MinIO / R2).
--s3-region <region>BOATRAMP_S3_REGIONS3 region (R2: auto).
--s3-path-styleBOATRAMP_S3_PATH_STYLEfalseUse path-style S3 addressing (R2 accepts it).
--gcs-bucket <name>BOATRAMP_GCS_BUCKETGCS bucket (--blobs gcs). Credentials via Application Default Credentials.
--gcs-endpoint <url>BOATRAMP_GCS_ENDPOINTGCS endpoint (a fake-gcs-server emulator).
--gcs-anonymousBOATRAMP_GCS_ANONYMOUSfalseSkip GCS credential resolution (the emulator).
--azure-account <name>BOATRAMP_AZURE_ACCOUNTAzure storage account (--blobs azure).
--azure-container <name>BOATRAMP_AZURE_CONTAINERAzure container (--blobs azure).
--azure-access-key <key>BOATRAMP_AZURE_ACCESS_KEYAzure shared-key auth (prefer the env var).
--azure-emulatorBOATRAMP_AZURE_EMULATORfalseUse the Azurite emulator (well-known dev credentials).
--cache-entries <n>256Front metadata cache size.

Authentication

FlagEnvDescription
--auth-root-private-key <alg:hex>BOATRAMP_AUTH_ROOT_PRIVATE_KEYRoot key: verify and mint tokens.
--auth-root-public-key <alg:hex>BOATRAMP_AUTH_ROOT_PUBLIC_KEYRoot key: verify only.
--bootstrap-secret <secret>BOATRAMP_BOOTSTRAP_SECRETSingle-use secret enabling token bootstrap.
--oidc-issuer <url>BOATRAMP_OIDC_ISSUEREnable OIDC → token exchange for this issuer.
--oidc-audience <aud>BOATRAMP_OIDC_AUDIENCERequired audience claim.
--oidc-scope-claim <name>BOATRAMP_OIDC_SCOPE_CLAIMClaim mapped to boatramp roles.

Warning: with no root key, control-plane auth is disabled. Under the default multi-tenant posture, serve refuses to start that way on a non-loopback --addr. Configure a key, bind 127.0.0.1, or select a looser security posture.

TLS

FlagDefaultDescription
--tls <off|custom|acme|acme-dns|rpk>offTLS mode (HTTPS needs the tls feature). rpk = a pinned raw-public-key control channel; see Reach the control plane on day zero.
--tls-cert <path> / --tls-key <path>Certificate + key for --tls custom.
--acme-domain <domain>Domain to issue for (repeatable).
--acme-directory <url>Let’s Encrypt productionACME directory URL.
--acme-contact <email>ACME account contact.
--acme-ca-cert <path>Extra CA root (for a private ACME CA).
--acme-cache <path>./data/acmeCertificate cache directory.
--acme-dns-provider <name>manualDNS-01 provider (--tls acme-dns); see DNS providers.
--acme-wildcard-previewfalseAlso issue *.deploy.<domain> for by-id previews.
--http-redirect-addr <host:port>BOATRAMP_HTTP_REDIRECT_ADDRSecond listener that 308s plain HTTP to HTTPS.

Uploads, serving, cluster

FlagEnvDefaultDescription
--max-upload-bytes <n>BOATRAMP_MAX_UPLOAD_BYTESunlimitedReject larger blob uploads.
--upload-idle-timeout-secs <n>BOATRAMP_UPLOAD_IDLE_TIMEOUTAbort an upload idle this long.
--max-concurrent-uploads <n>BOATRAMP_MAX_CONCURRENT_UPLOADSCap simultaneous uploads.
--default-site <name>BOATRAMP_DEFAULT_SITESite served for an unmatched Host (see addressing).
--pop-origin <url>BOATRAMP_POP_ORIGINCanonical origin a per-request proof-of-possession must bind. Required for holder-bound (cnf/PoP) tokens. See PoP-bind a token.
--protect-previewsBOATRAMP_PROTECT_PREVIEWSfalseRequire a token to view /_deploy previews.
--auto-migratefalseMigrate a pre-0.2.0 store to the project-scoped layout at startup instead of refusing to serve. The migration is online, idempotent, and resumable; see migrate for the explicit operator step.
--cluster-rate-limitBOATRAMP_CLUSTER_RATE_LIMITfalseRate-limit cluster-wide via the KV, not per node.
--shared-cache-coherenceBOATRAMP_SHARED_CACHE_COHERENCEfalseKeep the config cache coherent across processes sharing one KV.
--cluster-initBOATRAMP_CLUSTER_INITfalseFound a new cluster from this node (explicit, one-time). See Deploy a cluster.
--cluster-join <ticket>BOATRAMP_CLUSTER_JOINJoin an existing cluster with a one-paste ticket from cluster add.
--cluster-advertise-addr <url>BOATRAMP_CLUSTER_ADVERTISE_ADDRhttps://<cluster.listen>This node’s reachable mesh URL peers dial (set behind NAT / 0.0.0.0).
boatramp serve --config boatramp.cfg \
  --addr 0.0.0.0:8080 --tls acme --acme-domain pad.example.com

boatramp project

Manage projects — the Workspace that owns sites, functions, and compute, and is the tenant boundary a handler’s row-level scope resolves to. Takes the common --server flag.

Sub-actionDescription
create <name>Create a project. <name> is a slug (no /). Flags: --display <name>, --description <text>, --region <name> (default region for the project’s compute/replicas).
lsList all projects.
show <name>Print one project’s full record.
rm <name>Delete a project (refused while it still owns resources, or for the reserved default).

boatramp apply

Reconcile a whole project — its member sites (each a content dir + optional build + routing + config), top-level functions, and compute workloads — from one declarative RON manifest, in a single pass. Sites reuse the content-addressed sync flow (upload only the missing blobs, then activate); functions and compute are create-or-replace. apply is pure upsert and never prunes, so declarative and imperative (CLI/API) management coexist. See Declare a project with apply.

FlagDefaultDescription
-f, --file <path>apply.cfgThe project manifest (RON).
--server <url>Server base URL (overrides [publish].server; env BOATRAMP_SERVER).
--dry-runPrint the plan (what would be built/deployed/activated) and mutate nothing.
--buildRun each site’s configured build command before publishing it.

The target project is the manifest’s project: field, else the global --project / default.

boatramp migrate

Migrate a pre-0.2.0 control-plane store to the project-scoped layout (mutable per-name records re-key under project/<proj>/…; no content-addressed body moves). The migration is online, idempotent, and resumable. serve refuses an unmigrated store unless started with --auto-migrate. See Upgrade a store to project scoping.

FlagDefaultDescription
--data-dir <path>BOATRAMP_DATA_DIRBlob + KV root (the store to migrate).
--kv <slatedb|memory|cloudflare>slatedbKV backend.
--dry-runScan and print the rewrites; write nothing.
--stageCopy-only pass: write the new keys but leave the old ones for a soak/rollback window (the 2-dual state).
--finalizeDelete the old-layout keys left by an earlier --stage, completing the migration.

A plain boatramp migrate (no --stage) copies and finalizes in one shot.

boatramp sync

Build (optional) and publish a folder as a new atomic deployment. Argument: [PATH] — the directory to publish (defaults to build.output, then .).

FlagDescription
--build / --no-buildForce or skip the configured build command.
--no-activateUpload the deployment but do not make it current.
-m, --message <msg>Deploy message recorded with the deployment.
--source <rev>Source revision (defaults to the current git commit SHA).
--branch <branch>Source branch (defaults to the current git branch).
--author <author>Deploy author.

boatramp build

Run the configured build command only.

FlagDescription
--command <cmd>Override the configured build command.

boatramp bundle

Bundle JS/TS (Rolldown) + CSS (lightningcss) in-process. Needs the bundler feature; configured by the bundle section of project.cfg.

boatramp compose

Fuse a root (“edge”) component with one or more plugin components into a single linked component, in-process — no external toolchain, no network hop. The fused component’s exports are unchanged (still e.g. wasi:http/incoming-handler); only the imports a plugin satisfies are linked internally, while host imports (wasi:http, sql, kv, …) stay imported for the runtime to supply. Deploy the one fused .wasm through the normal content-addressed path. See Compose components into one handler.

FlagDescription
--edge <COMPONENT>The root component: exports the handler world, imports what the plugins provide.
--plugin <COMPONENT>A plugin whose exports satisfy one of the edge’s imports. Repeatable.
-o, --output <PATH>Where to write the fused component.

boatramp validate

Parse and check a project.cfg (its routing section). Argument: [PATH] — the config to validate (default project.cfg). See the routing schema.

boatramp deployments

List a site’s deployment history.

FlagDefaultDescription
--limit <n>20Maximum number of deployments to show.

boatramp rollback

Roll back to the previous (or a specific) deployment.

FlagDescription
--to <id>Deployment id (or unique prefix) to activate. Defaults to the previous one.

boatramp status

Show a site’s current deployment (id, age, size). No command-specific flags.

boatramp domain

Attach/detach hostnames to a site (virtualhost routing). See Attach a custom domain.

Sub-actionDescription
add <host>Verify ownership and attach (use *.example.com for a wildcard). Verifies + attaches in one step when the host already resolves here; otherwise prints the challenge to finish with verify.
verify <host>Check the challenge; on success the host is attached.
rm <host>Detach a hostname and drop its verification.
lsList the site’s hostnames and pending verifications.

domain add flags:

FlagDefaultDescription
--method <http|dns>httpServe a token file (http) or publish a TXT record (dns, needs domain-verify-dns).
--provider <name>Managed-DNS provider (e.g. cloudflare, route53): publish the _boatramp-verify TXT, poll, and attach — no manual DNS edit. Implies --method dns; needs acme-dns.
--no-waitOnly start the challenge and print instructions; skip the immediate verify+attach self-check.

boatramp alias

Manage named pointers (staging, previews) to deployments. See Publish, roll back & alias.

Sub-actionDescription
set <name> <deployment>Point an alias at a deployment id (or unique history prefix).
rm <name>Remove a named alias.
lsList the site’s aliases.

boatramp access

Configure visitor access control. See Restrict visitor access.

Sub-actionDescription
showShow the site’s current access-control policy.
basic-auth add|rm|clearManage HTTP Basic auth credentials. add reads the password from --password or stdin.
ip allow|deny|clearManage IP allow/deny rules (CIDR or bare address); deny wins over allow.
rate-limit set|offSet the per-client requests/second (+ optional burst) or disable it.
trusted-proxy add|clearTrust a reverse proxy by CIDR so its X-Forwarded-For is believed.

boatramp token

Manage control-plane API tokens. See Bootstrap authentication and the RBAC reference.

Sub-actionDescription
create <label>Mint a token (printed once).
bootstrapMint the first token with the single-use BOATRAMP_BOOTSTRAP_SECRET — no admin token needed.
mintMint a token offline via the configured signer (local key or KMS/HSM), no server.
attenuate <credential>Narrow a delegatable token offline by signing a restrict-only block.
lsList issued tokens (short id, label, roles, expiry).
rm <id>Revoke a token by its id or a unique prefix.

create / mint flags:

FlagDescription
--role <role>Role, repeatable: <role> (global), <role>:<project>/<site> (site-scoped), or <role>:<project> (project-scoped). A legacy <role>:<site> is read as default/<site>. Required. See the RBAC reference.
--ttl-secs <n>Time-to-live in seconds (omit for no expiry).
--holder-pub <alg:hex>Make the token delegatable: embed this holder public key as the cnf.
--popMake the token PoP-bound: generate a holder keypair, mint against its public half, and print BOATRAMP_TOKEN + BOATRAMP_TOKEN_HOLDER_KEY exports. Conflicts with --holder-pub. See PoP-bind a token.

attenuate flags:

FlagEnvDescription
--holder-key <alg:hex>BOATRAMP_HOLDER_KEYHolder private key the parent block’s cnf authorized. Required.
--only-site <site>Restrict to a single site.
--read-onlyRestrict to read-only operations.
--not-after <unix-secs>Shorten the lifetime.
--next-holder-pub <alg:hex>Permit one further attenuation by this key; omit to make this the last block.

boatramp cluster

Operate a self-hosted cluster’s dynamic-join membership. See Deploy a self-hosted cluster.

Sub-actionDescription
add --root-pubkey <k> [--seed <addr>] [--ttl-secs <n>] [--print-token-only]Print a one-paste join ticket (single-use token + seed + root anchor) for a new node.
status [--full]Show membership address-primary (ADDRESS/ROLE/NODE/STATE); --full shows whole node ids.
promote <address|node>Promote a caught-up learner to a voter (build a quorum on bare metal). Target the leader.
remove <address|node>Remove a node (subsumes revoke): revoke trust cluster-wide + drop from the quorum. Target the leader.
join-token [--ttl-secs <n>]Mint a raw single-use bearer join token (low-level; prefer add).
rotate-keyRotate the --server node’s own mesh key, make-before-break (node-local).
revoke <node>Revoke a node by raw node id (low-level; prefer remove).

boatramp operator

Run the in-binary Kubernetes operator, or print its install manifests. See Run on Kubernetes. The operator feature is in the default (batteries-included) build; a minimal build re-adds it with --features operator.

Sub-actionDescription
run [--namespace <ns>]Run the controller: watch the boatramp CRDs and reconcile them.
crdsPrint the CRD YAML (BoatRampCluster / Site / Function).
manifestsPrint the full install bundle: CRDs + least-privilege RBAC + the operator Deployment.

boatramp security

Inspect the operator security posture. See Security posture.

Sub-actionDescription
explainPrint the resolved posture from boatramp.cfg (profile + every knob’s value and source).

boatramp auth

Generate/inspect the control-plane root key and edit the RBAC policy. See Authentication & authorization.

Sub-actionDescription
initGenerate a fresh ES256 root keypair.
pubkey --private-key <alg:hex>Derive the public key from a root private key.
pin --root-pubkey <k>Resolve a --tls rpk server’s TLS pin from the root anchor (prints BOATRAMP_SERVER_PUBKEY).
rotate-root [--add <pubkey>] [--retire <pubkey>]Make-before-break root rotation: trust a new anchor, or retire an old one; no flag lists the extra anchors. See Migrate the root key.
policy getPrint the active RBAC policy as JSON (the built-in default if none is stored).
policy set <file.json>Replace the policy from a JSON file (validated server-side).

boatramp gateway

Publish a private service through the reverse-proxy gateway. See Expose a private service.

Sub-actionDescription
lsList declared upstreams and routes.
upstream add <name> …Declare/replace an upstream: a single target, a pool of --backend URLs, or --discover-host/--discover-port for a DNS-discovered pool.
upstream rm <name>Remove an upstream and any routes that reference it.
route add <match> <upstream>Forward a path match to an upstream (appended to the end).
route rm <match>Remove the route with this match.

boatramp compute

Manage Firecracker microVM compute workloads. See Run a container or microVM.

Sub-actionDescription
lsList workloads and their reconcile state.
get <name>Print one workload’s desired state as JSON.
set <name> …Create/update a workload from already-pushed rootfs/kernel blobs.
build <name> …Build an ext4 rootfs from an OCI image, upload it, and set the workload (needs mke2fs).
rm <name>Remove a workload (its replicas are stopped).

set takes exactly one root-filesystem source (matched to the substrate); build instead takes --image + --size-mib and produces a --rootfs source:

FlagDefaultDescription
--image <ref>An OCI image reference the runtime pulls (set: docker/cloudflare). On build, the OCI image to build an ext4 rootfs from.
--tar <hash|file|url>A tar rootfs archive for the native container substrate (set only). A blob hash, a local file, or a URL (file/URL is uploaded).
--rootfs <hash|file|url>A rootfs filesystem image (a block device — ext4 by default, or any filesystem the guest kernel mounts) for the firecracker micro-VM (set only). A blob hash, a local file, or a URL (file/URL is uploaded).
--kernel <hash|file|url>The vmlinux kernel the micro-VM boots (a --rootfs / build workload) — a blob hash, a local file, or a URL. See the kernel note.
--size-mib <n>1024ext4 rootfs image size (build only).
--port <n>In-guest TCP port the app listens on. Required.
--vcpus <n>1Virtual CPUs.
--mem-mib <n>256Guest memory (MiB).
--replicas <n>1Desired replica count.
--entrypoint <arg>In-guest entrypoint argv (repeatable).
--env <K=V>Environment variable (repeatable).
--restart <always|…>alwaysRestart policy.
--scale-to-zerofalseSnapshot + stop when idle; restore on the next request.
--isolation <trusted|untrusted>trusteduntrusted forces a microVM (never a shared kernel).
--region <name>Allowed placement region (repeatable; empty = any).

The kernel blob

A microVM boots an uncompressed Linux kernel (vmlinux) plus an ext4 rootfs. --kernel accepts a local file, a URL, or the content-addressed blob hash of a kernel already uploaded; a file or URL is uploaded for you, and the server fetches the blob and boots it. Supply a Firecracker-compatible vmlinux (build one, or use a released microVM kernel) and provision it once, shared across workloads. See Run a container or microVM.

boatramp blob

Upload a file as a content-addressed blob — the general way to provision an artifact (a microVM kernel, a prebuilt rootfs) that another command references by hash.

Sub-actionDescription
put <file>Upload a file as a blob; prints its hash (the key to pass to compute set --kernel/--rootfs).

boatramp config

Read and change the dynamic daemon config — operational knobs that converge fleet-wide without a restart. See the dynamic daemon config reference and the configuration model.

Sub-actionDescription
get [key]Print the active config + its generation, or one key’s value.
set <key> <value>Set one dynamic key (null/unset clears it); converges fleet-wide, validated server-side.
rollbackRevert to the previous generation.
apply -f <file>Replace the whole dynamic config from a JSON file.
listList the dynamic (runtime-settable) keys.
describe <key>A key’s change class (dynamic vs restart).

config set on a restart-class key (a trust anchor, posture, or listener setting) fails with a pointer to boatramp.cfg rather than silently doing nothing.

boatramp mcp

Run the Model Context Protocol server so an AI agent (Claude, Codex, …) can drive one or more instances. Bare boatramp mcp serves over stdio (what a desktop agent spawns); the server can also be reached over HTTP at /mcp on any boatramp serve (on by default). See Drive boatramp from an AI agent.

Sub-actionDescription
(none) / serveServe the MCP protocol over stdio until the client disconnects.
setup add <name> --server <url> [flags]Register an instance in ~/.config/boatramp/mcp.toml.
setup listList the registered instances.
setup remove <name>Remove a registered instance.

setup add flags: --token <spec> (an env:VAR / path:/file / literal token), --holder-key <spec> (a cnf holder key for DPoP), --server-pubkey <hex> (pin the server’s raw public key), --insecure (skip TLS verification). Secrets are stored as specs, never resolved into the file.

boatramp dns

Configure DNS and issue wildcard preview certificates. Needs the acme-dns feature. Every sub-action takes --provider <name>; each provider reads its credentials from the environment (see DNS providers).

Sub-actionDescription
setup --provider <p> --host <h> --target <t>Create the *.deploy.<host> record so by-id preview subdomains resolve here.
configure-domain <host> --provider <p> --target <t>Point a verified custom domain at this server (upsert A/AAAA/CNAME). --proxied for Cloudflare orange-cloud.
cert --provider <p> --host <h>Issue/renew the *.deploy.<host> wildcard cert via ACME DNS-01.

boatramp logs

Tail a site’s captured guest stdout/stderr. See Observe a running server.

FlagDefaultDescription
--stream <stdout|stderr>bothOnly show one stream.
--limit <n>200Number of recent lines to show.
-f, --followKeep polling for new lines (like tail -f).

boatramp stats

Show a site’s handler invocation stats, consumer lag, and dead letters. No command-specific flags.

boatramp dlq

Purge or redrive a consumer topic’s dead-letter queue. See Run background work.

Sub-actionDescription
purge <topic>Drop a topic’s dead-lettered messages (records + payloads).
redrive <topic>Requeue a topic’s dead-lettered messages with a fresh attempt count.

boatramp prune

Delete orphan deployments and unreferenced blobs. See Prune & scrub.

FlagDefaultDescription
--dry-runOnly report what would be removed.
-y, --yesDelete without confirmation.
--keep-last <n>Keep at most this many recent deployments per site.
--keep-age <secs>Also keep any deployment activated within this many seconds.
--grace <secs>3600Never collect a deployment first seen this recently (races an in-flight deploy).

boatramp scrub

Verify every stored blob still hashes to its key (integrity scrub). No command-specific flags.

boatramp cert-status

Show cluster-managed certificate status (domain + expiry). No command-specific flags.

boatramp completions / man

CommandDescription
completions <shell>Print a shell-completion script (bash, zsh, fish, …).
manRender the man page to stdout (boatramp man > boatramp.1).

boatramp cloudflare

Deploy boatramp to Cloudflare Containers natively over the CF REST API (no wrangler) — behind an edge Worker, as a single durable instance with all state in R2. Needs the cluster feature and CLOUDFLARE_ACCOUNT_ID + CLOUDFLARE_API_TOKEN (Workers Scripts, Containers, R2, D1 scopes). A multi-node Raft quorum isn’t possible on the platform, so only --quorum 1 deploys. See Deploy on Cloudflare Containers.

FlagDefaultDescription
--region <code>CF region to run in (repeatable; on CF only one deploys).
--primary <code>The primary region (must be one of --region).
--quorum <n>3Voting nodes — must be 1 on Cloudflare (single durable instance).
--image <ref>boatramp:latestContainer image (pushed to a registry CF can pull).
--domain <host>Public domain the edge Worker serves (repeatable).
--r2-bucket <name>boatramp-blobsR2 bucket for durable blobs + the SlateDB KV.
--d1 <name>boatramp-sqlD1 database for the handler sql binding.
--auth-root-private-key <alg:hex>env BOATRAMP_AUTH_ROOT_PRIVATE_KEYControl-plane root key; generated + printed once if unset.
--container-env <KEY=VALUE>Extra env for the container (repeatable) — e.g. a handler’s webhook secret.
--dry-runfalsePrint the plan; mutate nothing.
--emit-artifacts <dir>Write reference artifacts (Dockerfile, edge Worker, node configs) instead of deploying.