Documentation
ReferenceCLI

CLI

Manage environments, Edge Functions and secrets from the terminal, and give your AI agent the docs and commands it needs.

The Nulvless CLI manages your projects from the terminal: environments, Edge Functions and their secrets. It is built to be driven by AI coding agents as much as by people, so every command has a JSON mode, predictable exit codes and errors that say how to fix them.

It installs two equivalent commands: nulvless and the shorter nulv. The source is open at github.com/nulvless/cli.

Install

npm install --global nulvless

It needs Node.js 20 or later. You can also run it without installing:

npx nulvless --help

Sign in

nulvless login

The CLI opens the Nulvless sign-in and consent screen in your browser. Once you approve, the browser hands the session back to the CLI on your own machine and the terminal confirms who you are signed in as.

The session is stored in your system keychain: macOS Keychain, Windows Credential Manager, or the Secret Service (GNOME Keyring, KWallet) on Linux. Where there is no keychain, it falls back to ~/.config/nulvless/session.json, readable only by your user. The access token is renewed automatically.

nulvless whoami    # who is signed in, and their organizations
nulvless logout    # remove the session from this computer

In CI

Set NULVLESS_TOKEN to an access token. It takes precedence over any stored session, and the CLI never prompts when it is not attached to a terminal.

NULVLESS_TOKEN=… nulvless functions list --org acme --project shop --json

Choose the organization and project

Commands that act on a project need to know which one. The CLI looks in this order:

SourceOrganizationProject
Flag--org <slug>--project <slug>
Environment variableNULVLESS_ORGNULVLESS_PROJECT
Automaticthe only organization of your account—
Interactivea list to choose froma list to choose from

Outside a terminal there is no list to choose from, so a missing value is an error that names the flag to pass.

Commands

Environments

nulvless environments list
nulvless environments create staging --name "Staging"
nulvless environments delete staging

envs is an alias of environments. Deleting asks for confirmation; pass --yes to skip it.

Edge Functions

nulvless functions list
nulvless functions deployments checkout
nulvless functions delete checkout

fn is an alias of functions. deployments lists the deployment history of one function, newest first.

Secrets

Secrets belong to one Edge Function, so every secrets command takes --function.

nulvless secrets list --function checkout
nulvless secrets set STRIPE_SECRET_KEY --function checkout
nulvless secrets set STRIPE_SECRET_KEY=sk_live_… --function checkout
nulvless secrets unset STRIPE_SECRET_KEY --function checkout
  • list shows names, never values.
  • set KEY without a value asks for it without echoing it, so it stays out of your shell history. Outside a terminal, pass KEY=VALUE.
  • Saving or removing a secret redeploys the function with the new value.
  • Names starting with NULVLESS_ or NVL_, and EDGE_REGION, are reserved for values Nulvless injects. The CLI rejects them before sending anything.

Docs

nulvless docs                 # index of every page
nulvless docs quickstart      # one page as Markdown
nulvless docs sdk/auth > auth.md

docs prints these pages as Markdown, the same content as /llms.txt and the per-page Markdown links on this site, so you can pipe it into a file or straight into an agent's context.

Use it with an AI agent

Agents can't click through a browser or answer prompts, and they need output they can parse. The CLI covers each of those:

  • Docs in context. nulvless docs <path> gives the agent the real API instead of a guess.
  • JSON everywhere. --json prints results as JSON on stdout. When a command fails, stderr gets one JSON line: {"error":{"message":"…","hint":"…","exitCode":2}}.
  • No prompts. Outside a terminal nothing waits for input. Missing values fail with the flag to pass, and destructive commands require --yes.
  • Errors with a next step. Every error carries a hint, such as Run `nulvless login` to sign in.

Add this to your AGENTS.md, CLAUDE.md or editor rules:

Use the Nulvless CLI (`npx nulvless`) to work with Nulvless.
Read the docs with `npx nulvless docs` and `npx nulvless docs <path>` before
writing integration code. Always pass `--json`, plus `--org` and `--project`.

For prompts per feature, see Vibe coding.

Global options

OptionEffect
--org <slug>Organization to act on
--project <slug>Project to act on
--jsonResults as JSON on stdout, errors as JSON on stderr
-y, --yesSkip confirmation prompts
-v, --versionShow the version
-h, --helpShow help for a command, with examples

Environment variables

VariablePurpose
NULVLESS_TOKENAccess token used instead of the stored session
NULVLESS_ORGDefault organization
NULVLESS_PROJECTDefault project
NO_COLORTurn colors off
FORCE_HYPERLINK1 or 0 to force clickable links in the terminal on or off

Exit codes

Results go to stdout. Progress, confirmations and errors go to stderr, so JSON output can be piped safely.

CodeMeaning
0Success
1The command failed, was cancelled, or a value is missing
2Not signed in, session expired, or not allowed
130Interrupted with Ctrl+C

On this page