mrkeyoor.com_
Tue 01 Sept 17:41 UTC
Self-Hostedevaluationupdated 25 Aug 2026

envoy review

Envoy is an open-source network proxy that sits at the edge of a system or between services. It handles traffic routing, load balancing, encryption, policy, and observability so application teams do not have to implement those concerns in every service.

+20stars / 7d
Verdict

Our Envoy run installed 49 Go packages and built the detected target, but all 3 attempted tests failed, so adopters should validate the exact proxy and extensions they will ship. Envoy is a strong fit when a platform team needs programmable traffic policy across many services and can operate configuration as carefully as application code. For a few static routes, HAProxy, Traefik, or Caddy will usually cost less attention.

We ran it

Lab card: what happened when we ran envoyScreenshot of envoy (www.envoyproxy.io)
Install✓ · 18s49 packages
Build✓ · 6s
Tests✗ · 18s0 passed · 3 failed of 3 (go test)
Repo14590 files~1,929,489 lines of source · 157.7 MB · 59 CI workflows · tests dir

Answers from our run

Does envoy build from source?

Dependencies installed in 18 seconds (49 packages), and the build succeeded in 6 seconds. We cloned commit c42887c into a clean Debian container with 3 CPUs and no project-specific setup.

Do envoy's tests pass?

Not all of them: 0 of 3 passed and 3 failed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use envoy?

Operators seeking a small static reverse-proxy configuration: Envoy's xDS control plane, filter chains, clusters, listeners, and runtime guards create a much larger operating surface.

What are the alternatives to envoy?

HAProxy, Traefik, Caddy. Our Envoy run installed 49 Go packages and built the detected target, but all 3 attempted tests failed, so adopters should validate the exact proxy and extensions they will ship.

Setup2/5Packaged use is direct; source and control-plane work are demanding
Docs5/5Deep reference, FAQ, examples, security, and release guidance
Community5/5Same-day pushes and active issue and pull-request traffic
Maturity5/5Established CNCF proxy with formal releases and security process

Discussed on

  1. hnEnvoy Proxy at Reddit136 points
  2. hnEnvoy: Modern Proxy server with HTTP 1.1 and 2, GRPC supported reverse proxy112 points
  3. hnEnvoy Proxy Performance on Kubernetes40 points
  4. hnShow HN: Envoy playground in the browser25 points
  5. hnShow HN: archgw: open-source, intelligent proxy for AI agents, built on Envoy20 points

Who it’s for

Platform teams operating service meshes, API gateways, or shared traffic infrastructure.
Organizations that need one programmable proxy for HTTP, gRPC, TCP, DNS, and service discovery.
Teams prepared to manage configuration, rollout safety, metrics, and security updates as production infrastructure.
Developers extending the proxy through filters, Wasm, Golang, or the newer dynamic-module interfaces.

Who it’s NOT for

Operators seeking a small static reverse-proxy configuration: Envoy's xDS control plane, filter chains, clusters, listeners, and runtime guards create a much larger operating surface.
Teams that cannot patch network infrastructure promptly: release v1.39.0 lists fixes across HTTP/2, HTTP/3, OAuth2, DNS, redirects, StatsD, Zstd, and other security-sensitive paths.
Production users on ppc64le who require the project's normal security guarantees: the README says that architecture is best effort and excluded from Envoy's security policy.
Contributors unwilling to use the prescribed Bazel toolchain: v1.39.0 moved to Bazel 8 and requires WORKSPACE-mode flags.
Users relying on Cache V2 or c-ares DNS without targeted regression tests: current issues report missing Date headers being treated as stale and DNS refresh stalling after query-ID reuse.

Setup reality

In our sandbox at commit c42887c, the Go dependency install succeeded in 18 seconds with 49 packages, and the detected build completed in 6 seconds. Tests then failed after 18 seconds: all 3 attempted Go tests failed, with github.com/envoyproxy/envoy/api/test/build reported as a setup failure. The supplied log tail does not show the underlying setup error.

Running Envoy needs a configuration that defines listeners, routes, clusters, filters, certificates, and observability outputs. Dynamic deployments also need an xDS control plane and a safe rollout process. Building the main proxy from source uses C++ and Bazel; release v1.39.0 moved that path to Bazel 8 with explicit WORKSPACE-mode settings.

Our harness identified and exercised the repository's Go ecosystem, including contributed filters. It did not establish that the main C++ Envoy binary builds in 6 seconds. The checkout contained 14,590 files, about 1,929,489 source lines, and 59 workflow files, so contributors should use Envoy's documented build and test path for the component they change.

Envoy belongs in shared traffic infrastructure

Envoy is a programmable proxy for traffic entering a system and traffic moving between services. Its configuration describes listeners, routes, upstream clusters, load balancing, filters, authentication, telemetry, and transport behavior. That breadth lets a platform team give many applications the same network policy without adding matching libraries to every codebase. It also means Envoy is infrastructure, with failure modes that can affect every service behind it.

The measured checkout contained 14,590 files, about 1,929,489 source lines, and 157.7 MB at commit c42887c. This is not a small reverse proxy whose complete configuration fits comfortably in one screen. It is a C++ data plane with APIs, contributed Golang filters, protocol implementations, extension systems, build tooling, and security machinery. The repository had 59 GitHub Actions workflow files, another sign that many separate paths need verification.

