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”Not yet published. First release coming soon.
Homebrew
Section titled “Homebrew”brew install avrea/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.