Surge
Lightning-fast, concurrent HTTP load testing tool in Go with CI quality gates
Why This Was Built
Existing load testing tools are either bloated enterprise suites or bare-bones curl loops that lack actionable tail-latency percentiles, automated health verdicts, and easily scriptable CI pipeline assertions.
The Architectural Answer
A single static Go binary providing accurate percentile calculations, ramp-up schedules, think-time modeling, and structured JSON output for strict pipeline thresholds.
Key Features & Architecture
Technical Specifications
- Primary Languages
- Go
- Frameworks & Tooling
- net/http
- Architecture & Execution Model
- Goroutine worker pools, zero-allocation latency buckets, lock-free histogram metrics
- Licensing Model
- AGPL-3.0 (copyleft)
- Release & Lineage
- Active release cycle since 2026 · Maintained by @JadMadi
Frequently Asked Questions
How do I install Surge?
Run `curl -fsSL https://raw.githubusercontent.com/jadmadi/surge/main/install | bash` on Linux and macOS, or `go install github.com/jadmadi/surge@latest` if you have Go installed.
Can I use Surge as a quality gate in CI/CD pipelines?
Yes. Use `-o json` to assert metrics in pipeline scripts (e.g. with `jq`), or pass `--fail-threshold <pct>` to exit with status code 1 when the error rate exceeds your threshold.
How do presets work in Surge?
Presets provide battle-tested traffic models (`baseline`, `realistic`, `capacity`, `spike`). You can invoke them directly (e.g. `surge realistic https://example.com`) and override any specific flag like `-c` or `-d`.
How do I pass custom headers or authorization tokens?
Pass custom headers with `-H 'Authorization: Bearer <token>'` (repeatable), or read long tokens directly from disk using `-H @/path/to/token.txt`.