Getting Started
Five minutes from zero to a live URL on the LILY fleet.
LILY is one CLI, one binary, one verb at a time. You install lly, sign in through the browser, compile a Next.js project into a brick, and deploy it to the fleet. The four steps below take a few minutes end to end. Nothing else gets installed, no Docker daemon, no language runtime, no SDK.
The journey
Each step has its own page with the full detail. Read them in order the first time. After that, the four-line happy path at the bottom of this page is all you ever need.
Install the CLI
One curl command drops the lly binary into /usr/local/bin. No package manager, no PATH edits.
Sign in
lly login opens a browser, you confirm, the CLI receives a token over WebSocket.
Your first page
A minimal Next.js App Router project compiles to a single .brick and deploys to a public URL.
Learn the model
Bricks, plugins, the fleet, the CAPs. The few concepts that explain everything else.
The happy path
Here is the entire flow from a clean shell to a live URL. Assume you already have a Next.js App Router project in the current directory. If you do not, the hello world page walks you through scaffolding one.
lly doctor to verify your environment
$ lly login
→ opening browser: https://auth.lilylabs.io/cli?code=K3F-9PQ
✓ signed in as leon@lilylabs.io
token cached in ~/.lly/credentials (expires in 24h)
$ lly nextjs void
→ nextjs v0.7.1 · App Router · 12 routes · 4 server actions
→ bundling client islands (esbuild, 1 chunk, 38 KB)
→ linking WASM modules (single-brick, wasi-preview1)
✓ wrote void.brick (4.2 MB · sha256:8f2c…a13e · 6.8s)
$ lly void deploy ./void.brick
→ uploading 4.2 MB to platform.lilylabs.io
→ raptor placed on cap-eu-west-2 (slug: lazy-fox)
✓ live at https://lazy-fox.app.lilylabs.io
tail logs with lly void logs lazy-fox
What just happened
The install script downloaded a single statically linked binary. lly login spoke WebSocket to auth.lilylabs.io, the browser confirmed your identity, and the CLI cached a short-lived token. lly nextjs void ran the Next.js plugin, which is a util-binary in ~/.lly/plugins/nextjs/. It read your App Router tree, compiled every route to WASM, bundled the client islands with esbuild, and packed everything into one content-addressed brick.
lly void deploy uploaded the brick to the platform, which recorded ownership and called Raptor. Raptor picked a CAP with free capacity in the closest region, pushed the brick over to it, allocated a slug, and returned the URL. The CAP runtime instantiated the brick in Wasmtime and started answering HTTPS within a few hundred milliseconds.
What to read next
If you want the conceptual model first, jump to concepts. If you want to keep building, the CLI reference documents every subcommand and the nextjs plugin guide covers App Router specifics including Server Actions, ISR, parallel routes, and the void target. To check fleet health at any time, see status.lilylabs.io.