Production-grade Rust CLI that replays HTTP traffic from NDJSON logs — with PII sanitization, concurrent dispatch, S3 streaming, and rich latency statistics.
View on GitHubReads NDJSON line-by-line from a local file or S3 object. Never buffers the full dataset — constant memory regardless of file size.
Strips sensitive headers (Authorization,
Cookie), redacts query params, and recursively redacts
JSON body fields before any network call.
Semaphore-bounded concurrency (default 50). Tokio tasks are spawned only up to the configured limit — no unbounded task spawning.
stats.json file produced by
--output-stats to visualise your run, or click to load a
demo.
Drop stats.json here, or click to browse
— or — load demo data
# Local replay with filters and rate limit traffic-replayer \ --base-url http://localhost:8080 \ --input-file ./traffic.ndjson \ --method GET --method POST \ --path-prefix /api/v1 --path-prefix /health \ --status 200 \ --concurrency 200 \ --rate 1000 \ --output-stats stats.json # S3 source with region traffic-replayer \ --base-url http://staging.internal \ --s3-bucket my-bucket \ --s3-key logs/replay.ndjson \ --aws-region us-east-1 # Dry-run validation without network traffic traffic-replayer \ --base-url http://localhost:8080 \ --input-file ./traffic.ndjson \ --dry-run --verbose # Exempt 'session_id' from PII sanitization traffic-replayer \ --base-url http://localhost:8080 \ --input-file ./traffic.ndjson \ --sanitize-passthrough-keys session_id,key