Use cases¶
Scenarios where ixt changes the equation. Each one points to the full step-by-step recipe or command reference for the details.
๐ป New machine, ready in two commands¶
New laptop. You need your full dev toolchain โ Python linters, Node formatters, Rust/Go binaries โ repeatable and pin-friendly, without npm -g, without brew, without manual installs scattered across your shell history.
ixt setup path # add $IXT_HOME/installed/bin to PATH (once)
ixt tool apply # install everything declared in ixt.toml
One file, three ecosystems. With exact pins, ixt tool apply --remove keeps the
machine in sync โ anything not listed gets removed.
ixt tool apply reference ยท ixt.toml format
๐ค Pinned CI โ no npm -g, no brew¶
Your CI pipeline installs Python, Node, and binary tools via three different methods. Any of them can pull a different version on a given day, silently. Replace them with one declarative config and one command.
# .gitlab-ci.yml / GitHub Actions
- run: ixt lock check
- run: ixt tool apply --locked --strict --remove --yes
--locked --strict replays committed ixt.lock and fails before changes when
ixt.toml diverges. --remove prunes anything not declared, and --yes
confirms those removals in non-interactive CI.
๐ Two versions of the same tool, side by side¶
You're migrating a codebase from ruff 0.5.x to the latest. You need both reachable from the shell โ the pinned one for the legacy project, the latest for new work.
ixt tool install ruff # โ ruff on PATH
ixt tool install ruff==0.5.7 --slot ruff-old --bare # env only, no shim
ixt tool config ruff-old expose ruff:ruff-old # โ ruff-old on PATH