Toxiproxy is a TCP proxy that simulates network and system conditions for chaos and resiliency testing.
The tool addresses the need to test application resilience by dynamically injecting network faults during test execution. Rather than relying on static network configuration or Linux-level tools that require root access, Toxiproxy runs as a standalone proxy that applications connect through. It exposes an HTTP API allowing tests to manipulate connection health on demand, enabling deterministic tampering with specific connections alongside randomized chaos scenarios. This approach lets developers prove their applications handle failures gracefully without single points of failure.
Toxiproxy suits teams building distributed systems who want to verify resilience in development, CI, and test environments without infrastructure changes. The tool works cross-platform and requires no special privileges, making it practical for standard testing setups. It provides toxics—fault injection mechanisms—including latency injection, connection drops, bandwidth throttling, packet loss, timeouts, and connection resets. The framework supports multiple client libraries across different languages, though the core proxy itself is written in Go. The README positions it against existing chaotic proxies by emphasizing the dynamic HTTP API designed specifically for integration and unit testing, contrasting with static tools or Linux utilities that demand root access.
The project maintains active test coverage with continuous integration workflows. Development follows a structured release process with documented upgrade paths for major versions. The codebase includes comprehensive documentation of the HTTP API surface and toxic configuration options, suggesting ongoing attention to usability and backwards compatibility.