Global commands reference

Flags, arguments and exit codes for the revenexx commands that are not tied to a service, plus the options every command accepts.

The command reference covers the service groups (products, orders, and so on). This page is the lookup for everything else: the global commands that manage the CLI itself, and the global options that work on every command. Each command has a narrative page with the why and the walkthroughs; this page holds the flags and the exit codes in one place.

Run revenexx <command> --help for the authoritative list on your installed version. This page was checked against CLI 0.5.0 (as of 2026-09). The tenants commands were rechecked on CLI 0.6.1 (as of 2026-10).

Global options

These work on every command, before or after the command name.

OptionWhat it does
-h, --helpShow help for the CLI or a command.
-v, --versionPrint the CLI version and whether a newer one exists.
-V, --verboseShow the complete error log on failure.
-o, --output <format>Output format: table (default), json, jsonl, csv, yaml or markdown. md and ndjson are accepted as value aliases.
-j, --json, --jsonl, --csv, --yaml, --markdown, --mdShorthand for the matching --output value.
--fields <fields>Comma-separated list of fields or columns to keep in the output.
-q, --quietSuppress the tenant and endpoint banner and human output. On failure, print a machine-readable error to stderr and exit with a meaningful code.
--data <data>Request body for create and update commands: inline JSON, @file.json, or - to read stdin.
-f, --forceConfirm all warnings.
--reportOn a CLI error, print a prefilled bug-report link.
--endpoint [endpoint]API URL for this command. Overrides REVENEXX_API_URL and saved config.
--token [token]API key for this command. Overrides REVENEXX_API_KEY and saved config.
--tenant [tenant]Tenant slug for this command. Overrides REVENEXX_TENANT and saved config.
--request-timeout <ms>Per-request HTTP timeout in milliseconds. Default 30000.
--no-retryTurn off automatic retries of transient failures. Only reads and idempotent requests are retried at all; POST and PATCH never are.
--debugLog each HTTP request (method, path, status, duration, request id) to stderr, with secrets redacted.

Output formats and field selection are covered in Scripting & output. How --endpoint, --token and --tenant rank against environment variables and files is in Configuration.

Exit codes

Failed API calls map to the exit codes in Scripting & output: 4 for authentication, 5 for not found, 8 for rate limited, 1 for everything else. A misspelled command or bad global flag exits 2.

Global commands do not all follow that scheme, and the gaps matter in a script:

Several commands print an error and still exit 0.whoami and status when nobody is signed in, the errors alias reports itself, repl without a terminal, tenants current --check when the check fails, and update when it cannot reach the release feed or the install step fails all report the problem on the screen and return success. Don't branch on the exit code of those commands. To test that a credential works, run a real API read such as revenexx products list --limit 1 --json and check that command's exit code: 4 means the credential was rejected or lacks access to that resource. tenants list does not work for this, because it reports a rejected or missing credential in its table and still exits 0. whoami and tenants list print JSON-like output under --json that jq can't parse, so don't pipe them. (As of 2026-09.)

An unknown flag or a missing argument on a subcommand (for example alias set -x foo) exits 1, not 2. The exit codes for watch are listed in its section below.

whoami

Show the active auth method, where the credential came from, the tenant, and the endpoint. It makes no network call.

Shell
revenexx whoami

No command-specific options. With no credential it prints No user is signed in and exits 0.

status

The same identity, tenant and endpoint as whoami, plus the token expiry and a gateway health probe. An SSO token that has expired is refreshed first, so the expiry shown is the session the next command will actually use.

Shell
revenexx status

No command-specific options. Same exit 0 when nobody is signed in.

tenants

Choose and inspect the tenant that commands run against. The saved choice lives in ~/.revenexx/tenant and beats REVENEXX_TENANT and every .revenexx.yaml — read the warning in Configuration before you rely on it. Sign-in is covered in Authentication.

