Developers and system administrators routinely interact with REST APIs and web services using the terminal. While curl is exceptionally fast, universally installed, and supports complex proxy environments, its default raw output can be cumbersome to read. Conversely, tools like HTTPie offer beautiful, coloured output but lack curl’s native performance and edge-case handling. The curlie command Linux utility bridges this gap by functioning as a wrapper that combines the human-friendly formatting of HTTPie with the full power and reliability of curl.
What Is the curlie Command in Linux?
Written in Go, curlie acts as a frontend CLI parser. When you enter a command, curlie parses the request flags using HTTPie’s intuitive syntax, translates them into standard curl arguments under the hood, and executes the transfer. Upon receiving the server response, it automatically colour-codes HTTP response headers and pretty-prints JSON payloads with syntax highlighting.
How to Install curlie on Linux
Because curlie relies on curl to execute network transport, ensure curl is installed on your distribution before setting up curlie.
Installing on Debian, Ubuntu, and Linux Mint
On modern Debian and Ubuntu systems, you can install curlie via pre-built binaries or package archives:
# Install prerequisites
sudo apt update
sudo apt install curl
# Download and install the latest curlie binary release
sudo curl -sS https://webi.sh/curlie | sh
Alternatively, if you use Homebrew on Linux:
brew install curlie
Installing on Arch Linux and Fedora
On Arch Linux, install curlie directly from the Arch User Repository (AUR) or community packages:
yay -S curlie-bin
On Fedora, download the official RPM release from GitHub or compile it using Go:
go install github.com/rs/curlie@latest
Making Simple GET and POST Requests
Interacting with endpoints using curlie requires minimal boilerplate flags.
Fetching Data with GET
To perform an HTTP GET request, provide the URL directly:
curlie api.github.com/users/octocat
Unlike standard curl, you do not need to prepend https:// if the domain is standard, and curlie immediately displays coloured HTTP status codes (such as HTTP/2 200 OK), response headers, and formatted JSON indentation.
Sending JSON Payloads with POST
Creating POST requests with JSON data in raw curl requires tedious escaping and explicit header declarations like -H "Content-Type: application/json". With curlie, you simply pass key-value pairs separated by an equals sign:
curlie POST httpbin.org/post name="Alex" role="Engineer" active:=true
Notice the syntax distinction:
key="value"passes a standard string field.key:=valuepasses raw non-string types, such as booleans, integers, or nested objects.
Passing Custom Headers and Authentication
Adding custom HTTP request headers uses a colon syntax without complex quote wrapping:
curlie api.example.com/data "Authorization: Bearer my_jwt_token" "X-Client-ID: digitash"
For basic HTTP authentication, utilise the -a or --auth flag:
curlie -a admin:password123 httpbin.org/basic-auth/admin/password123
Leveraging Native curl Flags with curlie
Because curlie is a frontend to curl, you can pass any native curl option directly. If you need to follow redirects, inspect connection latency, or configure a SOCKS5 proxy, append standard curl arguments:
# Follow HTTP redirects automatically (-L)
curlie -L example.com
# Route through a local proxy (--proxy)
curlie --proxy socks5://127.0.0.1:9050 https://api.ipify.org?format=json
# Silence output or output response headers only (-I)
curlie -I https://digitash.com
Redirecting and Piping curlie Outputs
When running in an interactive terminal, curlie enables rich ANSI colourisation. However, when piping output into another shell command or saving to a file, curlie automatically detects the stream redirect and disables terminal formatting codes, outputting clean, uncoloured data suitable for jq or file storage:
curlie api.github.com/repos/torvalds/linux | jq '.stargazers_count'