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

Cargo features & platform support

boatramp is one binary of feature-gated crates, but the default build is batteries-included: it enables every non-conflicting feature, so a plain cargo build, the Nix/OCI images, and the release binaries all ship the full capability set — there is no “the server was built without X”. This page lists the cargo features (all default-on) and then which capabilities are Linux-only. To build a minimal binary instead, see Build from source.

Cargo build features

Every feature below is on by default. The whole set composes (there are no mutually-exclusive features; the runtime --blobs / --kv / --tls selectors pick among the compiled-in backends), and the nightly --all-features gate proves it. Should a feature ever genuinely conflict with another, it would be dropped from the default and shipped as its own build variant.

For a minimal build, opt out and name only what you want:

cargo build --release -p boatramp --no-default-features --features fs,slatedb

Some features imply others: http3/acme-dns imply tls; cluster implies handlers + slatedb; operator implies cluster; each sql-* and orm-subquery imply handlers.

FeatureDefaultEnables
fsyesFilesystem blob backend (--blobs fs).
slatedbyesThe default --kv slatedb: a durable transactional LSM over an object_store backend.
s3yesS3 blob backend (--blobs s3) + its S3→SQS blob-change notification provider.
gcsyesGoogle Cloud Storage blob backend (--blobs gcs) + its GCS→Pub/Sub notification provider.
azureyesAzure Blob Storage backend (--blobs azure) + its Event Grid→Storage Queue notification provider.
cloudflare-kvyesCloudflare KV metadata backend.
tlsyesHTTPS: --tls custom (operator cert) and --tls acme (automatic certs).
acme-dnsyesWildcard TLS via ACME DNS-01 plus the dns subcommand (--tls acme-dns) and the pluggable DNS-provider clients. Implies tls.
http3yesHTTP/3 (QUIC) serving alongside the TLS TCP listener. Implies tls.
oidcyesOIDC → token exchange: verify serve against an OIDC issuer’s JWKS.
signer-awsyesExternal token signer backed by AWS KMS.
signer-gcpyesExternal token signer backed by GCP KMS.
signer-azureyesExternal token signer backed by Azure Key Vault.
signer-vaultyesExternal token signer backed by HashiCorp Vault.
signer-pkcs11yesExternal token signer backed by a PKCS#11 HSM.
compressionyesOn-the-fly response compression, opt-in per site.
bundleryesThe in-process JS/TS + CSS bundler for boatramp bundle.
handlersyesThe wasmtime handler engine, component validation at sync, and the sql handler binding (with the typed orm query builder over the same databases).
clusteryesSelf-hosted Raft cluster mode. Implies handlers and slatedb.
sql-postgresyesExternal (bring-your-own) PostgreSQL for the handler sql binding, opened by name. Implies handlers.
sql-mysqlyesExternal (bring-your-own) MySQL/MariaDB for the handler sql binding, opened by name. Implies handlers.
orm-subqueryyesThe typed orm builder’s correlated roll-up (related_count/related_agg) and narrow scalar/IN subqueries — the one scalar-subquery form. Implies handlers; drop it to ship a host that refuses correlated subqueries. (pgvector distance and the rest of the orm surface are always compiled — not a cargo feature; pgvector is advertised to guests as the experimental orm-vector capability — a requires gate, not a build feature.)
emailyesThe per-project SMTP email gateway: the boatramp:handlers/email guest capability + the boatramp email admin subcommand (host-held credentials, durable spool). Implies handlers; drop it for a build with no SMTP client.
adminyesThe guest project self-config capability boatramp:handlers/admin — a guest reconfigures its own project (domains / email / site / secrets) without a token, per-surface and posture-gated. Implies handlers; drop it for a build with no guest self-config.
capabilityyesThe guest capability-minting capability boatramp:handlers/capability — a guest mints a fleet-signed, own-project-only target capability (audience host-forced, TTL-clamped, deny-by-default). Implies handlers; drop it for a build with no guest capability minting.
sessionyesThe duplex guest session capability boatramp:handlers/session — a host-owned SSE-out + POST-in channel with host-managed ordering, resume, and lifetime. Implies handlers.
consoleyesBake the web management console (a Wasm SPA) into the binary; serve it at an operator-configured host+path ([serve.console]). On in every shipped build (release binaries + Nix/OCI images), which stage the built SPA in; a from-source build embeds a placeholder unless you build the SPA first with just console.
mcpyesThe Model Context Protocol server: the boatramp mcp stdio subcommand + the HTTP /mcp endpoint on serve. Also enables boatramp-server/mcp.

Two more features are on by default but omitted from the table above: domain-verify-dns (verify a host’s _boatramp-verify TXT over public DNS) and operator (the in-binary Kubernetes operator; implies cluster).

The COSE/CWT + Cedar control-plane auth, the OCI→ext4 rootfs build, and the container / microVM / remote-docker compute backends are compiled into every build; they are not behind cargo features. The compute code that needs Linux is gated at the source level and compiles to no-ops elsewhere.

# A minimal build (filesystem blobs + embedded KV only).
cargo build --release -p boatramp --no-default-features --features fs,slatedb

Platform support

The publish / serve / handler / TLS / cluster core is cross-platform. The compute execution backends differ:

PlatformCompute backends
Linux x86_64, aarch64microVM (needs /dev/kvm), native container, remote-docker
macOS, Windowsremote-docker only

The microVM and native-container backends need /dev/kvm, namespaces, and the jailer, so they are Linux-only; on macOS and Windows that code compiles to no-ops and compute runs through the remote-docker backend against a Linux Docker host.

See also