This document maps the supported binary install channels and the shadow checks
that keep PATH from resolving an older aicx.
release bundle / install.sh
-> ~/.local/bin/aicx
-> ~/.local/bin/aicx-mcp
local source / install.sh
-> ${CARGO_INSTALL_ROOT:-~/.cargo}/bin/aicx
-> ${CARGO_INSTALL_ROOT:-~/.cargo}/bin/aicx-mcp
make install-bin
-> ${CARGO_INSTALL_ROOT:-~/.cargo}/bin/aicx
-> ${CARGO_INSTALL_ROOT:-~/.cargo}/bin/aicx-mcp
npm @loctree/aicx
-> npm global bin shim for aicx
-> npm global bin shim for aicx-mcp
-> node_modules/@loctree/aicx-<platform>/aicx
-> node_modules/@loctree/aicx-<platform>/aicx-mcp
| Channel | Trigger | Target | Shadow behavior |
|---|---|---|---|
| Release bundle | bash install.sh from a release archive |
~/.local/bin |
removes older/equal cargo-bin and npm-bin shadows |
| Release download | AICX_INSTALL_MODE=release bash install.sh |
~/.local/bin |
delegates to bundle mode after checksum verification |
| Local source | bash install.sh in a checkout |
cargo bin dir | removes older/equal ~/.local/bin and npm-bin shadows |
| Make source | make install-bin |
cargo bin dir | runs the same shell shadow check before cargo install and PATH check after |
| npm package | npm install -g @loctree/aicx |
npm global package/bin surface | warns by default; removes older/equal local/cargo shadows only with AICX_NPM_REPLACE_LOCAL=1 |
Shell installers run a preflight inventory:
which -a aicxEach path is probed with --version when executable. If multiple binaries are
visible, or the current PATH winner is not the target install path, interactive
installs ask for confirmation. Automation can set:
AICX_INSTALL_FORCE=1 bash install.shDry-run mode is available for audits:
bash install.sh --dry-run
AICX_INSTALL_MODE=local bash install.sh --dry-runCleanup is conservative and version-aware:
- The candidate path must contain
aicx. - The candidate and target versions must parse as
major.minor.patch. - The candidate version must be older than or equal to the target version.
aicxandaicx-mcpare removed together from that directory.
Newer shadows are retained and reported. Unknown-version shadows are retained because the installer cannot prove that removal is safe.
After shell installs, install.sh compares:
<target>/aicx --version
command -v aicx
aicx --versionIf the versions or paths differ, the installer prints a warning with the target
path, the PATH-resolved path, and all other which -a aicx entries. The fix is
to move the target directory earlier in PATH or remove the older channel.
npm postinstall cannot safely prompt, so it warns by default. To let npm remove older or equal local shadows during installation:
AICX_NPM_REPLACE_LOCAL=1 npm install -g @loctree/aicxThe npm cleanup only targets:
~/.local/bin/aicx~/.local/bin/aicx-mcp~/.cargo/bin/aicx~/.cargo/bin/aicx-mcp
It does not uninstall other npm packages or rewrite shell startup files.
Before release, run:
bash tools/release-channel-check.shThe script compares Cargo.toml, the root npm package, all platform package
versions, and root npm optional dependency pins. Release CI runs the same check
before publishing artifacts.