rick-cli-0.2.1 is not a library.
The Problem
You want to POST some JSON. Here's cURL:
Here's rick:
That's it. That's the whole pitch.
Installation
Pre-built binaries (recommended)
Download the latest release for your platform:
# macOS (Apple Silicon)
|
# macOS (Intel)
|
# Linux (x86_64)
|
# Linux (ARM64)
|
Or download manually from Releases.
From source
Cargo
Quick Start
# GET request
# POST JSON (the killer feature)
# Custom headers
# Save response to file
# See what's happening
Why rick?
1. --json flag
The single feature that justifies rick's existence.
# cURL (pain)
# rick (joy)
2. Smart defaults
| Behavior | cURL | rick |
|---|---|---|
| Follow redirects | No (-L to enable) |
Yes (--no-follow to disable) |
| POST when data provided | No (-X POST required) |
Yes (auto-detected) |
3. HTTP-focused
cURL supports 25+ protocols (FTP, LDAP, SMTP, Gopher...). rick supports HTTP and HTTPS. That's it. This keeps the codebase simple, the binary small, and the mental model clear.
4. Zero dependencies
Single static binary. No OpenSSL. No system libraries. Download and run.
Usage
rick [OPTIONS] <URL>
Arguments:
<URL> URL to request
Options:
-X, --method <METHOD> HTTP method (GET, POST, PUT, DELETE, PATCH, HEAD)
-H, --header <HEADER> Add header (can be used multiple times)
-d, --data <DATA> Request body
--json <JSON> JSON body (sets Content-Type & Accept automatically)
-o, --output <FILE> Write response to file
-i, --include Show response headers
-v, --verbose Show request and response headers
--no-follow Don't follow redirects
-h, --help Print help
Examples
GET request
POST with form data
POST JSON
Custom headers
PUT request
Download file
Debug request/response
# > GET https://httpbin.org/get HTTP/1.1
# >
# < HTTP/1.1 200 OK
# < content-type: application/json
# ...
Include response headers
# HTTP/1.1 200 OK
# content-type: application/json
# ...
#
# {"args": {}, ...}
vs cURL
| Feature | cURL | rick |
|---|---|---|
| JSON POST | -H "Content-Type: application/json" -d '{}' |
--json '{}' |
| Follow redirects | Need -L |
Default behavior |
| Auto-detect POST | Need -X POST |
Automatic with -d/--json |
| Protocols | 25+ | HTTP(S) only |
| Binary size | ~540 KB (dynamic) | ~7 MB (static) |
| Dependencies | OpenSSL, libcurl, etc. | None |
When to use cURL instead
- You need FTP, SFTP, SCP, or other protocols
- You need advanced features (cookies file, netrc, proxy auth)
- You're writing a shell script that must work everywhere
- Binary size is critical
When to use rick
- 99% of your API testing
- You're tired of the JSON header dance
- You want sane defaults
- You want a single static binary
Name
rick = Rust Integrated Curl + K (for fun)
Yes, it should be "ric" but that looked weird.
Design Philosophy
- Optimize for the common case — JSON APIs are everywhere, make them easy
- Respect muscle memory — Keep familiar flags (
-H,-d,-o,-v,-i,-X) - Modern defaults — Follow redirects, auto-detect methods
- Do one thing well — HTTP only, no feature creep
See DECISIONS.md for detailed design rationale.
Building from source
# Clone
# Build
# Run tests
# Install locally
Requirements
- Rust 1.75 or later
- That's it
Contributing
Contributions are welcome! Please read the guidelines:
- Keep it simple — rick is intentionally minimal
- Discuss first — Open an issue before adding features
- Document decisions — Update DECISIONS.md for non-trivial changes
# Format code
# Run clippy
# Run tests
Roadmap
- Progress bar for large downloads
- Timeout configuration (
--timeout) - Retry logic (
--retry) - Read body from file (
--json @file.json) - Response time display
- Config file for defaults
Not planned:
- Other protocols (FTP, etc.)
- Cookie jars
- .netrc support
- Feature parity with cURL
License
MIT License — do whatever you want.