envoyproxy/envoy
Fun facts
Light trivia, easter eggs, and pieces of Envoy folklore that didn't fit anywhere else. Use by the numbers for serious metrics and lore for the timeline.
The 2016 import
The very first commit to this repo, a714b9c2 on 2016-08-08, has the message "Initial commit" and contains nothing but a license file and a README. The actual code arrived two days later as commit "Initial import (#2)" — already in the form of a working L4/L7 proxy with the cluster manager, HTTP/2 codec, and stats system in place. Envoy did not start as a hobby project; it was open-sourced as a dump of years of internal Lyft work.
The biggest single file
The largest non-generated source file in the repo is source/extensions/dynamic_modules/abi_impl.cc at 3,400 lines. It's the implementation of the C ABI that lets Rust/Go/C extensions call back into Envoy. The runner-up — source/common/http/conn_manager_impl.cc at 2,624 lines — is the entire HTTP connection manager, which handles every L7 request the proxy serves.
Top 5 by raw line count:
The corresponding header files are even bigger in some cases — source/common/upstream/upstream_impl.h is 63k of declarations.
The TODO pile
There are about 1,072 TODO/FIXME/HACK comments across source/, almost all of them attributed to a specific GitHub username per the style guide ("Use your GitHub name in TODO comments, e.g. TODO(foobar): blah"). The ratio of one TODO every ~57 lines of core code is unusually high but is largely a signal of healthy attribution culture rather than rot — most of them are well-scoped local notes.
Dependabot owns 10% of the commit log
A surprising fraction of the commit history is automation: roughly 2,242 of 27,205 commits (about 8.2%) are authored by dependabot[bot], and an additional ~400+ have [bot] co-authorships. Envoy pins about 150 third-party Bazel-fetched libraries, and Dependabot patiently bumps them.
"Initial import (#2)" set the tone
The second-ever commit was a PR. The repo never had an "open the doors and tip everything in" phase — every change since the founding has gone through GitHub PR review, with the exception of repository housekeeping. That is partly why even very old code in source/common/ reads cleanly today.
"Mexico City" and other code names
Envoy's release tags have always been versioned as plain v1.X.Y — there is no clever naming theme. The release branches in origin/ follow release/v1.34, release/v1.35, etc. The latest stable tag at the time this wiki was generated is v1.38.0; the development version on main is 1.39.0-dev (see VERSION.txt).
The repokitteh
repokitteh.star at the repo root is a Starlark script that runs in repokitteh — a Lyft-built GitHub bot that drives most of the auto-labelling, retest, and assignment behaviour you see on PRs. It predates much of the modern GitHub Actions ecosystem and is one of the older "tooling" pieces in the project.
The "envoy-static" name
The production binary is called envoy-static because it is statically linked against everything except libc. The legacy of that naming choice: even on platforms where the binary cannot truly be statically linked (macOS, Windows), the target name remains envoy-static. Operators reading shell scripts in the wild often run envoy-static, but every Envoy is "static" — there is no envoy-shared.
Envoy Mobile speaks Kotlin
mobile/ is the only place in the repo with Kotlin and Swift source files. It also has its own .kotlinlint.yml, .swiftlint.yml, and .drstring.toml. The mobile sub-tree is effectively a second project that happens to share bazel/ and tools/ with the proxy.
C++ in 2016 vs 2026
Envoy started on C++14. The current style guide pins the project to C++20 (STYLE.md). That's two language standard upgrades over the project's lifetime, each one done piecemeal as the toolchain matrix in CI allowed it.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.