# Install xh with Homebrew, apk, apt, MacPorts, Nix, pacman, scoop, winget, zypper

Friendly and fast tool for sending HTTP requests. Version 0.26.1 via Homebrew; verified 2026-06-20.

## Install

```sh
sudo av install brew:xh
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install xh
```

  Evidence: local Homebrew formula metadata

- MacPorts (94%):

```sh
sudo port install xh
```

  Evidence: MacPorts ports tree: net/xh/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1

### Linux

- apk (92%):

```sh
sudo apk add xh
```

  Evidence: Alpine Linux edge package indexes: xh from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz

- Debian apt (92%):

```sh
sudo apt install xh
```

  Evidence: Debian stable package indexes: xh from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz

- Nix (92%):

```sh
nix profile install nixpkgs#xh
```

  Evidence: nixpkgs package indexes: pkgs/by-name/xh/xh/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1

- pacman (92%):

```sh
sudo pacman -S xh
```

  Evidence: Arch Linux sync databases: xh from https://geo.mirror.pkgbuild.com/extra/os/x86_64/extra.db.tar.gz

- zypper (92%):

```sh
sudo zypper install xh
```

  Evidence: openSUSE Tumbleweed package metadata: xh from https://download.opensuse.org/tumbleweed/repo/oss/repodata/be8d3611d25469107f32075a1697e69ec57a2b850b42348a658cc671ad5ec2b50760d02c3e59524d50da9a11d5be799bdaffba2e166e8ca8858512e3c0bd665d-primary.xml.zst

### Windows

- Scoop (92%):

```sh
scoop install main/xh
```

  Evidence: Scoop official bucket manifest trees: bucket/xh.json from https://api.github.com/repos/ScoopInstaller/Main/git/trees/master?recursive=1

- winget (92%):

```sh
winget install --id ducaale.xh -e
```

  Evidence: Windows Package Manager source index: ducaale.xh from https://cdn.winget.microsoft.com/cache/source.msix

## Package facts

- **Package key:** brew:xh
- **Package manager:** Homebrew
- **Package manager page:** <https://formulae.brew.sh/formula/xh>
- **Version:** 0.26.1
- **Source summary:** Friendly and fast tool for sending HTTP requests
- **Homepage:** <https://github.com/ducaale/xh>
- **Repository:** <https://github.com/ducaale/xh>
- **Upstream docs:** <https://github.com/ducaale/xh#readme>
- **License:** MIT
- **Source archive:** <https://github.com/ducaale/xh/archive/refs/tags/v0.26.1.tar.gz>
- **Last updated:** 2026-06-20T00:41:08Z
- **Generated:** 2026-07-08T07:18:31+00:00

## Executables

- xh (cli)
- xhs (cli)
- xh (alias)
- xhs (alias)

## Build dependencies

- rust

## Install behavior

- Post-install hook: not defined
- Bottle: available on arm64_linux, arm64_sequoia, arm64_sonoma, arm64_tahoe, sonoma, x86_64_linux

## Freshness

- Page generated: 2026-07-08
- Package-manager version: 0.26.1
- Package-manager updated: 2026-06-20
- Local data: ok
- Upstream repository: https://github.com/ducaale/xh
- Upstream latest detected: v0.26.1 (current)
## Project history and usage

xh is a Rust command-line HTTP client that deliberately follows HTTPie's human-friendly request syntax while focusing on speed, portability, and a single-binary feel. It ships the `xh` command for ordinary requests and commonly also `xhs` for HTTPS-first invocation.

### Project history

The GitHub repository was created on 2020-09-10. From its README, the central project premise has been stable: reimplement as much as possible of HTTPie's design, but with improved performance. That places xh in a specific generation of Rust CLI rewrites that kept beloved command-line UX while replacing heavier runtimes with compiled binaries.

The tool grew into a broad HTTP client rather than a minimal curl wrapper. Its documented options cover JSON/form/multipart bodies, pretty output, auth modes, sessions, redirects, downloads, proxies, TLS settings, HTTP/2 and HTTP/3 prior-knowledge modes, Unix sockets, offline request construction, curl command generation, completions, and manpage generation.

