Avrea CLI
Official command-line client for Avrea — avr brings runs, jobs, logs, and workflow control into your terminal so you don't have to bounce between tabs.
Install
Section titled “Install”Homebrew
Section titled “Homebrew”brew install avrea-com/tap/avrpip install avr-cliRequires Python 3.14 or later.
Authenticate
Section titled “Authenticate”Browser-based login (recommended):
avr auth loginShow who you are and where you're pointing:
avr auth statusavr config # combined: host, auth, active org, default repo, all with sourcesLog out (revokes the active API key on the server):
avr auth logoutFor non-interactive environments (CI, scripts), set a token via env var instead — see Configuration.
Your first command
Section titled “Your first command”Inside any git checkout of an Avrea-connected repository:
avr run list # uses git remote to scope the queryavr run view <run-id> # full run with jobsavr run view <run-id> --log-failed # jump straight to failed-step outputAuto-detection means most commands "just work" without --repo. Outside a git tree (or to override), pass --repo org/name or --repo rep-xxx.
Common workflows
Section titled “Common workflows”Watch a run live
avr run watch # auto-selects the latest active run for the current repoavr run watch <run-id> # specific runavr run watch <run-id> --exit-status # propagate the run's success/failure into the shell exit codeTriage a failure without leaving the terminal
avr run view <run-id> --log-failed # only the steps that failed, grouped by jobavr run logs <run-id> # full log dump, paginatedavr job logs <job-id> --follow # tail one job in real timeTrigger a workflow_dispatch
avr workflow run ci.yml # default branchavr workflow run ci.yml --ref feat/x -f env=staging # with inputsavr workflow run "Build and Deploy" --watch --exit-status # dispatch + watch + script-friendly exitecho '{"env":"prod"}' | avr workflow run deploy.yml --json # inputs from stdinWORKFLOW accepts an Avrea ID (wfl-...), the GitHub numeric ID, a filename (ci.yml, ci), or the display name.
SSH into a running job's VM
avr job ssh <job-id>avr job ssh <job-id> --print-command # just print the ssh stringLive VM metrics while a job runs
avr job metrics <job-id> --watch # CPU/memory/IO gauges, refreshed every few secondsavr job metrics <job-id> # static post-mortem after the job endedCancel or rerun a run
avr run cancel <run-id>avr run rerun <run-id>avr run rerun <run-id> --failed # only failed jobsWorkflow stats and the slowest steps
avr workflow list # aggregate stats per workflow over the last 30davr workflow view <wfl-id> # per-job p95/median/failure breakdown + recent runsavr status # org-wide health: recent runs, slowest workflows, cache usageCache
avr cache list --repo <repo> # entriesavr cache usage --repo <repo> # size vs quotaavr cache delete --key <key> --type <type> --repo <repo>Scripting & automation
Section titled “Scripting & automation”Every list/view command supports --json for structured output.
Discover available fields
avr run list --json '?' # prints the field schemaSelect specific fields
avr run list --json status,conclusion,head_branchavr run list --json '*' # all fieldsPipe through jq
avr run list --json '*' -q '.[] | select(.conclusion == "failure") | .run_id'avr workflow list --json name,runs -q '.[] | "\(.runs)\t\(.name)"'-q/--jq is built in (no need to pipe to jq yourself), but the schema-projected output is also jq-friendly.
Detect "auth required" in scripts
avr run list >/dev/nullcase $? in 0) ;; 4) echo "logged out, re-auth needed"; exit 4 ;; *) echo "transient failure" ;;esacExit code 4 is reserved for "auth required". 1 is general failure; 2 is a usage error.
Pipe-aware output
When stdout isn't a TTY, list commands switch to tab-separated rows (no color, no truncation, ISO timestamps), so avr run list | awk works without flags. avr run watch | jq -c . automatically switches to NDJSON event mode.
Configuration
Section titled “Configuration”Environment variables
Section titled “Environment variables”| Variable | Purpose |
|---|---|
AVR_HOST | Avrea API URL. Defaults to the active host in hosts.json, then https://api.avrea.com. |
AVR_TOKEN | API key. Overrides whatever's stored for the active host. |
AVR_ORG | Default organization ID. Overrides the stored default. |
AVR_REPO | Default repository (org/name or rep-xxx). Overrides git auto-detect. |
AVR_BROWSER | Browser to launch for --web and OAuth login. Falls back to BROWSER, then system default. |
AVR_PAGER | Pager for long output. Overrides PAGER. Set to empty string to disable paging. |
AVR_LINKS | Set to 0 to disable OSC 8 hyperlinks. Same as --no-links. |
AVR_DEBUG | Comma-separated debug categories. Set to 1/true for general debug logging. |
AVR_PROMPT_DISABLED | Refuse interactive prompts (scripts fail fast instead of hanging on stdin). |
AVR_CONFIG_DIR | Override the config directory. Defaults to $XDG_CONFIG_HOME/avrea or ~/.config/avrea. |
AVR_MACOS_NATIVE_PATHS | Set to 1 on macOS to use ~/Library/... instead of the default ~/.config/avrea. |
NO_COLOR | Disable colored output (any non-empty value). Same as --no-color. |
Config commands
Section titled “Config commands”avr config # status: host, auth, org, repo with sourcesavr config list # same as bare `avr config`avr config set org <org-id> # store a default organizationavr config get orgavr config unset orgPersistent state lives in $XDG_CONFIG_HOME/avrea/hosts.json (host-keyed credentials and per-host defaults).
Switching hosts
Section titled “Switching hosts”avr auth switch # interactive picker across stored hostsAVR_HOST=https://api.staging.example.com avr run list # one-shot overrideOpen anything on the console
avr run view <run-id> --webavr workflow view <wfl-id> --webavr cache list --repo <repo> --webClick-to-open in your terminal
IDs in tables are wrapped in OSC 8 hyperlinks — clicking opens the matching console page in your browser (supported by iTerm2, Kitty, WezTerm, Ghostty, GNOME Terminal, Konsole, Windows Terminal, and most modern terminals). Disable with --no-links or AVR_LINKS=0 if your terminal renders them as visible garbage.
Tab completion
# basheval "$(_AVR_COMPLETE=bash_source avr)"# zsheval "$(_AVR_COMPLETE=zsh_source avr)"# fish_AVR_COMPLETE=fish_source avr | sourceVerbose mode
avr -v run list # prints HTTP requests, useful for debuggingFilter the help surface
avr --help # top-level groupsavr <group> --help # subcommandsavr <group> <command> --help # full flag list with examplesLicense
Section titled “License”Licensed under the Apache License, Version 2.0. Copyright 2026 Avrea.