sendit
A flexible traffic generator for HTTP, browser, DNS, WebSocket, gRPC, and SFTP targets. Polite by design — every request is paced, rate-limited, and resource-gated before dispatch.
Open Source MIT Licensed.
Key features
sendit runs across HTTP, browser, DNS, WebSocket, gRPC, and SFTP targets with configurable pacing and built-in courtesy limits so it never hammers targets or the local machine.
Six driver types
Send real traffic over HTTP/HTTPS, headless browser (chromedp), DNS (miekg/dns), WebSocket, gRPC, and SFTP — all from one config file.
Four pacing modes
human (random delay), rate_limited (token bucket), scheduled (cron windows), and burst (time-bounded internal load) — traffic that looks exactly like you want it to.
Polite by design
Per-domain token buckets, decorrelated jitter backoff on errors, and CPU/RAM resource gates ensure sendit never overwhelms targets or your machine.
Graceful shutdown
Waits for all in-flight requests to complete on SIGINT/SIGTERM before exiting. No dropped results.
Hot reload
Send SIGHUP (or run sendit reload) to atomically swap targets, weights, and rate limits without restarting the process.
Prometheus metrics
Optional Prometheus scrape endpoint exposes request counts, error rates, latency histograms, and bytes read — all labelled by driver type.
Probe & Pinch
sendit probe tests HTTP/DNS endpoints in a loop like ping — no config needed. sendit pinch checks TCP/UDP port connectivity on any host:port. Both print per-check latency and a summary on Ctrl-C.