tsunami

command module
v0.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 24, 2026 License: MIT Imports: 1 Imported by: 0

README

Tsunami

Tsunami is an HTTP load testing tool for stress testing web services with a constant request rate. It features a CLI for terminal usage and a web UI for visual monitoring.

tsunami

Install

Pre-compiled binaries

Download from GitHub Releases.

Homebrew (macOS/Linux)
brew install paniccaaa/tap/tsunami
Source
git clone https://github.com/paniccaaa/tsunami.git
cd tsunami
make build

Requires Go 1.24+ and Node.js 20+.

Go (CLI-only version without web UI!)
go install github.com/paniccaaa/tsunami@latest
Docker
docker-compose up --build
# Open http://localhost:8080

Usage manual

Usage: tsunami [global flags] <command> [command flags]

Global flags:
  --cpus int    Number of CPUs to use (default: all)
  -h, --help    Show help
  -v, --version Print version

Commands:
  attack      Run a load test
  serve       Start web UI server
tsunami attack
Usage: tsunami attack [flags]

Flags:
  -u, --url string             Target URL to attack. Required.
  -m, --method string          HTTP method. (default "GET")
  -b, --body string            Request body.
  -H, --headers stringArray    Request headers. Can be repeated.
  -r, --rate string            Request rate. (default "100/1s")
  -d, --duration duration      Attack duration. 0 means infinite. (default 0)
  -t, --timeout duration       Request timeout. (default 10s)
  -w, --workers uint           Number of workers. (default 50)
  -c, --connections uint       Number of connections. (default 100)
  -o, --output string          Output file for JSON report. (default "stdout")
-r, --rate

Specifies the request rate in N/Vunit format where:

  • N is the number of requests
  • V is the time value
  • unit is one of: ms, s, m, h
100/1s    100 requests per second
50/500ms  100 requests per second
1000/1m   ~16.6 requests per second
-d, --duration

Attack duration. When set to 0, the attack runs until interrupted with Ctrl+C.

30s       30 seconds
5m        5 minutes
1h        1 hour
0         infinite (until Ctrl+C)
-o, --output

Output destination. Use stdout for terminal text output or a file path for JSON report.

# Text output to terminal
tsunami attack -u https://example.com

# JSON output to file
tsunami attack -u https://example.com -o results.json
tsunami serve
Usage: tsunami serve [flags]

Flags:
  -p, --port int    Server port. (default 8080)

Starts an HTTP server with web UI and REST API.

tsunami serve            
2026/01/24 16:28:40 Starting Tsunami HTTP server on http://localhost:8080

ui

API endpoints
POST /api/attack/start           Start a load test
POST /api/attack/stop            Stop current test
GET  /api/attack/status          Get status and live metrics
GET  /api/attack/results         Get final results
GET  /api/attack/results/download Download results as JSON
WS   /ws/metrics                 Real-time metrics stream

Examples

Basic attack
tsunami attack -u https://httpbin.org/get
POST request with JSON body
tsunami attack \
  -u https://httpbin.org/post \
  -m POST \
  -H "Content-Type: application/json" \
  -b '{"name": "test"}'
High-rate attack with duration
tsunami attack \
  -u https://example.com \
  -r 1000/1s \
  -d 1m \
  -w 100 \
  -c 200
Save results
tsunami attack \
  -u https://example.com \
  -d 30s \
  -o report.json

License

MIT

Documentation

Overview

Copyright © 2025 Semen Adamenko <[email protected]>

Directories

Path Synopsis
cmd
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL