Skip to content

ixt

ixt — Universal CLI Tool Isolator

One CLI for Python, Node, and binary tools — each in its own isolated env.

Zero third-party deps. Zero system pollution. One command, any ecosystem.

  • Day-one GitHub releases


    Install a tool the day it ships its first GitHub release. No formula, registry entry, or plugin required.

  • No system runtime needed


    ixt is pure Python stdlib. uv and bun are bootstrapped on first use, so the host does not need Node, npm, or a package manager pre-installed.

Work in Progress


🚀 Get started in 30 seconds

# 1. Install ixt from PyPI (package: ixt-cli)
uv tool install ixt-cli

# 2. Add ixt-managed shims to your PATH
ixt setup path

# 3. Install your first tool — any ecosystem
ixt tool install ruff                        # Python
ixt tool install @anthropic-ai/claude-code   # Node
ixt tool install BurntSushi/ripgrep          # GitHub binary

That's it. ixt setup path supports bash, zsh, fish, and PowerShell. Each tool lives in its own isolated env; run ixt environment to see the exact config, install, and cache paths for your platform.

Full installation guide CI usage

ixt has no telemetry and no background network activity. It contacts registries only for explicit commands that resolve, download, upgrade, or diagnose remote state.


🌟 Three ecosystems, one command

ixt auto-detects the backend from the package name — no flag, no config, no guessing.

Python tools from PyPI

Simple name → PyPI. ixt creates one isolated venv per tool with uv venv + uv pip install.

ixt tool install ruff
[INFO]   + ruff 0.5.0  (id: ruff.pypi)
[INFO]     exposed: ruff
$IXT_HOME/installed/envs/ruff.pypi/
├── .venv/                   # isolated Python env (uv)
│   └── bin/ruff
└── ixt.json                 # metadata snapshot

Python backend details


npm CLIs via bun

Scoped @scope/name → npm package. Uses bun for fast installs by default.

ixt tool install @biomejs/biome
[INFO]   + @biomejs/biome 1.9.4  (id: biome.biomejs.npm)
[INFO]     exposed: biome
$IXT_HOME/installed/envs/biome.biomejs.npm/
├── node_modules/            # isolated node_modules (bun)
│   └── .bin/biome
└── ixt.json

npm/bun backend details


Binaries from GitHub Releases

owner/repo → GitHub Releases. Pure Python stdlib — no runtime, no compiler.

ixt tool install sharkdp/fd
[INFO]   + sharkdp/fd 10.2.0  (id: fd.sharkdp.github)
[INFO]     exposed: fd
$IXT_HOME/installed/envs/fd.sharkdp.github/
├── bin/fd                   # extracted binary
├── man/fd.1
└── ixt.json

Binary backend details


Declarative, repeatable setups

Snapshot your tools once, replay them everywhere — local, teammates, CI. Exact repeatability comes from exact version pins; unpinned or ranged entries are resolved when ixt tool apply runs.

ixt tool export > ixt.toml
[tools]
"@pypi:ruff" = { version = "==0.5.0" }
"@npm:@biomejs/biome" = {}
"@gh:BurntSushi/ripgrep" = { expose = ["rg:ripgrep"] }
ixt tool apply              # installs what the config declares
ixt tool apply --remove     # also removes anything not listed

Configuration reference


✨ Why ixt?

  • One tool, every ecosystem


    Python linters, npm CLIs, Rust/Go/C binaries — all managed the same way, with the same commands.

  • Per-tool isolation


    Each tool gets its own env. No dependency conflicts, ever. Uninstall is a clean rm -rf.

  • Zero configuration


    The backend is auto-detected from the package name. ixt tool install <anything> just works.

  • Day-one releases


    GitHub release available today, install available today. No formula, registry entry, or plugin gate.

  • Zero dependencies


    Pure Python stdlib, zero PyPI packages. uv and bun can be bootstrapped when first needed, so the host does not need Node, npm, or a package manager pre-installed.


Where to next?

  • Getting started


    Install ixt, verify the signature, add it to PATH, install your first tool.

    Installation guide

  • Commands reference


    Every ixt command, every flag, with copy-paste examples.

    Command reference

  • Configuration


    ixt.toml format, version pinning, exposure rules, the mental model.

    Configuration guide


Coming from uvpipx?

ixt is the successor to uvpipx. Same core concepts (isolation, exposure, injection), generalized across three backends. Directory layout, metadata, and CLI all evolved — a migration script is provided.

Migration guide