Install or upgrade the LATdx CLI on macOS, Linux, or Windows.
The LATdx CLI ships as platform-specific release bundles hosted on GitHub. Each bundle contains the latdx binary plus the Phase 4 reach-analysis JARs (jars/apex-ls.jar and jars/apex-ls-bridge.jar) so Phase 4 features work out of the box with no extra setup. There is no npm install -g. This page covers bundle install, release channels, and the in-place upgrade flow.
A Java 11+ runtime must be available on PATH for Phase 4 features. The bundle does not include a JRE.
Supported Platforms
| Platform | Asset name |
|---|---|
| macOS Intel | latdx-darwin-x64.tar.gz |
| macOS Apple Silicon | latdx-darwin-arm64.tar.gz |
| Linux x64 | latdx-linux-x64.tar.gz |
| Linux ARM64 | latdx-linux-arm64.tar.gz |
| Windows x64 | latdx-win-x64.zip |
Windows ARM64 is not published.
Bundle Layout
Every bundle extracts to:
latdx[.exe] <- compiled CLI binary
jars/
apex-ls.jar <- Phase 4 reach-analysis engine (Apex-LS v6.x)
apex-ls-bridge.jar <- LATdx overlay (reach BFS, hash recipe)The CLI auto-discovers the JARs via <execDir>/jars/, so the binary and jars/ directory must stay siblings on disk. Both install paths below preserve that layout.
Install (one-liner)
The install script downloads the right binary for your platform, drops it on your PATH, and runs latdx --help to verify.
macOS
bash curl -fsSL https://raw.githubusercontent.com/nebulity/latdx-cli/main/install.sh | bash
wget works the same way:
wget -qO- https://raw.githubusercontent.com/nebulity/latdx-cli/main/install.sh | bashPin a specific version by passing it as the script argument:
curl -fsSL https://raw.githubusercontent.com/nebulity/latdx-cli/main/install.sh | bash -s 1.2.3If latdx --help is not found after install, your shell did not pick up the install location on PATH. Open a new shell or add the install directory (typically /usr/local/bin) to PATH.
Install (manual)
If you prefer not to pipe a remote script to bash, download the bundle for your platform from GitHub Releases and extract it into a directory on your PATH. The bundle contains the latdx binary plus a sibling jars/ directory; both must land together so the CLI can find the Phase 4 JARs at runtime.
macOS
bash INSTALL_DIR="$HOME/.local/bin" mkdir -p "$INSTALL_DIR" tar -xzf ./latdx-darwin-<arch>.tar.gz -C "$INSTALL_DIR" latdx --help
Replace <arch> with arm64 (Apple Silicon) or x64 (Intel). The tarball drops latdx and jars/ directly inside $INSTALL_DIR.
sudo is only required when writing to a system-owned directory like /usr/local/bin. If you install into a user-owned directory on your PATH (for example ~/.local/bin), drop the sudo.
Release Channels
LATdx publishes two channels. Pick the one that matches your stability tolerance.
| Channel | Use case | Command |
|---|---|---|
stable | Default. Pick this for daily work and CI. GitHub non-prereleases. | latdx config set channel stable |
latest | Track unreleased fixes; expect occasional regressions. | latdx config set channel latest |
Channels are managed via latdx config:
latdx config get channel # current channel (defaults to "stable")
latdx config set channel latest
latdx config list # all configured keysThe channel value is persisted to ~/.latdx/config.json. It controls which release stream both latdx upgrade and the background update check compare against.
Upgrade
In-place upgrade to the newest release on the configured channel:
latdx upgradeBehind the scenes this re-runs the install script with the latest version pinned, so it requires curl or wget and write access to the install location.
Check without installing:
latdx upgrade check
latdx upgrade check --json # { "currentVersion", "latestVersion", "updateAvailable" }check --json is suitable for cron jobs or CI: a non-zero updateAvailable is a signal that a newer build exists on the channel.
Background Update Notices
Every CLI invocation runs a non-blocking update check at most once per 24 hours. The result is cached at ~/.latdx/update-check.json. When a newer version is found on the configured channel, a one-line notice is printed to stderr after the command result:
Update available: 1.2.3 -> 1.2.4 (https://github.com/nebulity/latdx-cli/releases/latest)The notice never blocks the run. Network or disk failures are swallowed silently unless LATDX_DEBUG=1 is set, in which case the underlying error is logged to stderr.
To force a fresh check before the throttle expires, run latdx upgrade check. It always bypasses the cache.
Verifying the Install
latdx --version
latdx --version -o my-org # also prints managed-package status in the orgThe org-augmented form returns a non-zero exit code if it cannot query the org’s package version. Use it as a smoke test in CI before running tests. See Authentication & Org Targeting for how -o resolves and how the managed-package health check works.
Uninstall
The CLI is a single binary plus a sibling jars/ directory, with no installer database. Remove both, and optionally the per-user state directory:
LATDX_BIN="$(command -v latdx)"
sudo rm "$LATDX_BIN"
sudo rm -rf "$(dirname "$LATDX_BIN")/jars"
rm -rf ~/.latdx # config, caches, daemons, runner-access permset cacheTo remove LATdx artifacts from a Salesforce org as well, see latdx uninstall in the CLI Reference.