Install the CLI

Install up0, log in through the browser, and confirm who you're authenticated as.

Install the CLI

The up0 CLI is a Python package. It isn't published to a package index yet, so install it from the repository:

git clone https://github.com/up0io/up0_io
cd up0_io/cli
pip install -e .

Point it at your organization

The CLI has no built-in default for which upzero instance to talk to. Set the API URL and the Zitadel issuer once, either as environment variables or as flags on your first login:

export UP0_API_URL=<your API URL>
export UP0_ZITADEL_ISSUER=<your Zitadel issuer URL>

If you work against more than one upzero instance, give each one a named profile with --profile:

up0 --profile prod auth login

Profiles are stored in ~/.up0/config.yaml, one section per profile, and --profile (or the UP0_PROFILE environment variable) selects which one a command uses.

Log in

up0 auth login

This opens your browser to sign in through Zitadel (OAuth Authorization Code plus PKCE, no client secret and no password handled by the CLI itself). Real output from a successful login:

✓ Logged in as docs@up0.local.

The access and refresh tokens are written to ~/.up0/config.yaml and refreshed automatically; there's no separate step to keep the session alive.

Confirm who you are

up0 whoami
User:     docs@up0.local
Profile:  kind (from UP0_PROFILE)
Org:      upzero docs (upzero-docs)
          1f1317e4-2675-4f15-a298-d09346c9cad8
API:      https://api.up0.kind
Issuer:   https://auth.up0.kind
Token:    valid (expires 14:04 UTC)

up0 whoami --output json prints the same information as JSON, minus the tokens themselves, so it's safe to use in a script without leaking a bearer token into a log.

Why this profile says kind

The transcripts and screenshots in this section were captured against a local kind cluster (profile kind, api.up0.kind), not staging, because staging's profile runs no monitoring plane.

What's next

Send your first signal from your app, or jump straight to creating your first monitor.

On this page