Integrations

Lannzo CLI

Deploy in one commandNode.js 22+JSON output

The lannzo command drives the whole platform from your terminal: deploy a directory, follow the build, read logs, manage environment variables, connect a repository and configure domains.

It reaches the same API as the dashboard with the same permissions, so nothing you can do here is unavailable there, and nothing here exceeds what your account is allowed.

Install

The CLI needs Node.js 22 or newer. You can run it without installing anything:

npx lannzo --help

If you use it often, install it globally so the lannzo command is always available:

npm install -g lannzo
lannzo --help

Sign in

Signing in uses a device code: the CLI shows you a code, opens your browser, and waits while you approve it.

lannzo login

The token it receives is written to ~/.config/lannzo/config.json with owner-only permissions, and the CLI refuses to use the file if those permissions are ever loosened. Check which organization you are signed in to at any time:

lannzo whoami

Linking saves the organization and project for a directory, so every later command can be run without repeating --organization and --project. Run it once per working copy.

lannzo link --project my-site
lannzo link status

Deploy

lannzo deploy packages the current directory and deploys it. Without flags it goes to preview; --prod sends it to production.

lannzo deploy
lannzo deploy --prod

Only files that Lannzo does not already have are uploaded, so repeat deployments of the same project are fast. The command then waits for the deployment to finish and exits non-zero if it did not reach ready, which is what makes it safe to run in CI. Use --no-wait to return as soon as it is queued.

To see exactly what would be sent without deploying anything:

lannzo deploy --dry-run

Once a deployment is running, follow it or read its logs from the same terminal:

lannzo inspect --wait --logs
lannzo logs --follow --level error

Environment variables

Variables are set per environment and can apply to the build, the runtime, or both. --value-stdin reads the value from standard input so a secret never lands in your shell history, and secret values are never printed back.

lannzo env set DATABASE_URL --environment production --secret --value-stdin
lannzo env list --environment production

You can also run a local command with an environment's variables loaded, without ever writing them to a file:

lannzo env run --environment preview -- npm run dev

Connect a GitHub repository

Connecting a repository lets Lannzo deploy on its own. With --auto-deploy, every push to the chosen branch becomes a deployment.

lannzo repo connect --repository acme/web --branch main --auto-deploy
lannzo repo update --no-auto-deploy

Framework and commands

Lannzo detects the framework on every deployment. Run lannzo project config with no flags to see what a build would use, and set a framework to take that decision yourself — a manual selection is also what makes a custom build or start command apply.

Supported frameworks are nextjs, nestjs, express and node. The --auto-* flags clear a manual value and restore automatic detection.

lannzo project config
lannzo project config --framework nestjs --start-command "node dist/main.js"

Runtime operations

An environment's runtime can be driven without creating a deployment. start brings back a stopped release, restart replaces the running revision with a new one from the same artifact, picking up current variables, and stop withdraws traffic until you start it again.

All three are asynchronous and send their own idempotency key, so a repeated command never starts a second revision. Restart and stop confirm in an interactive terminal unless --yes is passed.

lannzo runtime restart --environment production
lannzo runtime stop --environment preview

Custom domains

Adding a domain returns the DNS records to create. Once they have propagated, verifying it proves ownership and queues its certificate.

lannzo domain add app.example.com
lannzo domain verify app.example.com

Command reference

Every command accepts --organization and --project to override the linked directory, and --json or --quiet to control output.

Authentication

CommandWhat it does
lannzo loginSign in with a device code and store the credential.
lannzo logoutRemove the stored credential from this machine.
lannzo whoamiShow the organization the current credential belongs to.

Linking

CommandWhat it does
lannzo link --project <id|slug|name>Link the current directory to a project.
lannzo link statusShow which project the current directory is linked to.
lannzo unlinkRemove the link from the current directory.

Organizations and projects

CommandWhat it does
lannzo org listList the organizations you belong to.
lannzo project listList the projects in an organization.
lannzo project inspectShow what would be deployed from this directory.
lannzo project create --name <name>Create a project, optionally linking it to this directory.
lannzo project set-root-directory <path>Set the subdirectory to build from, or clear it.
lannzo project config [--framework <f>]Show or set the framework, build command and start command.

