back to home

ducaale / xh

Friendly and fast tool for sending HTTP requests

View on GitHub
7,672 stars
124 forks
35 issues
RustPowerShellShell

AI Architecture Analysis

This repository is indexed by RepoMind. By analyzing ducaale/xh in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.

Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.

Source files are only loaded when you start an analysis to optimize performance.

Embed this Badge

Showcase RepoMind's analysis directly in your repository's README.

[![Analyzed by RepoMind](https://img.shields.io/badge/Analyzed%20by-RepoMind-4F46E5?style=for-the-badge)](https://repomind.in/repo/ducaale/xh)
Preview:Analyzed by RepoMind

Repository Overview (README excerpt)

Crawler view

xh is a friendly and fast tool for sending HTTP requests. It reimplements as much as possible of HTTPie's excellent design, with a focus on improved performance. Installation via cURL (Linux & macOS) via Powershell (Windows) via a package manager | OS | Method | Command | |-------------------------------|------------|--------------------------------------------| | Any | Cargo\* | | | Any | [Huber] | | | Android ([Termux]) | pkg | | | Android ([Magisk]/[KernelSU]) | MMRL\*\* | | | Alpine Linux | apk\*\*\* | | | Arch Linux | Pacman | | | Debian & Ubuntu | Apt\*\*\*\*| | | FreeBSD | FreshPorts | | | NetBSD | pkgsrc | | | Linux & macOS | Nixpkgs | | | Linux & macOS | [Flox] | | | Linux & macOS | Homebrew | | | Linux & macOS | [Hermit] | | | macOS | MacPorts | | | Windows | Scoop | | | Windows | Chocolatey | | | Windows | Winget | | \* Make sure that you have Rust 1.85 or later installed \*\* You will need to install the MMRL CLI \*\*\* Built with native-tls only. \*\*\*\* Available since Debian 13 and Ubuntu 25.04. Built with native-tls only. [Huber]: https://github.com/innobead/huber#installing-huber [Magisk]: https://github.com/topjohnwu/Magisk [KernelSU]: https://kernelsu.org [Termux]: https://github.com/termux/termux-app [Flox]: https://flox.dev/docs/ [Hermit]: https://cashapp.github.io/hermit/ via pre-built binaries The release page contains prebuilt binaries for Linux, macOS and Windows. Usage Run for more detailed information. Request Items uses HTTPie's request-item syntax to set headers, request body, query string, etc. • / for setting the request body's JSON or form fields ( for strings and for other JSON types). • for adding query strings. • for including files in multipart requests e.g or . • for adding or removing headers e.g or . • for including headers with empty values e.g . An prefix can be used to read a value from a file. For example: . The request body can also be read from standard input, or from a file using . To construct a complex JSON object, a JSON path can be used as a key e.g . For more information on this syntax, refer to https://httpie.io/docs/cli/nested-json. Shorthand form for URLs Similar to HTTPie, specifying the scheme portion of the request URL is optional, and a leading colon works as shorthand for localhost. is equivalent to , and is equivalent to . URLs can have a leading which allows quickly converting a URL into a valid xh or HTTPie command. For example becomes . Making HTTPS requests by default will default to HTTPS scheme if the binary name is one of , , or . If you have installed via a package manager, both and should be available by default. Otherwise, you need to create one like this: Strict compatibility mode If is invoked as or (by renaming the binary), or if the environment variable is set, it will run in HTTPie compatibility mode. The only current difference is that is not enabled by default. Examples How xh compares to HTTPie Advantages • Improved startup speed. • Available as a single statically linked binary that's easy to install and carry around. • HTTP/2 support. • Builtin translation to curl commands with the flag. • Short, cheatsheet-style output from . (For longer output, pass .) Disadvantages • Not all of HTTPie's features are implemented. (#4) • No plugin system. • General immaturity. HTTPie is old and well-tested. • Worse documentation. Similar or related Projects • curlie - frontend to cURL that adds the ease of use of httpie • httpie-go - httpie-like HTTP client written in Go • curl2httpie - convert command arguments between cURL and HTTPie