pepe
pepe

pepe

An HTTP load generator with a live dashboard, built to cost less than the server it tests. Load-test a URL, ping it to see where the time goes, ramp to find the capacity, and read the result as a verdict or a JSON report.

Get started Read the docs View on GitHub

bash
curl -LsSf https://pepe.mhaimdat.com/install.sh | sh
pepe https://example.com

To ~/.local/bin, with tab completion and man pepe. Later: pepe self-update.

powershell
powershell -ExecutionPolicy Bypass -c "irm https://pepe.mhaimdat.com/install.ps1 | iex"

To ~\.local\bin, with tab completion for PowerShell. Later: pepe self-update.

bash
brew install omarmhaimdat/pepe/pepe

macOS and Linux.

bash
nix run github:omarmhaimdat/pepe -- https://example.com

Or keep it: nix profile install github:omarmhaimdat/pepe.

bash
docker run --rm -it ghcr.io/omarmhaimdat/pepe https://example.com

A few megabytes, linux/amd64 and linux/arm64.

bash
cargo install --locked --git https://github.com/omarmhaimdat/pepe

Signed binaries for every platform are on the releases page; every way to install, in the docs.

pepe: a ping that says where the time goes, then a run with the live dashboard and the verdict it leaves
Load testpepe URL: latency, throughput and errors live; pause, change the concurrency, open any request; a verdict when it ends. Pingpepe ping URL: a request a second split into DNS, connect, TLS, first byte and download, on a graph, with what to look at. Ramppepe ramp URL --to 200: raise the load step by step, find the level that held and the capacity. Comparepepe compare before.json after.json: what moved between two runs, as a verdict, a badge and a card. OpenAPIpepe api openapi.yaml: every endpoint of a spec under load at once, which are slow, which fail. Flowspepe flow checkout.toml: a sequence of requests, each step fed by the one before. Replaypepe replay access.log: an access log's URLs in their real proportions, sent at another host. nginx logspepe logs access.log: the request rate now against each minute, hour and day, paths, errors and lines. CI, scripts and agentsA GitHub Action, --fail-if 'p99 > 300ms', a versioned JSON report with a schema, and the modes as MCP tools with guardrails.
398krequests a second from one thread, Linux, 4 vCPU 2.4msof CPU per 1,000 requests; wrk 3.5 ms, oha 6.8 ms 4.0MBpeak memory, 4.5 MB after ten million requests