Skip to main content

Global flags

Every ekso command accepts these flags. They sit alongside command-specific options:
FlagDescriptionEnv varDefault
--tenant <SUBDOMAIN>Tenant subdomain (e.g. acme). Required unless env-var is set.EKSO_TENANT
--api-key <KEY>API key for non-interactive auth. Overrides any stored device-flow tokens.EKSO_API_KEY
-f, --format <FORMAT>Output format. One of json, jsonl, yaml, table.EKSO_FORMATjson
-q, --quietSuppress non-essential output. On create, prints just the new id.off
-v, --verboseVerbose logging — request/response details.off
--no-colorDisable ANSI colors. Honours NO_COLOR.NO_COLORoff
--timeout <SECONDS>HTTP timeout in seconds.EKSO_TIMEOUT30
--base-url <URL>Override the API base URL. Useful for local dev.EKSO_BASE_URLhttps://{tenant}.ekso.app
Flags always win over env vars. Env vars are convenient for shell sessions and CI runners — set once, every subsequent ekso ... call inherits them. Drop these in your .zshrc / .bashrc so you don’t repeat yourself:
# Production tenant
export EKSO_TENANT=acme
# CI/agent — leave unset for local dev (uses cached device-flow tokens)
# export EKSO_API_KEY=ek_live_xxx
For local backend development:
export EKSO_TENANT=devinc
export EKSO_BASE_URL=https://devinc.localhost:7070

Output formats

The CLI defaults to JSON — the same shape Ekso returns over HTTP. Use --format (or EKSO_FORMAT) to change:
FormatUse case
json (default)Machine-readable, pipes cleanly into jq.
jsonlNewline-delimited JSON. One record per line. Good for streaming.
yamlHuman-readable for browsing, terraform-style configs.
tableCompact aligned columns for terminal viewing. Loses nested fields.
ekso item list --format table
-q, --quiet is independent of --format — it suppresses success messages and non-essential prose, leaving only the data (or just the id, on create). Combine -q --format json for clean machine output.

Exit codes

The CLI follows POSIX conventions plus a few Ekso-specific codes:
CodeMeaning
0Success
1Generic error (unknown failure)
2Usage error (bad flags / missing required argument)
3Auth error (no credentials, expired refresh token, revoked key)
4Forbidden (insufficient permissions, e.g. not a super admin)
5Not found (HTTP 404)
6Validation error (HTTP 400 / 422)
7Rate limited (HTTP 429) — back off and retry
8Network error (DNS, TCP, TLS, timeout) — typically transient
9Server error (HTTP 5xx)
Branch on these in shell pipelines:
ekso item create --name "Bug" --tenant acme
case $? in
    0) echo "ok" ;;
    3) echo "re-authenticate" ; ekso auth login --tenant acme ;;
    7) echo "rate limited" ; sleep 30 ;;
    *) echo "failed: exit $?" ;;
esac

Help

Every command and branch has built-in help:
ekso --help                  # Top-level: list of branches
ekso item --help             # Branch: list of verbs
ekso item create --help      # Verb: flags + arguments
--help prints the same surface as the docs but reflects the binary you have installed — it’s the source of truth if the rendered docs and the installed CLI ever drift.