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 nulvlessIt needs Node.js 20 or later. You can also run it without installing:
npx nulvless --helpSign in
nulvless loginThe 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 computerIn 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 --jsonChoose the organization and project
Commands that act on a project need to know which one. The CLI looks in this order:
| Source | Organization | Project |
|---|---|---|
| Flag | --org <slug> | --project <slug> |
| Environment variable | NULVLESS_ORG | NULVLESS_PROJECT |
| Automatic | the only organization of your account | — |
| Interactive | a list to choose from | a 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 stagingenvs 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 checkoutfn 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 checkoutlistshows names, never values.set KEYwithout a value asks for it without echoing it, so it stays out of your shell history. Outside a terminal, passKEY=VALUE.- Saving or removing a secret redeploys the function with the new value.
- Names starting with
NULVLESS_orNVL_, andEDGE_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.mddocs 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.
--jsonprints 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
| Option | Effect |
|---|---|
--org <slug> | Organization to act on |
--project <slug> | Project to act on |
--json | Results as JSON on stdout, errors as JSON on stderr |
-y, --yes | Skip confirmation prompts |
-v, --version | Show the version |
-h, --help | Show help for a command, with examples |
Environment variables
| Variable | Purpose |
|---|---|
NULVLESS_TOKEN | Access token used instead of the stored session |
NULVLESS_ORG | Default organization |
NULVLESS_PROJECT | Default project |
NO_COLOR | Turn colors off |
FORCE_HYPERLINK | 1 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.
| Code | Meaning |
|---|---|
0 | Success |
1 | The command failed, was cancelled, or a value is missing |
2 | Not signed in, session expired, or not allowed |
130 | Interrupted with Ctrl+C |