Overview
Sproutboat turns one JavaScript fetch handler into a static native binary you deploy and run yourself.
Sproutboat turns one JavaScript fetch handler into a static native binary and runs it on a Linux box you (or someone you trust) control. The build uses Porffor ahead-of-time compilation plus Zig. Production runs no Node, no V8, and no container. A small sidecar next to each deployment serves the bindings: KV, D1, R2, queues, cron, secrets, Durable Objects, static assets.
How it fits together
| Piece | Role |
|---|---|
Your handler (src/index.js) |
One file, one default export, fetch(request) plus optional scheduled/queue. Compiled ahead of time — no interpreter in production. |
| The sprout | The compiled native binary. One process per deployment, one request in flight at a time. |
| The broker | A sidecar next to the sprout that serves every env.* binding call over loopback RPC. |
| The control plane | Stores artifacts, starts sprouts behind Caddy, issues TLS, and runs the CLI-facing API. Not needed at all for a standalone binary. |