If SLSA verification fails, the installation aborts with an error. There is no fallback to unverified download - this ensures you’re always notified of potential tampering.
Manual SLSA verificationSLSA verification cryptographically proves the CLI was built by the official build system.The verification script checks:
Artifact SHA256 matches the attestation subject digest
Provenance metadata confirms the build came from gitpod-io/gitpod-next
Certificate was issued by Sigstore
Entry exists in the Rekor transparency log
DSSE envelope structure is valid
Requirements: jq, openssl, curl
# Get manifest and extract packageHash for your platformPLATFORM="linux-amd64" # or darwin-amd64, darwin-arm64, windows-amd64MANIFEST=$(curl -sL https://releases.gitpod.io/cli/stable/manifest.json)VERSION=$(echo "$MANIFEST" | jq -r '.version')HASH=$(echo "$MANIFEST" | jq -r ".downloads[\"$PLATFORM\"].packageHash")# Download tarball and attestationBASE_URL="https://releases.gitpod.io/cli/releases/$VERSION"curl -fsSL -O "$BASE_URL/$HASH.tar.gz"curl -fsSL -O "$BASE_URL/$HASH.tar.gz.att"# Download and run verification scriptcurl -fsSL -O https://releases.gitpod.io/cli/verify-slsa.shchmod +x verify-slsa.sh./verify-slsa.sh "$HASH.tar.gz"# Extract and installtar -xzf "$HASH.tar.gz" ./ona-clichmod +x ona-clisudo mv ona-cli /usr/local/bin/ona
Option 2: Checksum VerificationGet the expected checksum:
The CLI is pre-installed and automatically authenticated with limited access. Run ona login to upgrade to full access.When running inside an environment, the CLI automatically detects the current environment context. This means:
Environment ID is inferred: Commands like ona automations, ona environment port, and other environment-specific commands work without requiring --environment-id
Context preserved after login: When you run ona login inside an environment, the environment ID is preserved in your CLI context (as long as the login host matches the environment’s host). This allows you to continue using environment-specific commands after authentication.
# Inside an environment - no --environment-id neededona automations service listona environment port open 3000# After running ona login, these still work without --environment-idona loginona automations task start my-task
If you log into a different host than your environment (e.g., logging into app.gitpod.io from an environment on ona.e-corp.com), the environment ID will not be preserved.
Instead of typing full UUIDs, you can use any substring of an environment ID:
# Full UUIDona environment ssh 019194a6-f0b0-70a1-beae-99718c351b04# Prefixona environment ssh 019194a6# Suffixona environment ssh 351b04# Any substringona environment ssh 70a1-beae
The CLI resolves the partial ID if it uniquely identifies an environment. If the substring matches multiple environments, you’ll see an error listing all matching IDs. If no environments match, you’ll be prompted to run ona environment list to see available environments.
# List prebuilds for a projectona prebuild list --project-id <project-id># Trigger a prebuildona prebuild trigger <project-id># List all warm pools in the organizationona prebuild warm-pool list# List warm pools for a specific projectona prebuild warm-pool list --project-id <project-id># Create a warm pool (project admin required)ona prebuild warm-pool create <project-id> --environment-class-id <class-id> --min-size 1 --max-size 2# Get warm pool detailsona prebuild warm-pool get <warm-pool-id># Update pool scaling boundsona prebuild warm-pool update <warm-pool-id> --min-size 1 --max-size 3# Delete a warm poolona prebuild warm-pool delete <warm-pool-id>
See Warm Pools for configuration and auditing details.
Manage your dotfiles configuration directly from the CLI:
# View current dotfiles configurationona user dotfiles get# Set dotfiles repositoryona user dotfiles set --repository https://github.com/user/dotfiles# Clear dotfiles configurationona user dotfiles set
The get command supports output formats:
ona user dotfiles get -o jsonona user dotfiles get -o yaml
The CLI stores configuration at ~/.ona/configuration.yaml.
ona config context listona config context use <context-name>ona config set --autoupdate=trueona config set --verify-slsa=trueona config set --release-channel=latestona config set --organization-id=<org-id>
Enable cryptographic verification of CLI updates to ensure binary integrity:Per-update verification:
ona version update --verify-slsa
Persistent config:
ona config set --verify-slsa=trueona version update # Now uses verification by default
The --verify-slsa flag takes precedence over the config value when explicitly set.
If SLSA verification fails, the update aborts with an error. There is no fallback to unverified download - this ensures you’re always notified of potential tampering.