A hackable HTTP proxy for resiliency testing, simulating network failures and unexpected conditions in Node.js.
toxy is a hackable HTTP proxy built for Node.js that enables developers to simulate server failures, network latency, bandwidth restrictions, and other adverse conditions. It helps test the resiliency and fault tolerance of systems, particularly in microservices and disruption-tolerant networks, by intercepting and altering HTTP traffic between clients and servers.
Developers and QA engineers working on distributed systems, microservices, or APIs who need to validate fault tolerance, conduct chaos engineering experiments, or perform resiliency testing under simulated network failures.
toxy offers a programmable, middleware-friendly approach to failure injection with a rich set of built-in poisons and rules, allowing precise control over HTTP traffic manipulation. Its dual programmatic and HTTP API support makes it versatile for both automated testing and manual experimentation.
Hackable HTTP proxy for resiliency testing and simulated network conditions
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Includes latency injection, bandwidth limitation, error responses, and rate limiting with configurable parameters, as detailed in the poisons section of the README.
Allows conditional poisoning based on HTTP methods, headers, body content, and probability, enabling precise test scenarios for different traffic patterns.
Offers both a fluent Node.js programmatic API and a separate HTTP admin API, allowing for dynamic configuration and control without code changes.
Supports custom poisons and rules, and is pluggable as middleware in Connect/Express, making it hackable for advanced or niche testing needs.
The README explicitly states it is not actively maintained and may not work with latest Node.js runtimes, posing significant risks for compatibility and security updates.
Requires configuring hierarchical scopes, poisons, and rules, which can be overwhelming for quick tests compared to simpler, one-command tools.
Primarily operates at the application layer (L7), so it cannot simulate lower-level network conditions like raw TCP disruptions without HTTP context.