CLI Reference
Every lly subcommand at a glance — click through for flags and examples.
The lly binary is the single entry point to LILY. It compiles source to bricks, runs them locally, inspects bundles, manages plugins, and deploys to the CAP fleet. Every subcommand below has its own page with flags, exit codes, and realistic transcripts.
Subcommands
compile
Compile single-source files to a brick. Extension dispatches to the right frontend plugin.
run
Run a brick locally on the Wasmtime-backed runtime. Streams stdout and stderr.
bundle
Inspect a brick. Prints manifest, modules, exports, and asset table.
plugin
Install, list, verify, and remove util plugins from the rc.lilylabs.io registry.
nextjs
Compile a Next.js App Router project to bricks. Subcommands: routes, build, dev, render, export, void.
void
Deploy bricks to the fleet, list placements, tail logs, and kill running instances.
config
Read and write keys in ~/.lly/config.toml. Get, set, unset, and list.
doctor
Sanity-check the local install. Versions, plugin paths, runtime presence, network reachability.
Top-level help
Running lly with no arguments, or with --help, prints the command list. The version line at the bottom reflects the installed binary, not the latest release.
Anatomy of a command
Most subcommands follow the same shape: lly <cmd> [flags] <input>. Inputs are paths (source files, bricks, project roots). Flags use long-form (--out) with short aliases where common (-o). Plugin subcommands like nextjs and void dispatch through the plugin loader — they only appear in --help once the corresponding plugin is installed.
Verbosity and machine output
Every command accepts -v, -vv, and -vvv for progressively louder output: timing, plugin dispatch, and full IR dumps respectively. Pair with --json on commands that support it for machine-readable output suitable for scripts and CI. See Getting started for a guided tour or Concepts for the underlying model.