Introducing tgrs - A Modern HTTP Client CLI with Built-in API Testing
If you work with APIs, you probably use curl, wget and etc. every day. It gets the job done, but when you need assertions, timing breakdowns, flow testing, or load testing - you reach for separate tools.
tgrs combines all of these into a single CLI tool. One binary, zero dependencies, native HTTP/3 support.
Tigrister CLI - tgrs v1.0.0 is available
curl-Compatible, But More Powerful
If you know curl, you already know tgrs. The familiar flags work the same way:
tgrs GET https://api.example.com/users -H "Accept: application/json"
tgrs POST https://api.example.com/users -H "Content-Type: application/json" -d '{"name": "John"}'
tgrs GET https://api.example.com/admin -u admin:secret
tgrs GET https://example.com -L -k
-H, -d, -u, -L, -k, -o - they all work as expected. No new syntax to learn.
But tgrs adds capabilities that curl doesn't have.
Request Tracing
Every API call goes through multiple phases: DNS lookup, TCP handshake, TLS negotiation, server processing, content download. When something is slow, you need to know which phase is the bottleneck.
Use -t (or --trace) to see a visual waterfall breakdown:
tgrs GET https://api.example.com/users -t
Every phase is measured with microsecond precision. DNS taking too long? TLS handshake slow? Server response time high? You'll see it instantly.
This is not just a total response time. It's a full breakdown of where every millisecond goes.
Built-in Assertions
Testing APIs usually means writing scripts, setting up test frameworks, or using GUI tools. With tgrs, you validate responses directly from the command line:
tgrs GET https://api.example.com/users \
-a "status eq 200, $.data.id exists, body contains users, header content-type contains json, response_time lt 500"
Five assertion targets: status codes, JSON paths, body content, headers, and response times. Short operators like eq, lt, gt, contains keep commands concise.
The key detail: tgrs exits with code 1 when assertions fail. This makes it a drop-in tool for CI/CD pipelines. No test framework needed.
# GitHub Actions
- name: API Health Check
run: |
curl -sSL https://cli.tigrister.com | sh
tgrs GET https://api.example.com -a "status eq 200, response_time lt 2000"
Flow Runner - Chaining API Requests
Real-world API testing is rarely a single request. You need to authenticate, create resources, verify them, update them, check side effects. tgrs has a built-in flow runner for exactly this.
Define your flows in .flow.json files (created with Tigrister Pro or written manually), then run them:
tgrs run order-flows -f place-order
Run all flows in a directory at once:
tgrs run order-flows
The live terminal dashboard shows every step's status, response time, HTTP method, URL, and assertion results. All four flows ran with 100% success rate, 16 out of 16 steps passed.
Iterations and Anomaly Detection
Run the same flow multiple times to detect performance regressions:
tgrs run order-flows -f bulk-create-orders -i 4
Or run iterations in parallel with -p:
tgrs run order-flows -f bulk-create-orders -p 4
Each iteration appears as a separate line on the response time chart. The anomaly detection engine automatically flags unstable response times - like "Create Shipment Label: Iteration 1: 423ms - 73% above average" or "Response times are unstable (CV: 45%)".
You don't need to eyeball charts. tgrs tells you what's wrong.
Load Testing
When you need to push your API to its limits, tgrs supports four test types:
- load - Gradual ramp up, sustained load, gradual ramp down
- stress - Aggressive increase to find breaking points
- spike - Sudden spike to high load
- soak - Long duration with low, steady load
tgrs run api-specs -s user-api -t stress
The real-time dashboard shows response time charts, throughput (req/s), error rates, active virtual users, and a step breakdown with P50/P90/P95/P99 percentiles. The error analysis section pinpoints exactly which steps are failing and why.
25+ Random Data Generators
Generate dynamic test data on the fly in any request, flow step, or load test:
tgrs POST https://api.example.com/users \
'{"email": "{{random.email}}", "id": "{{random.uuid}}", "name": "{{random.name}}"}'
Available generators: uuid, email, name, firstName, lastName, phone, number, string, boolean, date, datetime, ip, ipv6, url, city, country, slug, hex, alphanumeric, custom (regex patterns), and more.
HTTP/3 Native
tgrs has first-class HTTP/3 (QUIC) support. Force a specific protocol or let tgrs negotiate automatically:
tgrs GET https://api.example.com --http3
tgrs GET https://api.example.com --http2
tgrs GET https://api.example.com --http1.1
Connection pooling handles HTTP/1.1 keep-alive, HTTP/2 multiplexing, and QUIC connections transparently.
Install in Seconds
Pick your preferred method:
curl -sSL https://cli.tigrister.com | sh
wget -qO- https://cli.tigrister.com | sh
npm install -g @tigrister/tgrs
brew install tigrister/tap/tgrs
Available on macOS and Linux. Windows support is coming soon.
tgrs also auto-updates in the background - when a new version is available, it downloads and replaces itself automatically.
What's Next
tgrs v1.0.0 is the foundation. We're working on Windows support, more export formats, and deeper CI/CD integrations.
Try it out, break things, and let us know what you think.
Tigrister: Api Client
Documentation: https://tigrister.com/cli
npm: https://www.npmjs.com/package/@tigrister/tgrs






Top comments (0)