LILYLILYDOCS
Docs/CLI/void

lly void

Deploy, list, tail and terminate placements on the LILY fleet.

lly void is the deployment surface. It hands a brick to the LILY platform, asks Raptor to place it on a CAP, and gives you a live HTTPS URL. The same plugin tails logs and terminates placements you own.

The plugin ships out of the box. If you removed it, reinstall with lly plugin install void. Run lly void --help for the full flag list.

Subcommands

Five verbs cover the lifecycle. Four are user-facing. One is reserved for fleet operators.

deploy

The user-facing path. Uploads a brick through platform.lilylabs.io, records ownership against the account you signed in with via lly login, and returns a live URL.

lly void deploy ./void.brick

list

Shows placements owned by the signed-in account. Slug, CAP, brick digest, uptime, status.

lly void list

logs

Streams stdout and stderr for a placement. -n N prints the last N lines and exits. Without -n it tails until you Ctrl-C.

lly void logs lazy-fox · lly void logs lazy-fox -n 200

kill

Terminates a placement. The slug is released back to the pool. Re-deploy at any time.

lly void kill lazy-fox

run

Admin-only. Bypasses the platform and talks directly to a control-plane. Requires CAP_CP_ADMIN_TOKEN in the environment. Used by fleet operators to pin a brick to a specific CAP for diagnostics or release-gating.

lly void run ./diag.brick --cap cap-4

A full cycle

Build a brick, push it, watch it boot, hit it once, tail logs, then kill it.

deploy
$ lly nextjs void → next-plugin v0.4.1 · 11 routes · 1 brick ✓ wrote ./void.brick (4.8 MB, sha256:9c64657…) $ lly void deploy ./void.brick → uploading 4.8 MB to platform.lilylabs.io → raptor placing on cap-2 (europe-west4-a) ✓ live at https://lazy-fox.app.lilylabs.io placement id: pl_01HZK3W7Q8 $ lly void list SLUG CAP BRICK UPTIME STATUS lazy-fox cap-2 9c64657 4s running $ lly void logs lazy-fox [attaching to lazy-fox · stream open] 2026-06-04T12:14:02Z GET / 200 18ms 2026-06-04T12:14:03Z GET /pricing 200 6ms 2026-06-04T12:14:05Z GET /missing 404 2ms ^C $ lly void kill lazy-fox ✓ terminated lazy-fox · slug released

Pointing at a different control-plane

For internal staging and ephemeral fleets you can override the control-plane URL. Set CAP_CP_URL or pass --cp to any subcommand. The flag wins over the env var. Both expect a fully-qualified URL, no trailing slash.

staging cp
$ export CAP_CP_URL=https://raptor-staging.lilylabs.dev $ lly void list [no placements on raptor-staging] $ lly void deploy ./void.brick --cp https://raptor-dev.lilylabs.dev ✓ live at https://wry-otter.app.lilylabs.dev

Exit codes

  • 0 — success.
  • 1 — local error (brick missing, malformed flags).
  • 2 — auth failed. Run lly login and retry.
  • 3 — platform refused the request (quota, banned digest).
  • 4 — Raptor could not place (no healthy CAP in the target pool).
  • 5 — placement crashed inside the first 5 seconds. Logs printed automatically.

Related

See lly compile and the nextjs plugin for how to produce a brick, lly bundle inspect to look inside one, and the brick format for what gets uploaded.