Goku

by jcaromiq

146 362 downloads Not rated yet MIT

About

Goku is an HTTP load testing application written in Rust

Details

License
MIT

Explore

Fast and scalable HTTP load testing
Real-time live stats during long tests
Rate limiting (--rps) for constant-rate load profiles
Multi-step sequential scenarios (multiple endpoints per test)
Variable templating in URLs and bodies ({{uuid}}, {{seq}}, {{random_int}}, …)
Built-in authentication (Bearer token, Basic auth)
ASCII latency histogram in text output
compare subcommand to diff two benchmark runs
Output to file (--output-file) and per-request log (--results-log)
HTTP/1.1, HTTP/2 support
Multiple output formats: text, json, csv
MCP (Model Context Protocol) server for LLM/agent integration

---

Example usage with an LLM

Once Goku is registered as an MCP tool, you can ask your LLM:

> "Run a load test on https://api.example.com/users with 50 concurrent clients for 30 seconds using HTTP/2, and give me the p95 and p99 latency."

The LLM will call the run_benchmark MCP tool and return the full structured report.

Parameter

Type

target

string

clients

number

requests

number

duration_secs

number

body

string

headers

string[]

http2

boolean

ramp_up

number

timeout_ms

number

insecure

boolean

rps

number

The MCP server exposes a single unified tool with the following parameters:

| Parameter | Type | Required | Description |
|---|---|---|---|
| target | string | ✅ | URL with optional method prefix. E.g. "POST http://api.example.com/users" |
| clients | number | ✅ | Number of concurrent workers |
| requests | number | — | Total requests (ignored when duration_secs is set) |
| duration_secs | number | — | Test duration in seconds (alternative to requests) |
| body | string | — | Request body for POST/PUT/PATCH |
| headers | string[] | — | Headers in "Name:Value" format |
| http2 | boolean | — | Use HTTP/2 prior knowledge |
| ramp_up | number | — | Seconds to spread worker start |
| timeout_ms | number | — | Request timeout in ms (default: 30000) |
| insecure | boolean | — | Accept invalid TLS certificates |
| rps | number | — | Max requests per second (rate limiting) |

Returns a full JSON report with all latency percentiles, throughput, and status code breakdown.

---

Rust

Goku

Goku is a high-performance, scalable HTTP load-testing tool designed for benchmarking and performance analysis of web services. Inspired by tools like Drill and Vegeta, Goku offers modern features and simplicity for engineers to simulate and analyze traffic efficiently.

Features

Fast and scalable HTTP load testing
Real-time live stats during long tests
Rate limiting (--rps) for constant-rate load profiles
Multi-step sequential scenarios (multiple endpoints per test)
Variable templating in URLs and bodies ({{uuid}}, {{seq}}, {{random_int}}, …)
Built-in authentication (Bearer token, Basic auth)
ASCII latency histogram in text output
compare subcommand to diff two benchmark runs
Output to file (--output-file) and per-request log (--results-log)
HTTP/1.1, HTTP/2 support
Multiple output formats: text, json, csv
MCP (Model Context Protocol) server for LLM/agent integration

---

Install CLI

Automatic download (Linux, OSX, WSL)

curl -sSL https://raw.githubusercontent.com/jcaromiq/goku/v3.0.0/scripts/install.sh | sh

Using Cargo

cargo install goku-bench
goku --version

Manual download

Go to the Goku's GitHub Releases page and download the latest .tar.gz for your system:

Linux (x86_64, arm64)
macOS (x86_64)

  • Windows (x86_64)


From source

cargo build --release

---

MCP (Model Context Protocol) Support

Goku integrates with the Model Context Protocol (MCP) — use Goku programmatically from any LLM agent or MCP-aware client.

What this enables

- Use Goku from an LLM or AI agent — no manual CLI usage required.
- Combine load testing with automated workflows: trigger a test, gather metrics, and analyze results from within an agent or script.
- Seamless integration into broader toolchains and agentic pipelines.

Example usage with an LLM

Once Goku is registered as an MCP tool, you can ask your LLM:

> "Run a load test on https://api.example.com/users with 50 concurrent clients for 30 seconds using HTTP/2, and give me the p95 and p99 latency."

The LLM will call the run_benchmark MCP tool and return the full structured report.

Install MCP server

```bash

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.

Videos about Goku

Relevant YouTube tutorials, setups, and demos