Skip to content

Installing the CLI

adsk-experiment releases are published to Artifactory’s CRUCIBLE-generic repo, which allows fully anonymous, unauthenticated reads. Basenames are adsk-experiment-prefixed and tag-embedded (e.g. adsk-experiment-v1.2.3-windows-amd64.zip), so there is no cross-product ambiguity to resolve around.

The formula lives in a private tap, iaas/homebrew-tap, on git.autodesk.com rather than on github.com — so brew tap’s one-argument shortcut (which assumes github.com) doesn’t reach it, and Homebrew has to clone it the same way git clone would: authenticated, since git.autodesk.com doesn’t allow anonymous HTTPS reads the way Artifactory does. This follows the same convention iaas/cloudosai-kiln’s own setup docs use for the same tap — skip this if you’ve already done it for kiln.

  1. Create a Classic personal access token at https://git.autodesk.com/settings/tokens, with the repo scope (GHE has nothing narrower than that for cloning a private repo over HTTPS; fine-grained tokens aren’t used for this).

  2. Export it once, then tap and install:

    Terminal window
    echo 'export HOMEBREW_AUTODESK_GHE_TOKEN="<your token>"' >> ~/.zshrc # ~/.bashrc if you're not on zsh
    source ~/.zshrc
    brew tap iaas/tap "https://$HOMEBREW_AUTODESK_GHE_TOKEN@git.autodesk.com/iaas/homebrew-tap.git"

Use iaas/tap as the local tap name (not iaas/homebrew-tap) even though the remote repo is homebrew-tap — that’s the name cloudosai-kiln’s docs establish, and reusing it means a machine already tapped for kiln needs no second tap here.

This is a one-time setup per machine. brew update / brew upgrade reuse the tap once it’s added, and adding it is what makes the plain brew install adsk-experiment below resolve at all — without it, Homebrew reports no such formula, which reads like a typo rather than a missing tap.

Terminal window
brew install adsk-experiment

No token or authentication is required for this step specifically — the formula’s own url is a plain unauthenticated Artifactory link. The token above is only for reaching the formula file itself in the private tap, not for downloading the binary it points at.

Upgrade with:

Terminal window
brew upgrade adsk-experiment

Uninstall with:

Terminal window
brew uninstall adsk-experiment

Uninstalling the formula removes the binary only. It does not remove ~/.adsk-experiment-ee, the CLI’s config directory — see Config and credentials below before deciding whether to remove that too.

If you don’t want Homebrew (CI, containers, a minimal machine), bootstrap with one anonymous line — no gh, no authentication, and no need to know a version ahead of time:

Terminal window
r='https://artifactory.dev.adskengineer.net/artifactory'
n=$(curl -fsSL "$r/api/search/artifact?name=adsk-experiment-v*-install.sh&repos=CRUCIBLE-generic" \
| grep -o '"uri" *: *"[^"]*"' | sed -E 's/.*"(.*)"$/\1/; s#.*/##' \
| grep -E '^adsk-experiment-v[0-9]+\.[0-9]+\.[0-9]+-install\.sh$' \
| sed -E 's/^adsk-experiment-v([0-9]+)\.([0-9]+)\.([0-9]+)-install\.sh$/\1.\2.\3 &/' \
| sort -t. -k1,1n -k2,2n -k3,3n | tail -1 | cut -d' ' -f2)
[ -n "$n" ] || { echo "could not resolve an adsk-experiment release" >&2; exit 1; }
curl -fsSL "$r/CRUCIBLE-generic/$n" | sh

This queries Artifactory’s anonymous quick-search API for every published adsk-experiment-vX.Y.Z-install.sh asset, picks the newest by version, and pipes that installer straight into sh.

Piping a remote script into sh runs it with no integrity check — the same bootstrap trade-off the Windows installer below and kiln’s own installer make, and a reasonable default for CRUCIBLE-generic’s trusted, read-only artifact feed. If your environment requires verifying the script before executing it, download it first and check its SHA-256 instead of piping into sh:

Terminal window
curl -fsSL "$r/CRUCIBLE-generic/$n" -o install.sh
shasum -a 256 install.sh # compare against a trusted value
sh install.sh

The script (scripts/install.sh in this repo, the macOS/Linux counterpart to scripts/install.ps1 below) then:

  1. Resolves the newest adsk-experiment-vX.Y.Z release by querying Artifactory’s search API directly (or uses the tag passed via --version, skipping discovery).
  2. Downloads the adsk-experiment-<tag>-<os>-<arch>.tar.gz archive for your OS and CPU architecture (darwin/linux, amd64/arm64) and the release’s adsk-experiment-<tag>-checksums.txt.
  3. Verifies the archive’s SHA-256 against the checksums file before installing anything, and aborts if it does not match.
  4. Extracts adsk-experiment into ~/.adsk-experiment and wires that directory into PATH via a sourced env file, added to whichever of ~/.profile, ~/.bashrc, ~/.zshrc, and fish’s config.fish exist (restart your terminal afterwards, or source ~/.adsk-experiment/env).
  5. Re-downloads that exact tag’s install.sh into ~/.adsk-experiment/install.sh, so a future adsk-experiment update command can find and re-run it to perform an upgrade.

If adsk-experiment or a running adsk-experiment process already exists, the script asks whether to stop the running process and continue, continue without stopping, or quit — pass --force to auto-stop and continue non-interactively (for CI/automation). Any prompt (including this one) is skipped in favor of its safe default when stdin is not a TTY, since piping into sh leaves stdin connected to the script itself, not a terminal.

Re-run the same script — either the bootstrapped one-liner above, or the copy the installer leaves at ~/.adsk-experiment/install.sh (sh ~/.adsk-experiment/install.sh). It always re-resolves and reinstalls the newest adsk-experiment-vX.Y.Z release, unless you pass --version to pin to a specific one.

