features · ship & automate

One hull, every port, and agent-native.

Ship the single binary anywhere (bare metal, containers, NixOS, Cloudflare) and hand the whole control plane to an AI agent over MCP.

Everything is pre-1.0. Where a capability's live validation is still in flight, it's marked: live seam beta in progress
01 / SHIP

One hull, every port.

Single static binary
Server + publishing API + CLI in one file; every heavy backend lives behind a compile-time feature.
1 file
Config from the environment
Every serve setting is settable from BOATRAMP_* variables (the whole config, layered env > file > default), so a node needs no boatramp.cfg at all, even one running a managed co-located Postgres or issuing a wildcard cert. 12-factor deploys on fly.io, Cloudflare, or any container platform.
BOATRAMP_*
Config versioning + JSON
Author config in RON or JSON (auto-detected, so you can generate it from Nickel), and stamp an apply manifest with a version: that opts an older document into a loose-parse → migrate → typed pipeline; upgrade it in place with config migrate.
--format json · config migrate
Prebuilt everywhere
Linux (x86_64 + arm64), macOS, and Windows binaries, an install script, and a Homebrew tap.
install.sh
OCI image
A multi-arch, non-root container image at ghcr.io/boatramp/boatramp, a fully-static musl binary with jemalloc, ~49 MB compressed with zero dynamic dependencies (just the binary and CA certs).
docker
NixOS + systemd
A flake, an overlay, and a declarative services.boatramp module with a hardened systemd unit.
services.boatramp
Embed as a library
boatramp_node::assemble builds the exact serve-node graph the binary runs, so you can embed a full boatramp node (single-node or cluster) inside your own Rust service.
boatramp_node
Cloudflare deploy live seam
Deploy to Cloudflare over the CF REST API with boatramp cloudflare. No wrangler, nothing generated for you to run: it provisions R2 + D1, uploads the edge Worker + Durable Object, and creates the container app. --dry-run previews the plan.
boatramp cloudflare
02 / AGENT-NATIVE

Hand the helm to an agent.

MCP server
The same binary ships a Model Context Protocol server, so an agent like Claude (Desktop, Code) or Codex operates your control plane in natural language: list sites, activate or roll back, tail logs, invoke functions, inspect the cluster.
boatramp mcp
Two transports
A boatramp mcp stdio subcommand a desktop agent spawns, and a POST /mcp endpoint on boatramp serve to drive a node over the network; on by default, same tool set on both.
stdio · /mcp
Typed, enumerated tools
One named tool per control-plane operation (no generic passthrough), so every call is legible in an audit log rather than an opaque shell.
no passthrough
Your token, your authority
Every call runs with the caller's own bearer, re-checked per operation; hand the agent a least-privilege token and the write and fleet-admin tools simply 403. The endpoint grants nothing the token doesn't.
least-privilege
Many instances, one agent
Register several boatramp nodes by name in mcp.toml and address them per request ("on prod, …"); secrets are stored as specs, never resolved into the file.
mcp.toml
Kill-switch & rebinding guard
Turn the HTTP surface off fleet-wide with no restart (config set mcp.enabled false), and a Host-header allowlist keeps it loopback- or origin-only as a DNS-rebinding defence.
mcp.enabled
Agent-ready scaffold
Ships an AGENTS.md guide so an AI coding agent (Claude Code, Codex, …) can build a project on boatramp and deploy it out of the box.
AGENTS.md
Duplex sessions experimental
A resumable streaming lane for agent UIs and chat / tool-call streams: a client opens an SSE stream and POSTs frames back on the same route, and the host re-enters the guest per inbound frame while owning ordering, buffering, at-least-once redelivery, and resume-from-cursor.
handlers/session
pre-1.0

Every capability above is implemented and dogfooded: this site runs on it. Interfaces may still shift before 1.0. Start with the quickstart, dig into the docs, or come crew it.