Deployments

CommandWhat it does
lannzo deploy [--prod] [--no-wait] [--dry-run]Deploy this directory to preview, or to production with --prod.
lannzo inspect [deployment] [--wait] [--logs]Show a deployment, optionally waiting for it to finish.
lannzo logs [deployment] [--follow]Read deployment logs, filtered by source, level or age.
lannzo open [--deployment <id>] [--print]Open the deployed site in your browser, or just print its address.
lannzo deployment listList a project's deployments, newest first.
lannzo deployment retry <deployment>Retry a deployment, which creates a new one.
lannzo deployment cancel <deployment>Cancel a deployment that is still running.

Environment variables

CommandWhat it does
lannzo env list --environment <env>List an environment's variables. Secret values are never printed.
lannzo env set <KEY> --environment <env>Create or replace a variable, optionally as a secret.
lannzo env unset <KEY> --environment <env>Delete a variable.
lannzo env import <file> --environment <env>Import variables from a file, optionally replacing the whole set.
lannzo env copy <source> <target>Copy variables from one environment to another.
lannzo env pull [file] --environment <env>Write an environment's non-secret variables to a local file.
lannzo env run --environment <env> -- <command>Run a local command with an environment's variables loaded.

GitHub repositories

CommandWhat it does
lannzo repo listList the GitHub repositories Lannzo can reach.
lannzo repo statusShow the repository connected to this project.
lannzo repo connect --repository <r> --branch <b>Connect a repository and branch to this project.
lannzo repo update --auto-deploy | --no-auto-deployTurn auto-deploy on or off for the connected repository.
lannzo repo disconnectDisconnect the repository, keeping deployment history.

Domains

CommandWhat it does
lannzo domain listList this project's platform and custom domains.
lannzo domain add <hostname>Add a custom domain and show the DNS records to create.
lannzo domain verify <hostname>Verify DNS ownership and queue the certificate.
lannzo domain check-routing <hostname>Check that a verified domain points to Lannzo.
lannzo domain remove <hostname>Remove a custom domain from this project.

Runtime

CommandWhat it does
lannzo runtime start --environment <env>Start the runtime of an environment whose release is stopped.
lannzo runtime restart --environment <env>Restart the runtime, keeping the same artifact.
lannzo runtime stop --environment <env>Stop the runtime and withdraw its traffic.

Utilities

CommandWhat it does
lannzo doctorCheck the local setup, credential and project link.

Scripts and CI

--json prints machine-readable output instead of a table, and --quiet suppresses progress messages. Commands exit non-zero when they fail, and lannzo deploy exits non-zero if the deployment does not reach ready, so a pipeline fails on a bad release without any extra checks.

lannzo deployment list --json

Credentials and security

The credential is stored on your machine and nowhere else, with owner-only permissions. The CLI refuses to read it if those permissions are ever widened. Point LANNZO_CONFIG_PATH somewhere else to keep separate credentials per environment, or set LANNZO_TOKEN to skip the file entirely in CI.

~/.config/lannzo/config.json

Signing in requests only the permissions the CLI actually uses: reading organizations, projects, deployments and logs, and writing projects, deployments, environment variables, GitHub connections and domains. It can never exceed what your own account is allowed to do.

Common issues

lannzo doctor checks the local setup, the stored credential and the project link, and is the fastest way to find out what is wrong:

lannzo doctor

“Not logged in. Run `lannzo login` first.”

No credential was found at the expected path. Sign in again, or set LANNZO_CONFIG_PATH if you keep it somewhere else.

“Refusing credentials file with insecure permissions.”

The credential file is readable by other users on the machine. Restrict it to your own account with chmod 600 ~/.config/lannzo/config.json, or sign in again to have it rewritten correctly.

“File changed after manifest generation”

A file was modified while the deployment was being packaged, so the upload no longer matches what was measured. Stop anything writing into the directory — a dev server or a watcher, usually — and deploy again.