Skip to main content

Installation

The CLI is a single binary with no dependencies — no Node.js required.
The installer downloads the latest release for your system and processor (x64 or ARM), verifies its SHA-256 checksum and adds the vertra command to your PATH. Open a new terminal and check it:
To update, run the install command again. To install a specific version, set VERTRA_VERSION (for example VERTRA_VERSION=v0.3.0) before running it. VERTRA_INSTALL_DIR changes where the binary goes (default ~/.vertracloud/bin, or %USERPROFILE%\.vertracloud\bin on Windows). You can also download the binary for your platform directly from the releases page.

Connecting your account

Paste an API key created on the API keys page of the dashboard. In CI and scripts, set the VERTRA_API_KEY environment variable instead — it takes priority over the saved key.

First deploy

vertra upload (also vertra app upload or vertra app create) creates a new application. It reads NAME, MEMORY, MAIN, VERSION, SUBDOMAIN, START and LANGUAGE from vertracloud.config and asks for the name, memory and main file when they are missing; in scripts, pass --name, --memory and --main. When it finishes, it saves the new application’s ID in vertracloud.config. From then on, vertra deploy (an alias of vertra app commit) sends the current directory to that existing application. It never creates one: without a linked application, it asks which one to update, or fails in scripts unless you pass the application ID. Creating an application is asynchronous: when vertra upload makes a new application, the CLI waits for the build to finish and shows its result. Add --no-wait to return right after the upload; the application keeps building in the background. Add --json to any command for structured output ready for automation. To give a deploy a message in the deploy history, use vertra app commit -m "fix login". Without -m, inside a git repository, the CLI uses the subject of the latest commit. A folder is linked to an application when its vertracloud.config has an ID= line. vertra upload writes it for you. Commands that take an application ID (deploy, logs, app releases, app env…) use the linked application when you leave the ID out.
Without a link, an interactive terminal shows a picker and a script fails asking for the ID. Other commands you may want: vertra projects lists your applications and databases together, with their status, and vertra lang pt|en|es sets the language of the CLI messages (--lang or VERTRA_LANG override it for one run).

Releases and rollback

Each command takes an optional application ID before the release ID; without it, the CLI uses the linked application or lets you pick one. releases accepts --page and --limit, and shows which versions can still be restored. rollback is available on every plan. Before it runs, the CLI shows what will happen and asks you to confirm. With --env, it lists only the names of the variables that would be added, changed or removed, never their values. Without --env, your current variables stay as they are. In CI, or anywhere without a terminal, pass --yes (-y); without it the command fails instead of rolling back unasked. Listing and reading logs need an API key with the apps:read scope. Rolling back needs apps:write, plus apps:envs for --env.

Custom domains

Every command takes the domain ID or its hostname. add also creates the automatic www/root companion unless you pass --no-www; the companion doesn’t count toward your plan’s domain limit. --port goes from 1 to 65535, --redirect-status is 301, 302, 307 or 308 (default 308), and --path-prefix is a literal path such as /api. In update, an empty --path-prefix "" or --redirect-to "" clears the value, and --primary makes the domain the main one in place of its companion. remove asks for confirmation and also removes the companion, unless the domain you remove is the companion itself. See Custom domain for how domains, ports and path prefixes work. app stop, db stop, app env remove and the destructive commands ask for confirmation; pass --yes in automation. Declining exits with status 1 and “Operation cancelled.” (with --json, an error with code CANCELLED), never as success.

Web Analytics

Each command takes an optional application ID, like the other app commands. Without --start and --end the window is the last 24 hours; it can be at most 30 days and within the history of your plan. --compare adds the previous period, --compare-start <date> (RFC 3339) compares with the period of the same length that starts there instead, and the filters are --country, --edge-location, --host, --path, --method, --status, --protocol, --device, --os, --browser, --referer, --asn, --ip, --content-type, --cache-status and --bot. errors adds --include-4xx; requests takes --order, --limit and --cursor, and shows how to ask for the next page. If the plan does not include performance or requests, the command says so. When Analytics is busy it tells you how long to wait. All of them need an API key with the apps:read scope.

Blob Storage

get accepts an object ID or the exact path. Large files are sent in parts automatically, with a progress bar. Listing, downloading, links and usage need an API key with the blob:read scope; uploading and deleting need blob:write. See Blob Storage.

Deploy behavior

  • --zero-downtime: on needs Starter 2 or above.
  • --auto-rollback: needs Pro or above.
  • --health-path: starts with /, no spaces, up to 200 characters. vertra app info shows the current values.
See Roll back and deploy without downtime for what each setting does.
Last modified on November 3, 2026