Features
Table of Contents
xget is a fork of zyedidia/eget that keeps the original workflow β point it at a repository, get a binary β while adding package tracking, upgrades, more release sources, and richer asset matching.
xget v2 is backwards compatible with eget v1: existing commands and .eget.toml configuration files keep working, so switching is usually a matter of replacing eget with xget (or symlinking xget to eget).
Feature list
Release sources
- GitHub and GitLab releases, direct URLs, and local archives.
- Named source profiles for self-hosted or alternate hosts, with per-profile
host,api_url,token_env, andtokensettings. PROFILE:owner/reposhorthand, for examplexget install gitlab:gitlab-org/cli.- Nested GitLab namespaces (
group/subgroup/project).
Installed package management
- Successful installs are recorded in
~/.config/xget/.xget.installed.ymlwith the asset, download URL, extracted files, options, checksum, and tag. - The same package can be tracked in multiple locations and managed independently.
xget list --installedshows stored package versions, locations, and dates;--checkrefreshes the latest available versions first.xget upgradereports and applies available upgrades, including--all, pinned tags, and per-location upgrades.xget self-updateupdates xget itself.xget uninstallremoves tracked files and the matching record.--untrackedopts a single install out of the store.
Asset selection
--assetmatchers with literal, regex (~,=~,re:), and negative (^,not:) forms, plus escapes (~~,^^) and explicit literals (text:).--ignoreexclusion matchers using the same syntax, including inverted ignores.{{.OS}}and{{.Arch}}template variables in configuredasset_filtersandignorevalues.- Tag selection with
owner/repo@TAG,--tag,@latest, and monorepo tag fragment matching. --binary(alias--name) renames a single extracted file while keeping its extension, e.g.fx_windows_amd64.exebecomesfx.exe.
Verification and safety
- Automatic verification of
*.sha256/*.sha256sumsibling assets. --verifyuses GitHubβs published SHA-256 when available;--verify-sha256checks against a value you provide;--sha256prints the hash.- Warnings for plaintext tokens in configuration, with
@/path/to/tokenfile references anddisable_token_warningopt-out. --non-interactivefails (exit code16) instead of prompting, for CI use. Enabled automatically when stdin is not a terminal.
Configuration
- TOML or YAML configuration, with a documented search order and
.eget.*fallbacks for compatibility. xget config get/set/pop/clear/list/path/editfor command-line management.- Global and per-repository sections with defined precedence.
- Environment files (
.secrets,*.secrets,.env,*.env) loaded per run. - Tokens from
XGET_GITHUB_TOKEN,EGET_GITHUB_TOKEN, orGITHUB_TOKEN.
Distribution and tooling
- Subcommands (
install,list,upgrade,uninstall,config,rate,version,completion) alongside the original flag-only invocation. - Shell completions for bash, zsh, fish, and PowerShell.
- Packages for Scoop, Homebrew,
.deb,.rpm,.apk, and Arch, plus install scripts for bash and PowerShell. - GitHub Action with binary caching.
- Release checksums and SBOM assets.
Comparison matrix
| Feature | xget | eget |
|---|---|---|
| GitHub releases | β | β |
| GitLab releases | β | β |
| Named source profiles / self-hosted hosts | β | β |
| Direct URL and local file targets | β | β |
| Installed package tracking | β | β |
| Tracking one package in several locations | β | β |
upgrade / update command | β | β οΈ --upgrade-only only |
self-update | β | β οΈ reinstall zyedidia/eget |
uninstall with tracked file removal | β | β οΈ --remove by file name |
| List releases for a repository | β | β |
| Subcommands | β | β flags only |
| Shell completion | β | β |
| Literal asset filters | β | β |
| Regex asset filters | β | β |
| Negative / anti-match filters | β | β οΈ literal ^ prefix |
--ignore exclusion list | β | β |
| OS/Arch templates in configured filters | β | β |
Tag selection (--tag, tag fragments, monorepos) | β | β |
owner/repo@TAG shorthand | β | β |
| Pre-release selection | β | β |
Automatic .sha256 sibling verification | β | β |
--verify-sha256 against a provided hash | β | β |
--verify using the published GitHub checksum | β | β |
| Plaintext token warnings and token files | β | β οΈ token files only |
| TOML configuration | β | β |
| YAML configuration | β | β |
.eget.toml compatibility | β | β |
Config management from the CLI (xget config) | β | β |
.env / .secrets loading | β | β |
| Non-interactive mode with dedicated exit code | β | β |
Download all configured projects (-D) | β | β |
Source archive download (--source) | β | β |
--disable-ssl | β | β |
| API rate limit reporting | β | β |
Linux packages (.deb, .rpm, .apk, Arch) | β | β |
| Scoop / Homebrew | β | β οΈ Homebrew, Chocolatey |
| GitHub Action | β | β |
| SBOM and release checksums | β | β |
Legend: β supported, β οΈ partial or different approach, β not available.
Migrating from eget
- Replace
egetwithxgetin commands, or symlinkxgetaseget. - Existing
.eget.tomlfiles are still discovered and honored. EGET_GITHUB_TOKENandEGET_CONFIGare still read; theXGET_variants take precedence.eget owner/repo --removemaps toxget uninstall owner/repo.
See the installation guide to get started, or the FAQ for more background on the fork.