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.
macOS / Linux
Section titled “macOS / Linux”Setting up the tap (first time only)
Section titled “Setting up the tap (first time only)”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.
-
Create a Classic personal access token at
https://git.autodesk.com/settings/tokens, with thereposcope (GHE has nothing narrower than that for cloning a private repo over HTTPS; fine-grained tokens aren’t used for this). -
Export it once, then tap and install:
Terminal window echo 'export HOMEBREW_AUTODESK_GHE_TOKEN="<your token>"' >> ~/.zshrc # ~/.bashrc if you're not on zshsource ~/.zshrcbrew 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.
Install via Homebrew
Section titled “Install via Homebrew”brew install adsk-experimentNo 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:
brew upgrade adsk-experimentUninstall with:
brew uninstall adsk-experimentUninstalling 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.
Without Homebrew (macOS / Linux)
Section titled “Without Homebrew (macOS / Linux)”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:
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" | shThis 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:
curl -fsSL "$r/CRUCIBLE-generic/$n" -o install.shshasum -a 256 install.sh # compare against a trusted valuesh install.shThe script (scripts/install.sh in this repo, the macOS/Linux counterpart
to scripts/install.ps1 below) then:
- Resolves the newest
adsk-experiment-vX.Y.Zrelease by querying Artifactory’s search API directly (or uses the tag passed via--version, skipping discovery). - Downloads the
adsk-experiment-<tag>-<os>-<arch>.tar.gzarchive for your OS and CPU architecture (darwin/linux, amd64/arm64) and the release’sadsk-experiment-<tag>-checksums.txt. - Verifies the archive’s SHA-256 against the checksums file before installing anything, and aborts if it does not match.
- Extracts
adsk-experimentinto~/.adsk-experimentand wires that directory intoPATHvia a sourced env file, added to whichever of~/.profile,~/.bashrc,~/.zshrc, and fish’sconfig.fishexist (restart your terminal afterwards, orsource ~/.adsk-experiment/env). - Re-downloads that exact tag’s
install.shinto~/.adsk-experiment/install.sh, so a futureadsk-experiment updatecommand 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.
Upgrading (curl | sh)
Section titled “Upgrading (curl | sh)”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.
Uninstalling (curl | sh)
Section titled “Uninstalling (curl | sh)”sh ~/.adsk-experiment/install.sh --uninstallAdd --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.
Windows
Section titled “Windows”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:
$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 1if (-not $n) { throw "could not resolve an adsk-experiment release" }irm "$r/CRUCIBLE-generic/$n" | iexThis 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:
$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 1irm "$r/CRUCIBLE-generic/$n" -OutFile install.ps1Get-FileHash install.ps1 -Algorithm SHA256 # compare against a trusted valuepowershell -ExecutionPolicy Bypass -File .\install.ps1The script (scripts/install.ps1 in this repo, mirroring kiln’s own
install.ps1 mechanism) then:
- Resolves the newest
adsk-experiment-vX.Y.Zrelease by querying Artifactory’s search API directly (or uses the tag passed via-Version, skipping discovery). - Downloads the
adsk-experiment-<tag>-windows-<arch>.ziparchive for your CPU architecture (amd64 or arm64) and the release’sadsk-experiment-<tag>-checksums.txt. - Verifies the archive’s SHA-256 against the checksums file before installing anything, and aborts if it does not match.
- Extracts
adsk-experiment.exeinto%LOCALAPPDATA%\adsk-experimentand adds that directory to your userPATH(restart your terminal afterwards). - Copies itself into
%LOCALAPPDATA%\adsk-experiment\install.ps1, so a futureadsk-experiment updatecommand 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).
Troubleshooting (Windows)
Section titled “Troubleshooting (Windows)”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.
Upgrading (Windows)
Section titled “Upgrading (Windows)”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.
Uninstalling (Windows)
Section titled “Uninstalling (Windows)”powershell -ExecutionPolicy Bypass -File .\install.ps1 -UninstallAdd -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.
Config and credentials
Section titled “Config and credentials”The CLI’s on-disk state lives at ~/.adsk-experiment-ee (override with
ADSK_EXPERIMENT_EE_CONFIG_DIR), per
cli/internal/config/config.go:
| File | Contents |
|---|---|
config.json | Endpoint, default industry, selected environment, output mode, auth tenant/client IDs — no secrets |
token.json | The cached control-plane auth token, including the refresh token that keeps adsk-experiment login sessions alive without re-prompting |
credentials.json | Short-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.