DEV Community

Mesut Yakut
Mesut Yakut

Posted on • Originally published at Medium

Tigrister CLI

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
Enter fullscreen mode Exit fullscreen mode

-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
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Run all flows in a directory at once:

tgrs run order-flows
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Or run iterations in parallel with -p:

tgrs run order-flows -f bulk-create-orders -p 4
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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}}"}'
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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)