One CLI, three jobs.
sproutboat compiles your handler into a native program and ships it. Ship it as one executable you run yourself, to a Community machine you own, or to Sproutboat Cloud. It is the same project and the same commands each time.
Install, then start a project.
Install sproutboat in each project, the way you install Wrangler. The CLI is the compiler, so a pinned version builds the same way on every machine and in CI. Run it with npx sproutboat or a script such as npm run deploy.
init does the install for you. It writes sproutboat.jsonc, src/index.js and a package.json that lists sproutboat in devDependencies, with dev, deploy and check scripts. check validates the config and the entry point without building. dev runs the project on this machine against a real broker and rebuilds on save.
For quick commands outside a project, such as init or whoami, npm i -g sproutboat puts sproutboat on your PATH. More in the quickstart.
# in an existing projectnpm i -D sproutboat# or start a new onenpx sproutboat init hellocd hellonpm installnpm run dev# in an existing projectpnpm add -D sproutboat# or start a new onepnpm dlx sproutboat init hellocd hellopnpm installpnpm run dev# in an existing projectbun add -d sproutboat# or start a new onebunx sproutboat init hellocd hellobun installbun run dev# in an existing projectyarn add -D sproutboat# or start a new oneyarn dlx sproutboat init hellocd helloyarn installyarn devOne executable. No platform.
build --standalone emits a single Linux executable with your bindings, SQLite and TLS compiled in, a few megabytes in all. Copy it to a machine and run it. The target needs no broker, no Node or Bun and no container.
It reads PORT and keeps its state in a data directory next to it (SB_DATA_DIR moves it). Put Caddy, nginx or a tunnel in front for HTTPS. It suits a Raspberry Pi-class home server or a single VM. The same handler deploys to a platform later, unchanged.
npx sproutboat build --standalonePORT=3000 ./dist/hello
# an aarch64 box (the default is linux-x64)npx sproutboat build --standalone --target linux-arm64# a Dockerfile, a systemd unit, a fly.toml and a push script beside itnpx sproutboat build --standalone --deploy-files# for the machine you are on, to try it herenpx sproutboat build --standalone --target host
Your own machine, with a control plane.
Community is the open edition of Sproutboat for one Linux machine you own. The installer sets up the control plane, the edge, a dashboard, a sandbox and automatic TLS. Then deploy works as it does anywhere: bundle, build, upload, wait until the URL serves.
Point the CLI at your control API once with login --api-url. It prints a URL and a short code, you approve it in the dashboard, and the CLI stores a token for that endpoint. It keeps one credential per endpoint, so one laptop can work against several platforms. For a CI job or an agent, set SPROUTBOAT_API_URL and SPROUTBOAT_TOKEN instead.
curl -fsSL https://sproutboat.com/install.sh | sudo bash
npx sproutboat login --api-url https://control.example.comnpx sproutboat deploy
We run the servers. You run deploy.
On Sproutboat Cloud, which is in closed alpha, the CLI bundles your handler and uploads it. Our servers run the build and cache it. With no URL, login signs in to Cloud: the same device-code flow, approved in the dashboard.
Your app answers at <app>.<account>.sproutboat.app, idle apps sleep and wake on the next request, and every deploy is a version you can roll back to. We invite alpha accounts from the waitlist.
npx sproutboat loginnpx sproutboat deploy
# build and report, upload nothingnpx sproutboat deploy --dry-run# who am I signed in as, and wherenpx sproutboat whoami
The rest of the commands.
versions and rollback, tail for live logs, kv, d1, r2 and queues for storage, secrets and domains, logout, shell completion. Each one has its flags in the reference.
Sproutboat Cloud is in closed alpha.
Join the waitlist and we’ll send one email when your invite is ready. Nothing else.
We’ll email you once, when your invite is ready.