CommandWhat it does
tenants listList the tenants your account can access, plus any slug configured on this machine, with the places each was found and whether your current credential reaches it.
tenants use [slug]Save slug as the active tenant. The slug is checked against the gateway first. Without a slug, a terminal gets a picker (from CLI 0.6.1); a script gets the list of tenants and exit code 1.
tenants current [--check]Print the active slug. --check also verifies it against the gateway.
Shell
revenexx tenants list
revenexx tenants use acme
revenexx tenants use
revenexx tenants current --check
  • tenants list shows columns Tenant, Active, Sources and Access. Access is ok, the reason the gateway refused, or (not signed in) / (session expired).
  • tenants use without a slug opens a picker when the CLI runs on a terminal, with the active tenant marked and preselected. In a script, or with --json, it never prompts: it prints the list of tenants, saves nothing and exits 1. (From CLI 0.6.1.)
  • tenants use with a slug the gateway rejects as an invalid tenant prints Cannot switch and saves nothing; pass the global --force to save it anyway. In a script it prints the list of tenants and exits 1, or prints No tenants found and exits 1 when none are known. On a terminal it opens the picker instead, and picking a tenant switches to it and exits 0. Any other failed check (gateway unreachable, key rejected) or no credential at all only warns, and the slug is saved unchecked. The exit 1 and the picker are new in CLI 0.6.1; earlier versions exit 0.
  • tenants use warns, when you run it, that the slug it saves overrides REVENEXX_TENANT or the tenant: in .revenexx.yaml. It still overrides them. See Project configuration.
  • Under -q, use and current print the bare slug, which $(...) can capture. Under --json they print the rows Tenant and Active (current --check adds Access), but not as valid JSON, so jq can't parse them: use -q. (From CLI 0.6.1.)
  • tenants current prints the slug as a status line, so capture it with -q, not by parsing the line. It reads only ~/.revenexx/tenant and REVENEXX_TENANT. It ignores --tenant and the tenant: in .revenexx.yaml, so it can print a different slug from the one your next command uses. To see the tenant a command really used, read the banner that API commands print, or run whoami.
  • The only option specific to these commands is tenants current --check. When its check fails, current still exits 0. tenants list exits 0 on the failures described above.

alias

Manage your own short forms for commands. Built-in abbreviations are fixed and appear in alias list. How aliases resolve is in Aliases.

CommandWhat it does
alias set <name> <expansion...>Create or update an alias. Quote a multi-word expansion.
alias list (ls)List your aliases and the built-in ones. --json prints the rows as JSON.
alias remove <name> (rm)Remove one of your aliases.
Shell
revenexx alias set deploy "apps create-deployment --activate true"
revenexx alias ls
revenexx alias rm deploy
  • A name must be one word without spaces and not start with -. alias and help are reserved.
  • A name that matches a real command is saved with a warning; the real command always wins, so the alias never resolves.
  • Those errors, and removing a name that does not exist, exit 0. A missing argument exits 1.
  • Aliases only resolve when the command name comes first; a global flag in front of it stops the rewrite.

repl

Open an interactive shell that stays signed in. See Interactive shell.

Shell
revenexx repl

No command-specific options. It needs an interactive terminal on both stdin and stdout, so it is for people, not CI. Without one it prints The REPL needs an interactive terminal and exits 0; in a script, call the command you want directly.

watch

Poll a get-by-id command until one field reaches a condition. The conditions, field paths and the app flow are in Background watchers.

CommandWhat it does
watch add --until <expr> -- <command...>Start a watcher. Outside a repl or tui session it blocks until the watcher settles.
watch list (ls)Show this session's watchers.
watch rm [id] (cancel)Cancel one watcher by id.

watch add options:

OptionDefaultMeaning
-u, --until <expression>requiredWhen to stop: [<field>] changed, equals <v>, matches <re>, terminal or truthy.
--field <path>noneDot path into the response. Can instead be the first word of --until; --field wins if both are given.
-e, --every <duration>5sPoll interval. The floor is 2s.
--for <duration>5mGive up after this long. Capped at one hour.
--wait-for-createoffTreat 404 as "not there yet" instead of a failure.

