Skip to main content

Overview

The hoop CLI ships a built-in version manager modeled on nvm and fnm. It downloads release binaries, stores them under $HOME/.hoop/versions/<version>/hoop, and points a single symlink at $HOME/.hoop/bin/hoop to the active version. Add that directory to your PATH once and you can switch versions freely without ever touching brew or /usr/local/bin again. All version-management commands live under hoop versions:
The version manager only handles releases 1.74.0 and newerhoop versions was introduced in that release. Older CLIs don’t ship this command group, so the manager refuses to install them (it would leave you unable to switch back).

hoop versions sync

Asks the connected gateway for its version (via /api/serverinfo), downloads the matching CLI release for your OS and architecture, verifies the SHA-256 checksum, and switches the active version to the newly installed one.
Use this when you want the CLI and the gateway to be on identical versions. Requires that you’ve authenticated against a gateway first (hoop login or hoop config create --api-key ...). Example:

Flags


hoop versions upgrade

Fetches the latest released version published at releases.hoop.dev/release/latest.txt and installs it. Does not consult the gateway and does not require hoop login — this is the right command when you just want to track the latest stable hoop release regardless of which gateway you happen to be pointed at.
Example:

Flags

sync vs upgrade

In most day-to-day workflows the two are equivalent — gateway operators usually run the latest release. They diverge when the gateway is intentionally pinned to an older version (e.g. a customer running on 1.74.x while 1.75.x is out): sync will install 1.74.x so you stay compatible, while upgrade will jump you to 1.75.x.

PATH setup

For the active version to take effect in your shell, $HOME/.hoop/bin needs to be on PATH ahead of any Homebrew or system path. The first time you run hoop versions sync (or hoop versions upgrade, or hoop versions install --use ...), the CLI checks PATH and offers to append the right export line to your shell rc file. The append is idempotent — re-running the command won’t duplicate the line. Pass -y to accept the prompt non-interactively, or --skip-path-hint to suppress it (handy in CI). After the rc file is updated, open a new shell or source the file. Verify with:
If which hoop still points at Homebrew (/opt/homebrew/bin/hoop or /usr/local/bin/hoop), your existing PATH puts Homebrew first. Move the hoop export above the Homebrew block in your rc file.

hoop versions install

Direct, explicit-version install. Useful for pinning, testing against an older release, or installing in environments where you don’t want to go through the gateway/latest indirection.
Examples:
If the version is already installed and --reinstall is not passed, the command exits cleanly without downloading anything.

hoop versions list

The * marks the currently active version (whatever $HOME/.hoop/bin/hoop points at).

hoop versions use

Updates the $HOME/.hoop/bin/hoop symlink to point at the requested version. Fails if the version isn’t installed — install it first with hoop versions install <version>, or use the --use shortcut shown above.

hoop versions remove

Deletes the install directory $HOME/.hoop/versions/<version>/ and drops it from the store. Removing the active version requires --force; the symlink is then unlinked so you don’t end up with a dangling path.

Version-mismatch warning

The CLI watches the Server header on every gateway response. When the gateway reports a version different from the locally-built CLI, you’ll see a single one-shot warning on stderr per process:
The warning is intentionally non-fatal — older clients still work against newer gateways for everything except brand-new features. To silence it (for example in CI logs or scripts):
The warning is also suppressed automatically when:
  • The local CLI was built without a release tag (i.e. its own version is unknown).
  • You’re already running hoop versions sync or hoop versions upgrade, so the message doesn’t appear just before the install banner.

File layout

The version manager only touches files under $HOME/.hoop/:
versions.toml is the source of truth for what is installed and which version is active. The bin/hoop symlink only mirrors it; if the symlink is missing or broken, the next hoop versions sync, upgrade, or use rebuilds it.

Caveats

Minimum installable version

This is by design — installing a CLI without hoop versions would orphan you on a version that can’t manage itself.

Local development gateways

When the gateway reports its version as unknown, it’s usually a local dev build that was compiled without a release tag injected via -ldflags. hoop versions sync cannot install an “unknown” release, so it returns:
In this case hoop versions upgrade is the right escape hatch — it doesn’t consult the gateway at all.

Next Steps

CLI Reference

Full CLI installation, authentication, and configuration guide

Releases

Browse and download specific hoop releases on GitHub