Features

Table of Contents

  1. Feature list
    1. Release sources
    2. Installed package management
    3. Asset selection
    4. Verification and safety
    5. Configuration
    6. Distribution and tooling
  2. Comparison matrix
  3. Migrating from eget

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, and token settings.
  • PROFILE:owner/repo shorthand, for example xget install gitlab:gitlab-org/cli.
  • Nested GitLab namespaces (group/subgroup/project).

Installed package management

  • Successful installs are recorded in ~/.config/xget/.xget.installed.yml with the asset, download URL, extracted files, options, checksum, and tag.
  • The same package can be tracked in multiple locations and managed independently.
  • xget list --installed shows stored package versions, locations, and dates; --check refreshes the latest available versions first.
  • xget upgrade reports and applies available upgrades, including --all, pinned tags, and per-location upgrades.
  • xget self-update updates xget itself.
  • xget uninstall removes tracked files and the matching record.
  • --untracked opts a single install out of the store.

Asset selection

  • --asset matchers with literal, regex (~, =~, re:), and negative (^, not:) forms, plus escapes (~~, ^^) and explicit literals (text:).
  • --ignore exclusion matchers using the same syntax, including inverted ignores.
  • {{.OS}} and {{.Arch}} template variables in configured asset_filters and ignore values.
  • 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.exe becomes fx.exe.

Verification and safety

  • Automatic verification of *.sha256 / *.sha256sum sibling assets.
  • --verify uses GitHub’s published SHA-256 when available; --verify-sha256 checks against a value you provide; --sha256 prints the hash.
  • Warnings for plaintext tokens in configuration, with @/path/to/token file references and disable_token_warning opt-out.
  • --non-interactive fails (exit code 16) 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/edit for 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, or GITHUB_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 eget with xget in commands, or symlink xget as eget.
  • Existing .eget.toml files are still discovered and honored.
  • EGET_GITHUB_TOKEN and EGET_CONFIG are still read; the XGET_ variants take precedence.
  • eget owner/repo --remove maps to xget uninstall owner/repo.

See the installation guide to get started, or the FAQ for more background on the fork.