watch rm takes --all to cancel every active watcher. --every below 2s and --for above one hour are raised or lowered to the limit, not rejected.

watch add needs an interactive terminal, so in a CI job it exits 2 at once; write your own loop around <get command> --json there. watch list and watch rm only see watchers of the current repl or tui session, so run on their own they find none.

Blocking watch add exits with:

CodeMeaning
0Condition satisfied.
1The poll failed with a generic error or kept failing transiently, or eight watchers are already active in the session. A missing --until or command also exits 1.
2No terminal, an unknown command, or an unparseable --until, --every or --for. Also watch rm with no id and no --all.
5The polled resource returned 404 (unless --wait-for-create), or watch rm <id> for an id that does not exist.
7Timed out before the condition was met.
130Cancelled with Ctrl-C.
4, 8, otherThe failing poll's own code, as in the general table.

update

Update the CLI to the latest release. It detects an npm or Homebrew install and runs the matching update; otherwise it asks which method to use.

Shell
revenexx update --dry-run
revenexx update
OptionWhat it does
--dry-runWhen a newer release exists, print the detected install method and the command it would run, without changing anything.
--manualShow manual update instructions instead of updating.

When you already run the latest version it says so and exits 0. If it cannot reach the release feed, it prints Failed to check for updates, and if the install step fails it prints the failure; both exit 0. revenexx --version reports the version and whether a newer one exists.

client

Set the API endpoint, key or TLS behavior stored by the CLI, or reset it.

Shell
revenexx client --sensitive-tenants "acme,globex"
revenexx client --self-signed false
OptionWhat it does
-e, --endpoint <endpoint>Set the API endpoint. The CLI calls GET /health/version on it first and refuses an endpoint that does not answer.
-k, --key <key>Set the API key. Fails with Session not found if no session exists yet.
-ss, --self-signed <true|false>Trust self-signed certificates. Same Session not found failure without a session.
--sensitive-tenants <list>Comma-separated tenant slugs always treated as production, so commands that print the context banner mark them PRODUCTION. The banner is hidden under --json and --quiet and is not shown by every command. An empty string clears the list.
-d, --debugPrint the stored configuration with the key and cookie masked.
-r, --resetRemove the locally saved sessions, which signs you out.
-p, --project-id <id>Writes a legacy projectId into a local revenexx.config.json. It does not select a tenant; use tenants use.

Run with no options, client prints its help. To set up a new machine, use revenexx login or the environment variables in Configuration rather than client; that page explains why.

types and generate

These two commands do not read your tenant. They work from a local revenexx.config.json that is meant to list resource definitions, and nothing in the CLI writes those definitions; the only thing it can put in that file is the legacy project id from client --project-id. On CLI 0.5.0 in a folder without that file, revenexx types ./out -l ts fails with No tables or collections found in configuration (exit 1) and revenexx generate fails with No project found. Please run 'revenexx init project' first (exit 1), pointing at an init command that does not exist. With only a project id set, generate writes an empty scaffold and types still fails. Neither uses your tenant's schema or its OpenAPI document. (As of 2026-09.)

For reference, the options they accept:

CommandOptions
types <output-directory>-l, --language <language> (auto by default, or ts, js, php, kotlin, swift, java, dart, cs); -s, --strict.
generate-d, --dir <directory> (default generated); -l, --language <language> (typescript only in 0.5.0); --server <auto|true|false>; --sdk-import-source <source>; --import-extension <ext>.

Use an SDK for typed calls, and see Type generation for the current state.

Commands documented elsewhere

CommandWhere
login, logout, registerAuthentication
tuiFull-screen app
skillsSkills
create, deploy, apps generate, apps capabilitiesScaffolding
Service groups such as products and ordersCommand reference
Was this page helpful?