Skip to content

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:

  1. Registry — is this name mapped to a repo?
  2. 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:

ixt registry list

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.

[tools]
mytool = "@gh:owner/repo"
team-cli = "@gh:mycompany/team-cli"

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.

export IXT_REGISTRY="/org/registry.toml;/project/registry.toml"

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.