Envoy vs River
A side-by-side comparison of two self-hosted reverse proxy & gateways options — licensing, setup difficulty, resource needs, and what each one replaces.
| Feature | Envoy | River |
|---|---|---|
| Deploy effort | Under-an-hour setup | Read-the-docs project |
| Health score | 98 · Excellent | 17 · At risk |
| Category | Reverse Proxy & Gateways | Reverse Proxy & Gateways |
| License | Apache-2.0 | Apache-2.0 |
| Language | C++ | Rust |
| Setup difficulty | Hard | Medium |
| Min. RAM | 512 MB | 64 MB |
| Deployment | docker, kubernetes, binary | binary, source |
| GitHub stars | ★ 28,983 | ★ 2,353 |
| First released | 2016 | 2024 |
| Replaces | Nginx, HAProxy | nginx, HAProxy |
What are Envoy and River?
Envoy
Envoy is a high-performance, open-source edge and service proxy designed for cloud-native applications and service meshes. It offers advanced load balancing, observability, and dynamic configuration.
- Service mesh data plane
- Dynamic xDS configuration
- Rich observability
- Advanced load balancing
River
River is a reverse-proxy application built on Cloudflare's Pingora engine, providing a configurable binary for HTTP proxying and load balancing. It is self-hosted and configured through files.
- Pingora-based
- Load balancing
- File-driven config
- Memory-safe Rust
Envoy vs River: key differences
Envoy is written in C++, while River is built with Rust. River is the lighter option, starting around 64 MB of RAM against 512 MB for Envoy. Envoy is the more established project (first released 2016), while River arrived in 2024. Envoy has the considerably larger community, at 28,983 GitHub stars versus 2,353. Envoy lists first-class Docker deployment; River does not.
Why pick each one
Choose Envoy if…
- Advanced load balancing
- Dynamic configuration API
- Deep observability features
Watch out for
- Steep learning curve
- Verbose YAML configuration
- Heavy for simple setups
Choose River if…
- Released under the Apache-2.0 license
- Active community (2.4k GitHub stars)
- Written in Rust
- Tiny footprint — runs in 64 MB RAM
Frequently asked questions
Is Envoy or River better?
Neither is universally better. Envoy has the larger community, while River is simpler to set up (medium difficulty). Choose based on the comparison table above and your own setup.
Are Envoy and River free and open-source?
Yes. Envoy is licensed under Apache-2.0 and River under Apache-2.0. Both can be self-hosted at no software cost.
Can I run Envoy and River with Docker?
Envoy: yes. River: check the project docs for container support.
Which is lighter on resources, Envoy or River?
River has the smaller minimum footprint at 64 MB of RAM, compared to about 512 MB for Envoy. Real-world usage depends on library size, user count, and enabled features.