tallarium/reverse_proxy_plug
65.0
Adequate · 3 October 2026
801
lines of production code
Elixir
primary language
2
measurements over time
What this system is
ReverseProxyPlug is an Elixir library that provides a composable Plug for transparently proxying HTTP requests to upstream servers. It supports multiple HTTP client adapters, including Req, Finch, HTTPoison, and Tesla, allowing users to choose the backend that best fits their application's needs. The library offers flexible configuration options, such as dynamic upstream routing, custom HTTP methods, and configurable response modes (streaming or buffering). It also includes robust error handling, header normalization, and proper cookie management to ensure reliable proxying behavior.
Features
Initial release of ReverseProxyPlug with configurable HTTP client adapters
Introduces ReverseProxyPlug, a composable Plug for transparently proxying requests to another URL with full programmatic control over outgoing requests. The library supports multiple HTTP client adapters (HTTPoison, Tesla, Finch, Req) and offers flexible configuration options including dynamic upstream routing via 1-arity functions, custom HTTP methods, host header preservation, configurable response modes (stream vs. buffer), and error callbacks for handling network issues.
(repo-wide) · high confidence
Introduce configurable HTTP client adapters with streaming support
Users can now select from multiple HTTP client implementations (Finch, HTTPoison, Req, and Tesla) via a new adapter framework, allowing them to choose the backend that best fits their application's dependencies and performance needs. This change introduces native support for asynchronous response streaming in Req (0.5+), Tesla (1.9+), and HTTPoison, enabling efficient handling of large responses without buffering the entire body in memory. The Req adapter also includes specific fixes for header normalization and Set-Cookie handling to ensure compatibility and correctness across different Req versions.
_lib/reverse\_proxy\_plug/http\client · high confidence
Introduces configurable HTTP client interface for reverse proxying
The library now defines a dedicated \ReverseProxyPlug.HTTPClient\ behaviour, allowing users to implement custom HTTP clients for reverse proxy requests and optional streamed responses instead of relying on a hardcoded implementation.
_lib/reverse\_proxy\plug · high confidence
Behavioural changes
Migrated configuration system to Config v2
The application configuration has been updated to use the modern Config v2 syntax, replacing the deprecated Mix.Config module. This change aligns the project with current Elixir standards for configuration management, ensuring compatibility with newer versions of the language and its tooling.
config · high confidence
ReverseProxyPlug rewritten with configurable HTTP clients and streaming support
The ReverseProxyPlug module has been significantly refactored to support configurable HTTP clients (via the new HTTPClient alias) and flexible response handling. Users can now choose between buffered and streamed response modes, with optional status callbacks for streaming. The plug now supports dynamic upstream routing via 0- or 1-arity functions, allows custom HTTP methods, and normalizes headers by default. Error handling has been improved with support for both 1-arity and 2-arity error callbacks (including mfa tuples), and timeouts now correctly return a 504 Gateway Timeout status. The module also ensures proper cookie recycling and removes hop-by-hop headers from requests and responses.
lib · high confidence
Test coverage
Added test coverage for HTTP client adapters; Expanded test coverage for reverse proxy behavior and streaming; Migrate test mocking to Hammox and introduce test reuse macros.
Dependencies
Reverse Proxy Plug v3.0.4: Elixir 1.13 requirement and dependency updates
This release updates the project to require Elixir 1.13 and bumps the version to 3.0.4. The dependency manifest now includes optional support for Req (0.3–0.5), Finch (0.18), HTTPoison (1.4–3.0), and Tesla (1.4), alongside dev/test tools like Credo, ExCoveralls, Hammox, and Dialyxir. The lockfile reflects these additions and updates, including specific versions for core dependencies like Plug (1.16.0) and Cowboy (2.12.0).
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 66 → 65 (-0.8)
- Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.
Lenses
- Code Health 100 → 100 (+0.0)
- Architecture 69 → 69 (+0.0)
- Maturity 57 → 57 (+0.8)
- Readiness 73 → 75 (+2.0)
- Security 80 → 68 (-11.9)
Resolved (2)
- Documentation: no architecture or design documentation (README.md)
- Documentation: no usage examples (README.md)
New (2)
- End-of-life runtime: Elixir 1.13
- End-of-life runtime: Erlang/OTP 24
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
tallarium/reverse_proxy_plug was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 3 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit fbf373155bf9299676338a344e9369a3f35bc8f3 — the exact code this score is about.
- Scored under rubric-2026.10.1 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-24c657e50118.