Toxiproxy
github.com
What it is
Toxiproxy is a free, open-source TCP proxy for testing how software responds to network and system problems in development, testing, and CI. Applications route test connections through it, then users change connection behavior through an HTTP API or command-line interface. Built-in toxics can add latency or jitter, restrict bandwidth, delay socket closure, time out or reset connections, slice TCP data, limit transmitted data, or drop packets. Settings support deterministic connection changes as well as randomized chaos. The API manages proxies and toxics, resets proxies, and returns version information and Prometheus-compatible metrics. It listens on port 8474; configuring a proxy with listen port 0 assigns an ephemeral port. Client libraries are listed for Ruby, Go, Python, .NET, PHP, Node.js, Java, Haskell, Rust, and Elixir. Installation options include Linux packages and binaries, Homebrew and MacPorts, a Windows download, a container image, and building from source with Go. The project identifies its license as MIT. Its HTTP API is unauthenticated by default, though bearer-token authentication is supported.
Spec sheet
- Purpose
- Toxiproxy is a TCP proxy for simulating network and system conditions in chaos and resiliency testing.Read 7 Oct 2026 · github.com
- Intended users
- The project is aimed at developers and teams testing service failure handling in development, unit and integration tests, and CI.Read 7 Oct 2026 · github.com
- Deployment
- The project provides Linux packages and binaries, macOS installation through Homebrew or MacPorts, a Windows download, a GitHub Container Registry image, and a source build option.Read 7 Oct 2026 · github.com
- API
- The HTTP API supports creating, updating, listing, and deleting proxies and toxics, resetting proxies, and retrieving version and Prometheus-compatible metrics.Read 7 Oct 2026 · github.com
- Security
- The HTTP API is unauthenticated by default and can create proxies to arbitrary upstreams; the project advises against exposing it to untrusted networks and supports bearer token authentication.Read 7 Oct 2026 · github.com
- License
- The GitHub repository identifies the project license as MIT.Read 7 Oct 2026 · github.com
- Client integrations
- The README lists client libraries for Ruby, Go, Python, .NET, PHP, Node.js, Java, Haskell, Rust, and Elixir.Read 7 Oct 2026 · github.com
- Compatibility limit
- Version 2.x has API changes that make it incompatible with version 1.x, so the client library must support the server version in use.Read 7 Oct 2026 · github.com
- Connection control
- Applications route test connections through Toxiproxy, whose connection behavior can then be manipulated over HTTP.Read 7 Oct 2026 · github.com
- Determinism and chaos
- The README describes deterministic connection tampering as well as randomized chaos and customization.Read 7 Oct 2026 · github.com
- Deterministic and randomized testing
- Toxiproxy supports deterministic connection tampering as well as randomized behavior through toxic settings such as jitter, packet loss, and toxicity probability.Read 7 Oct 2026 · github.com
- How it works
- Applications route test connections through the proxy and manipulate connection health through its HTTP API.Read 7 Oct 2026 · github.com
- Install options
- The README documents Linux packages and binaries, Homebrew and MacPorts for OS X, a Windows download, a GitHub Container Registry image, and building from source with Go.Read 7 Oct 2026 · github.com
- Intended audience
- The README presents Toxiproxy as a way to test that applications do not have single points of failure.Read 7 Oct 2026 · github.com
- Interfaces
- The project provides a TCP proxy, an HTTP API, and a command-line interface for managing proxies and toxics.Read 7 Oct 2026 · github.com
- Language clients
- The README lists client libraries for Ruby, Go, Python, .NET, PHP, Node.js, Java, Haskell, Rust, and Elixir.Read 7 Oct 2026 · github.com
- Metrics
- Toxiproxy exposes Prometheus-compatible metrics through its HTTP API at /metrics.Read 7 Oct 2026 · github.com
- Network conditions
- Built-in toxics can add latency or jitter, limit bandwidth, delay socket closure, time out or reset connections, slice TCP data, limit transmitted data, and drop packets.Read 7 Oct 2026 · github.com
- Open source license
- The repository identifies its license as MIT.Read 7 Oct 2026 · github.com
- Operational note
- The README advises using ports outside the ephemeral port range to avoid random port conflicts.Read 7 Oct 2026 · github.com
- Port behavior
- The HTTP API listens on port 8474, and a proxy configured with listen port 0 is assigned an ephemeral port.Read 7 Oct 2026 · github.com
- Use cases
- The project is designed for testing, CI, and development environments.Read 7 Oct 2026 · github.com
- Version compatibility
- The README says Toxiproxy 2.0 changed the API incompatibly with version 1.x and advises using a client library that supports the server version.Read 7 Oct 2026 · github.com
Plans and prices
Strong points and limits
Strong points
- Free and MIT-licensed.
- Supports deterministic and randomized connection tampering.
- Provides HTTP API, CLI, and client libraries.
- Exposes Prometheus-compatible metrics.
- Runs on Linux, macOS, and Windows.
Limits
- HTTP API is unauthenticated by default.
- Version 2.x is incompatible with version 1.x API.
- Project advises against exposing the API to untrusted networks.
- No Kubernetes support or cloud fault injection.
Who it suits
Toxiproxy is for developers and teams checking how applications handle service failures in development, unit and integration tests, or CI. It is self-hosted and offers network fault injection, but not Kubernetes support or cloud fault injection.
Verdict
Toxiproxy gives teams controls for reproducing network failures in application tests, with several installation routes and language clients. Secure the API appropriately and match the client library to the server version in use.
Where Specifiction places it
- Chaos Engineering Platforms#8 of 258.2