### Adoption history

xh's adoption story is unusually package-manager oriented. The README lists installation through Cargo, Homebrew, MacPorts, Nixpkgs, Alpine, Arch, Debian/Ubuntu, Fedora COPR, FreeBSD, NetBSD, Termux, Scoop, Chocolatey, Winget, and other managers, plus prebuilt binaries for Linux, macOS, and Windows.

By July 2026 the GitHub repository had about 7.9k stars, showing that xh had become one of the recognizable modern alternatives in the terminal HTTP-client space. Its strongest adoption path is among developers who like HTTPie's request syntax but want Rust startup speed and simpler binary distribution.

### How it is used

Typical use mirrors HTTPie: `xh GET example.com`, `xh POST :3000/users name=Ana`, headers with `Header:Value`, query parameters with `==`, JSON literals with `:=`, file upload items with `@`, and localhost shorthand such as `:8000`. The README also documents stdin/file request bodies, nested JSON paths, sessions, downloads, redirects, and output selection.

The package is useful in API testing, shell scripts, local service debugging, documentation snippets, and CI smoke checks where curl is too terse and a full API client is too heavy. The `xhs` alias/symlink convention gives a small packaging detail that matters: package installs can expose both HTTP-default and HTTPS-default entry points.

### Why package nerds care

xh is a clean example of the modern Rust CLI packaging pattern: a familiar UX borrowed from an established tool, fast native binaries, broad package-manager availability, and generated shell/manpage assets. It competes not by inventing a new HTTP grammar, but by making an existing ergonomic grammar cheap to install and fast to run.

For package nerds, xh also shows how compatibility can be a product feature. Its value comes from preserving enough HTTPie muscle memory that package users can swap tools without relearning request-item syntax.

### Timeline

- 2020-09-10: the ducaale/xh GitHub repository is created.
- Early project framing: the README describes xh as a friendly and fast tool that reimplements HTTPie's design with better performance.
- By the mid-2020s: the README lists package-manager installation paths across Linux, macOS, Windows, BSD, Android, Cargo, and Nix-style ecosystems.
- By July 2026: GitHub repository metadata shows roughly 7.9k stars and continued activity.

### Related projects

- HTTPie is the direct design ancestor whose request-item syntax and human-friendly CLI style xh follows.
- curl is the lower-level incumbent HTTP CLI; xh even includes options to print curl translations.
- Rust and Cargo matter to xh's distribution story because the tool is implemented as a compiled Rust CLI and can be installed with `cargo install`.

### Sources

- <https://api.github.com/repos/ducaale/xh>
- <https://api.github.com/repos/ducaale/xh/releases?per_page=5>
- <https://github.com/ducaale/xh>
- <https://github.com/httpie/cli>
- <https://raw.githubusercontent.com/ducaale/xh/master/README.md>


## Security Notes

broad file, network, media, or database tool signal.

- **Geiger risk:** blue / medium
- broad file, network, media, or database tool signal

## Source Database Details

- **Source Database:** Homebrew formula API
- **Tap:** homebrew/core
- **Full Name:** xh
- **Version Scheme:** 0
- **Revision:** 0
- **Head Version:** HEAD
- **Bottle Stable Root URL:** <https://ghcr.io/v2/homebrew/core>
- **Deprecated:** no
- **Disabled:** no
- **Keg Only:** no
- **URL Keys:** head, stable

## Other Package-Manager Records

