# curlie — The Power of curl, the Ease of HTTPie > curlie is a thin wrapper around curl written in Go that speaks HTTPie-style arguments, inheriting every curl feature (HTTP/3, SSH, FTP, GSSAPI) while giving a friendly terminal UX. ## Install Save in your project root: # curlie — The Power of curl, the Ease of HTTPie ## Quick Use ```bash brew install curlie # GET with pretty JSON curlie example.com/api/users # POST JSON, HTTPie-style curlie POST api.example.com/users name=alice role=admin # Any curl flag still works — HTTP/3 curlie --http3 example.com ``` ## Introduction curlie is the pragmatist's HTTPie: a ~5MB Go binary that parses HTTPie-style `key=value` / `key:value` / `key:=raw` / `key@file` arguments, translates them into curl flags, and execs **real curl**. You get curl's full feature surface (HTTP/3, SSH, FTP, Kerberos, ALPN, multi-protocol) plus HTTPie's readable output and pretty JSON. ## What curlie Does - Accepts HTTPie-style arguments at the shell. - Translates them into equivalent curl invocations. - Pipes curl's output through a JSON colorizer. - Forwards every curl flag transparently — full feature parity. - Resolves `@file` bodies, forms, multipart, sessions. ## Architecture Overview On invocation, curlie tokenizes args, categorizes them into methods, URLs, headers, body fields, and curl flags, builds the corresponding `curl` argv, and execs it. stdout is piped through `gron`-like JSON prettifier when content-type is JSON. Exit code mirrors curl's. ## Self-Hosting & Configuration - Install via brew, scoop, winget, or `go install github.com/rs/curlie@latest`. - Relies on the system `curl` being in `$PATH`. - `CURLIE_PRETTY=off` disables coloring for CI. - All curl environment variables (`CURL_HOME`, `SSL_CERT_FILE`) pass through. ## Key Features - Inherits curl's full protocol matrix (HTTP/3, SCP, SFTP, IMAP, LDAP). - HTTPie syntax without Python install. - Pretty JSON + colored headers in the terminal. - Single small Go binary, works on Alpine. - Zero behavior surprises — it's still curl underneath. ## Comparison with Similar Tools - **HTTPie (Python)** — fuller client but heavier install. - **xh** — self-contained Rust reimplementation; no curl dependency. - **httpie-go** — Go rewrite; not curl-backed. - **curl** — everything, but argument syntax is verbose. - **Hurl** — file-based test DSL; complementary. ## FAQ **Q: Do I need curl installed?** A: Yes — curlie execs `curl`. This is intentional. **Q: HTTP/3?** A: If your curl is built with nghttp3/quiche, `curlie --http3 url` works. **Q: Sessions like HTTPie?** A: Use curl's `-b`/`-c` cookie jars or `.netrc`. **Q: Windows?** A: Yes — pair with Windows curl (shipped in Windows 10+). ## Sources - https://github.com/rs/curlie --- Source: https://tokrepo.com/en/workflows/bd2e4178-389d-11f1-9bc6-00163e2b0d79 Author: AI Open Source