Dynamic control is useful when static files stop scaling

Envoy can take changing configuration from an xDS control plane rather than requiring each proxy to be managed by hand. That model suits service meshes and gateway platforms where endpoints, certificates, policies, and routes change often. The proxy remains the data plane, while another system decides what it should do. Teams gain centralized behavior and can use health checks, retries, observability, and policy consistently across services.

Version 1.39.0, published on 2026-07-14, shows how wide that control surface has become. Its release notes cover routing, DNS, load balancing, TLS, OAuth2, OpenTelemetry, rate limiting, Redis, QUIC, Wasm, Golang filters, and dynamic modules. It also adds work around MCP and other AI protocols. Each feature can solve a concrete platform problem, but each enabled filter or protocol needs a named owner, a test, and a rollback path.

What happened when we ran it

Our Go-path install succeeded in 18 seconds inside a fresh Debian container with 3 CPUs and 8 GB of RAM. It installed 49 packages. The detected build then succeeded in 6 seconds. Those results cover what the harness found in Envoy's Go ecosystem, including contributed extension code; they are not a timing claim for compiling the main C++ proxy through Bazel.

Tests failed after 18 seconds. The run attempted 3 Go tests, and all 3 failed. The final summary identifies github.com/envoyproxy/envoy/api/test/build as a setup failure, while several contributed packages report that they have no test files. The provided log tail ends at FAIL and does not include the setup exception, so blaming a missing package, network restriction, or code defect would be guesswork.

That boundary matters for evaluation. A 6-second detected build does not prove that a production Envoy binary, chosen extensions, bootstrap configuration, and control-plane interaction work together. Before rollout, build or obtain the exact distribution you intend to run, validate its configuration, send representative HTTP and gRPC traffic through it, and test rejected configuration. Our failed 3-test run says the generic Go test command was not a clean proof point on this checkout.

Release 1.39.0 demands careful upgrades

The latest release moves source builds to Bazel 8 and documents required flags because the project still uses WORKSPACE mode. It also changes behavior in TLS validation, tracing sampling, header matching, DNS clusters, and several routing paths. Some changes have runtime guards or opt-in migration steps. Operators should read the version-specific release notes and move through a staging fleet before production, especially when configuration depends on a default that changed.

The security section of v1.39.0 names fixes across more than 10 affected areas, including HTTP/2 cookie accounting, HTTP/3 QPACK handling, external authorization, OAuth2, DNS validation, internal redirects, TCP StatsD, and Zstd decompression. The OAuth2 cookie change has an explicit migration sequence rather than an automatic flip. A proxy at a trust boundary needs that release discipline. Pinning an old image because upgrades feel risky simply trades visible migration work for known exposure.

Current issues show why component-level tests matter

On 2026-08-25, one open bug reported that Cache V2 treats responses without a Date header as stale. Another current report says c-ares 1.34.8 query-ID reuse can permanently stall automatic DNS refresh for a cluster. These are narrow reports, not reasons to reject Envoy outright. They are good examples of proxy behavior that can look like an application or upstream outage unless dashboards and tests name the component involved.

GitHub reported 1,878 open issues and pull requests, while an issue-only search returned 1,599 open items. The repository was pushed on 2026-08-25, and those current reports were receiving updates. This is active maintenance with a large queue, not a quiet finished product. Buyers should search that queue for every filter, protocol, and platform they plan to enable, then track the relevant labels after deployment.

ppc64le does not get the normal security promise

Envoy documents third-party security audits from 2018 and 2021, ongoing fuzzing, a private GitHub advisory route, and a separate security release process. That is appropriate for a network proxy. The README also draws a sharp architecture boundary: ppc64le builds are best effort and are not covered by the Envoy security policy. An organization standardizing on that architecture should treat the exclusion as a purchasing constraint.

For supported platforms, the project offers serious engineering and an equally serious operating obligation. Our checkout's 59 workflows and 1.93 million source lines explain why a blanket health check says little about one deployment. Envoy pays off when a platform team can define configuration ownership, canary changes, watch protocol-level metrics, subscribe to security notices, and reproduce failures against its chosen build. Without that discipline, a smaller proxy is easier to reason about.

Alternatives

ProjectWhat it isPick it when
HAProxyA mature load balancer and proxy with a direct configuration model.pick this instead when HTTP and TCP load balancing are the main jobs and you do not need an xDS-driven service-mesh data plane.
Traefik gh↗A reverse proxy and ingress controller built around automatic service discovery.pick this instead when Kubernetes or container ingress needs simpler provider-driven configuration.
Caddy gh↗A web server and reverse proxy known for automatic HTTPS and concise configuration.pick this instead when a small team needs an internet-facing proxy without a separate control plane.

What people are saying

  1. [velocity-scout] envoyproxy/envoy

Sources

  1. Envoy README
  2. Envoy v1.39.0 release
  3. Cache V2 freshness issue
  4. c-ares DNS refresh issue
  5. Envoy security policy

More self-hosted reviews

v2 · OpenShell · wigolo · Mindwtr · club-3090 · reclip · the whole board →