Skip to content

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.

ixt tool apply reference


๐Ÿ”€ 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

Full recipe with ixt.toml