- Debian apt - xh - 0.24.0-1+b1: normalized package name match | Debian stable package indexes: xh from https://deb.debian.org/debian/dists/stable/main/binary-amd64/Packages.xz | Friendly and fast tool for sending HTTP requests | https://github.com/ducaale/xh
- Nix - xh: normalized package name match | nixpkgs package indexes: pkgs/by-name/xh/xh/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1
- apk - xh - 0.24.0-r0: normalized package name match | Alpine Linux edge package indexes: xh from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz | Yet another HTTPie clone | https://github.com/ducaale/xh
- apk - xh-bash-completion - 0.24.0-r0: normalized package name match | Alpine Linux edge package indexes: xh-bash-completion from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz | Bash completions for xh | https://github.com/ducaale/xh
- apk - xh-doc - 0.24.0-r0: normalized package name match | Alpine Linux edge package indexes: xh-doc from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz | Yet another HTTPie clone (documentation) | https://github.com/ducaale/xh
- apk - xh-fish-completion - 0.24.0-r0: normalized package name match | Alpine Linux edge package indexes: xh-fish-completion from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz | Fish completions for xh | https://github.com/ducaale/xh
- apk - xh-zsh-completion - 0.24.0-r0: normalized package name match | Alpine Linux edge package indexes: xh-zsh-completion from https://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz | Zsh completions for xh | https://github.com/ducaale/xh
- pacman - xh - 0.25.3-1: normalized package name match | Arch Linux sync databases: xh from https://geo.mirror.pkgbuild.com/extra/os/x86_64/extra.db.tar.gz | Friendly and fast tool for sending HTTP requests | https://github.com/ducaale/xh
- zypper - xh - 0.25.3-1.3: normalized package name match | openSUSE Tumbleweed package metadata: xh from https://download.opensuse.org/tumbleweed/repo/oss/repodata/be8d3611d25469107f32075a1697e69ec57a2b850b42348a658cc671ad5ec2b50760d02c3e59524d50da9a11d5be799bdaffba2e166e8ca8858512e3c0bd665d-primary.xml.zst | Tool for sending HTTP requests | https://github.com/ducaale/xh
- MacPorts - xh: normalized package name match | MacPorts ports tree: net/xh/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1
- Scoop - main/xh: normalized package name match | Scoop official bucket manifest trees: bucket/xh.json from https://api.github.com/repos/ScoopInstaller/Main/git/trees/master?recursive=1
- winget - ducaale.xh: normalized package name match | Windows Package Manager source index: ducaale.xh from https://cdn.winget.microsoft.com/cache/source.msix


## Related links

- [Source-control packages](https://www.automicvault.com/pkg/source-control-tools/) - Belongs to a source-control command family.
- [Secret-risk packages](https://www.automicvault.com/pkg/secret-risk-packages/) - Has protected-tool coverage, approval-gate, or non-low Geiger security signals.
- [Terminal utility packages](https://www.automicvault.com/pkg/terminal-utilities/) - Matched terminal and command-line workflow metadata.
- [Text processing packages](https://www.automicvault.com/pkg/text-processing-tools/) - Matched text, document, or structured-data processing metadata.
- [rust](https://www.automicvault.com/pkg/brew/rust/) - Build dependency declared by Homebrew.
- [curlie](https://www.automicvault.com/pkg/brew/curlie/) - Shares av.db curated category or tags: api, api-testing, cli, developer-tools, http-client.
- [httpie](https://www.automicvault.com/pkg/brew/httpie/) - Shares av.db curated category or tags: api, cli, developer-tools, http-client.
- [httpyac](https://www.automicvault.com/pkg/brew/httpyac/) - Shares av.db curated category or tags: api, cli, developer-tools, http-client.
- [http-prompt](https://www.automicvault.com/pkg/brew/http-prompt/) - Shares av.db curated category or tags: api, api-testing, cli, developer-tools, http-client.
- [graphqurl](https://www.automicvault.com/pkg/brew/graphqurl/) - Shares av.db curated category or tags: api, cli, developer-tools, http-client.
- [kiota](https://www.automicvault.com/pkg/brew/kiota/) - Shares av.db curated category or tags: api, cli, developer-tools, http-client.
- [stripe-mock](https://www.automicvault.com/pkg/brew/stripe-mock/) - Shares av.db curated category or tags: api, api-testing, cli, developer-tools.
- [ain](https://www.automicvault.com/pkg/brew/ain/) - Shares av.db curated category or tags: api, cli, developer-tools.

## Combined YAML source

View the package source record on GitHub. [combined/xh.yml](https://github.com/automic-vault/db/blob/main/combined/xh.yml)


## Sources

- Nucleus package database
- Geiger risk classifier
- package-page enrichment
- curated package history
- package version freshness
- av.db category and tag curation
- package relationship graph
- external package-manager database matches
- cross-ecosystem install command graph