Terminal window
sh ~/.adsk-experiment/install.sh --uninstall

Add --force to skip prompts. This stops any running adsk-experiment process, removes ~/.adsk-experiment (the binary and the copied installer), and removes the PATH entry from shell startup files. It then prompts before removing ~/.adsk-experiment-ee — see below for why that prompt matters.

There is no Homebrew on Windows. Bootstrap with one anonymous line — no gh, no authentication, and no need to know a version ahead of time:

Terminal window
$r='https://artifactory.dev.adskengineer.net/artifactory'
$n=(irm "$r/api/search/artifact?name=adsk-experiment-v*-install.ps1&repos=CRUCIBLE-generic").results |
%{ ($_.uri -split '/')[-1] } |
?{ $_ -match '^adsk-experiment-v(\d+)\.(\d+)\.(\d+)-install\.ps1$' } |
sort { [version]($_ -replace '^adsk-experiment-v(.+)-install\.ps1$','$1') } |
select -Last 1
if (-not $n) { throw "could not resolve an adsk-experiment release" }
irm "$r/CRUCIBLE-generic/$n" | iex

This queries Artifactory’s anonymous quick-search API for every published adsk-experiment-vX.Y.Z-install.ps1 asset, picks the newest by version, and pipes that installer straight into the current session.

Piping a remote script into iex runs it with no integrity check — this is the same bootstrap trade-off kiln’s own installer makes, and is a reasonable default for CRUCIBLE-generic’s trusted, read-only artifact feed. If your environment requires verifying the script before executing it, download it first and check its SHA-256 instead of piping into iex:

Terminal window
$r='https://artifactory.dev.adskengineer.net/artifactory'
$n=(irm "$r/api/search/artifact?name=adsk-experiment-v*-install.ps1&repos=CRUCIBLE-generic").results |
%{ ($_.uri -split '/')[-1] } |
?{ $_ -match '^adsk-experiment-v(\d+)\.(\d+)\.(\d+)-install\.ps1$' } |
sort { [version]($_ -replace '^adsk-experiment-v(.+)-install\.ps1$','$1') } |
select -Last 1
irm "$r/CRUCIBLE-generic/$n" -OutFile install.ps1
Get-FileHash install.ps1 -Algorithm SHA256 # compare against a trusted value
powershell -ExecutionPolicy Bypass -File .\install.ps1

The script (scripts/install.ps1 in this repo, mirroring kiln’s own install.ps1 mechanism) then:

  1. Resolves the newest adsk-experiment-vX.Y.Z release by querying Artifactory’s search API directly (or uses the tag passed via -Version, skipping discovery).
  2. Downloads the adsk-experiment-<tag>-windows-<arch>.zip archive for your CPU architecture (amd64 or arm64) and the release’s adsk-experiment-<tag>-checksums.txt.
  3. Verifies the archive’s SHA-256 against the checksums file before installing anything, and aborts if it does not match.
  4. Extracts adsk-experiment.exe into %LOCALAPPDATA%\adsk-experiment and adds that directory to your user PATH (restart your terminal afterwards).
  5. Copies itself into %LOCALAPPDATA%\adsk-experiment\install.ps1, so a future adsk-experiment update command can find and re-run it to perform an upgrade.

If adsk-experiment.exe or a adsk-experiment process already exists, the script asks whether to stop the running process and continue, continue without stopping, or quit — pass -Force to auto-stop and continue non-interactively (for CI/automation).

If irm ... | iex fails with a PowerShell parser error naming an unexpected token derived from adsk-experiment (e.g. Unexpected token '-experimentExe' in expression or statement), you fetched a copy of install.ps1 published before that bug was fixed — PowerShell variable names can’t contain an unescaped hyphen outside ${...} braces, and an earlier revision of the script declared one ($adsk-experimentExe) without them. Re-run the bootstrap one-liner above; it always resolves and pipes in whatever install.ps1 is newest in Artifactory, so a fresh run picks up the fix.

Re-run the same script — either the bootstrapped install.ps1, or (once adsk-experiment update ships) the copy the installer leaves at %LOCALAPPDATA%\adsk-experiment\install.ps1. It always re-resolves and reinstalls the newest adsk-experiment-vX.Y.Z release, unless you pass -Version to pin to a specific one.

Terminal window
powershell -ExecutionPolicy Bypass -File .\install.ps1 -Uninstall

Add -Force to skip prompts. This stops any running adsk-experiment process, removes %LOCALAPPDATA%\adsk-experiment (the binary and the copied installer), and removes the PATH entry. It then prompts before removing ~/.adsk-experiment-ee (%USERPROFILE%\.adsk-experiment-ee) — see below for why that prompt matters.

The CLI’s on-disk state lives at ~/.adsk-experiment-ee (override with ADSK_EXPERIMENT_EE_CONFIG_DIR), per cli/internal/config/config.go:

FileContents
config.jsonEndpoint, default industry, selected environment, output mode, auth tenant/client IDs — no secrets
token.jsonThe cached control-plane auth token, including the refresh token that keeps adsk-experiment login sessions alive without re-prompting
credentials.jsonShort-lived, per-environment AWS and registry credentials

Removing ~/.adsk-experiment-ee signs you out. token.json’s refresh token is what lets adsk-experiment skip Autodesk SSO on every command; deleting the directory means the next command has to adsk-experiment login again. brew uninstall does not remove this directory automatically for that reason — install.sh --uninstall and the Windows install.ps1 -Uninstall both prompt explicitly before removing it (skip the prompt with --force / -Force), and if you installed via Homebrew you would need to rm -rf ~/.adsk-experiment-ee by hand.