Analysis updated 2026-06-24
Inject 500 errors or 5 second delays on specific URL paths to test how your service handles a flaky upstream
Wire Saboteur into CI to fail a build when a service does not retry or time out correctly
Demo failure modes to a team by toggling fault rules live from the web UI
| vadimsemenykv/saboteur | imshire/xu-shop | awuqing/backupx | |
|---|---|---|---|
| Stars | 157 | 140 | 96 |
| Language | Go | Go | Go |
| Setup difficulty | easy | hard | easy |
| Complexity | 3/5 | 4/5 | 3/5 |
| Audience | developer | developer | ops devops |
Figures from each repo's GitHub metadata at analysis time.
Easiest path is the provided Docker image, building from source needs the Go toolchain.
Saboteur is a small proxy program that sits between your application and another service it talks to over HTTP. Its job is to break things on purpose. You point your traffic at Saboteur on port 8080, it forwards the requests to the real service, and along the way it can inject faults such as delays, error responses, dropped connections, corrupted bodies, or rate-limited streaming. A separate web UI and API on port 8081 lets you create and toggle the rules that decide when faults fire. The README describes it as an HTTP-layer fault injection proxy and calls out the contrast with Toxiproxy, which works at the TCP level. Because Saboteur understands HTTP, the matching rules can look at things like the URL path, the request method, specific headers, and query parameters. Each rule has a priority, an optional percentage for how often it should fire on matching traffic, and a fault definition that says what kind of break to apply. It is meant for testing whether your service handles bad conditions gracefully, either while developing locally or as part of a continuous integration pipeline. The README shows Docker and Docker Compose commands to run it, a YAML config example with a mock upstream, and a list of environment variables for things like the upstream URL, ports, an optional API key, log level, and traffic log size. For running and observing it, there is a control API for listing and editing rules, a server-sent-events stream of live traffic, Prometheus metrics, and a SIGHUP signal that reloads the config file without restarting. Building from source uses the Go toolchain, and a Dockerfile and multi-arch buildx command are provided.
HTTP layer fault injection proxy in Go that sits between your app and an upstream service to inject delays, errors, dropped connections, and corrupted bodies based on rules.
Mainly Go. The stack also includes Go, Docker, HTTP.
Setup difficulty is rated easy, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.