Registry — short names to repos¶
ixt tool install ripgrep→@gh:BurntSushi/ripgrep. The registry bridges the name ↔ repo gap.
Tools on GitHub are identified by owner/repo, but most users remember only the tool name (ripgrep, not BurntSushi/ripgrep). The registry fixes that.
ixt tool install ripgrep # resolves via registry → @gh:BurntSushi/ripgrep
ixt tool install fd # → @gh:sharkdp/fd
ixt tool install bat # → @gh:sharkdp/bat
How lookup works¶
When you pass a simple name (no /, no @scope/), ixt tries in order:
- Registry — is this name mapped to a repo?
- PyPI fallback — assume it's a PyPI package.
So ixt tool install ripgrep hits the registry and resolves to @gh:BurntSushi/ripgrep (binary backend); ixt tool install ruff misses the registry and falls back to PyPI. There's no "fail" step — a simple name with no registry match is always tried on PyPI.
Lookup is case-insensitive and also matches the repo name (last segment of owner/repo). Given an entry nushell = "@gh:nushell/nushell", ixt tool install nushell, Nushell, and NUSHELL all resolve to the same tool.
What ships out of the box
The registry currently ships 50+ popular tools: ripgrep, fd, bat, fzf, jq, delta, starship, zellij, helix, nushell, lazygit, gh, glow, k9s, btop, atuin, mise, rclone, jj, and more. See src/ixt/data/registry.toml for the full list.
Inspecting entries¶
Use registry list to see the effective registry after built-in entries,
user config, and IXT_REGISTRY overlays have been merged:
The output is intentionally just name -> spec data. Asset patterns,
checksums, exposure rules, and descriptions live outside the registry.
Adding your own entries¶
User-level overrides live at $IXT_HOME/config/registry.toml. Entries here take precedence over the built-in registry.
For team or project overlays, set IXT_REGISTRY to one or more local registry files separated by ;. These files have higher priority than the user-level registry; lower-priority sources still remain available for names they don't define.
Files are read left to right and the last file wins when two registries define the same name. Remote URLs are reserved for future support and ignored for now.