Deploy
One build, several targets. Pick an adapter with nowaki build --adapter <target>.
Adapters
| Adapter | Output |
|---|---|
node (default) | A self-contained dist/server/index.mjs — runs with just node, no Nowaki binary needed. |
static | Prerendered HTML in dist/static/ for any CDN. |
bun / deno | The same node:http-compatible entry, portable to Bun/Deno. |
cloudflare | An edge fetch-handler worker in dist/worker/ + a wrangler.jsonc (static assets via the ASSETS binding). |
Node
nowaki build --adapter node
cd dist/server && npm install --omit=dev
node index.mjs # PORT=3000 by defaultStatic
nowaki build --adapter static
# dist/static/ → upload to any static host / CDNStatic deploys serve the initial SSR of Jetstream islands and degrade gracefully without a WebSocket.
Cloudflare Workers (edge)
nowaki build --adapter cloudflare
cd dist/worker && npx wrangler deployThe worker bundles every server module statically (no runtime file imports), serves static assets from the ASSETS binding, and runs SSR, API routes, streaming, and server functions at the edge with nodejs_compat.
The Rust front (nowaki start)
nowaki start runs a Rust (axum) front for static serving and HTML assembly with a Node renderer behind it, and it's what holds the Jetstream WebSocket. Use it when you want the connected, server-reactive mode.