Skip to main content
Manage environments from your terminal - create, start, stop, SSH into environments, and run automations.

Installation

Homebrew (macOS and Linux)

The formula auto-detects your OS and architecture. Updates are handled by brew upgrade ona.

macOS and Linux

Direct download

After downloading, make the binary executable and move it to your PATH:
If macOS shows a security warning, approve the app in System Settings → Privacy & Security, or run:
Verified installationUse SLSA verification during initial installation:
Requirements: jq, openssl, curl
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
Option 2: Checksum VerificationGet the expected checksum:
Calculate your file’s checksum and compare:

Authentication

Browser login

Opens your browser to authenticate and stores credentials locally.

Personal access token

For CI/CD pipelines and scripts, use a personal access token:
Or set the environment variable:

Inside Ona environments

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.
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.
ona environment port open defaults to creator-only access. On a runner that cannot enforce private access, an implicit open falls back to public access with a warning. Pass --admission creator_only to fail closed, or --admission everyone when an unauthenticated URL is required.

Common commands

Use -o json or -o yaml for machine-readable output.

Using partial environment IDs

Instead of typing full UUIDs, you can use any substring of an environment ID:
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.

Using environment names

Give an environment a memorable name when you do not want to copy its UUID:
Most user-facing environment commands accept an environment ID, a unique partial ID, or an exact environment name. Name matching is case-insensitive. To clear a custom name, pass an empty value:
Use --inactivity-timeout on create or update to set a custom auto-stop timeout. See auto-stop timeout for details. Names are not required to be unique. If a name matches more than one environment, the CLI asks you to use an environment ID instead. Search across environment IDs, names, repository URLs, and branches with:

SSH access

Configure SSH for direct access:
Then connect using:
Generated SSH aliases and stored CLI contexts use environment IDs, not names. This keeps them stable if an environment is renamed. You can also use partial environment IDs or environment names with the ona environment ssh command:
For file transfers, use the -O flag:

Port management

Automation commands

Use --environment-id <id-or-name> to target a specific environment from outside that environment.

Prebuild and warm pool commands

See Warm Pools for configuration and auditing details.

Webhook commands

See Webhooks for setup details and SCM registration.

Dotfiles management

Manage your dotfiles configuration directly from the CLI:
The get command supports output formats:
See dotfiles documentation for more information about using dotfiles with Ona.

Project and group management

Configuration

The CLI stores configuration at ~/.ona/configuration.yaml.

Shell completion

Updates

SLSA verification for updates

Enable cryptographic verification of CLI updates to ensure binary integrity: Per-update verification:
Persistent config:
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.
Run ona help or add --help to any command for more information.

Troubleshooting

If you see too many authentication failures, add to ~/.ssh/ona/config:
Debug with: