---
title: Overview
description: "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](https://porffor.dev) 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.

:::note
This page is written to be read by a coding agent. Every step below has a non-interactive path. A plain-text copy of the whole site is at [`/llms.txt`](/llms.txt).
:::

## 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](/get-started/standalone). |

## Get started

**[Quickstart](/get-started)**

Go from nothing to a deployed sprout in four commands.

**[Bindings](/bindings)**

KV, D1, R2, queues, secrets, cron, Durable Objects, and more.

**[CLI reference](/reference/cli)**

Every `sproutboat` command and environment variable.
