Open-Source Wikis

/

Envoy

/

By the numbers

envoyproxy/envoy

By the numbers

Data collected on 2026-04-30 from main at commit ff9e47a3ad.

Repo-wide size

Area Files Lines
source/ (core C++) 2,966 (.cc + .h) 60,885
test/ (unit, integration, benchmark, fuzz) ~5,500 (.cc + .h) 931,549
api/ (xDS protobufs) 679 .proto 69,136
contrib/ (contrib extensions) ~1,400 (.cc + .h) 96,365
mobile/ (Envoy Mobile) ~600 (.kt + .swift + .cc + .h) 49,917
tools/ (Python tooling) 114 .py (varies)

The number that surprises people most is the size of test/ relative to source/. Envoy ships ~15× more lines of test code than core data-plane code because almost every behaviour has both unit and integration coverage.

Languages on the wire

xychart-beta horizontal
    title "Lines of code by area"
    x-axis ["test/", "contrib/", "api/.proto", "source/", "mobile/"]
    y-axis "Lines" 0 --> 1000000
    bar [931549, 96365, 69136, 60885, 49917]

The breakdown by language across the whole repo:

  • C++ dominates: source/, test/, contrib/, parts of mobile/.
  • Protocol Buffers (api/) define the entire xDS surface and most extension configuration.
  • Python powers the developer tooling in tools/ (code formatting, dependency management, proto plugins).
  • Starlark drives the Bazel build system in bazel/ and the various BUILD files.
  • Kotlin + Swift + Objective-C++ in mobile/ for Android and iOS bindings.

Extension fan-out

Envoy's extensibility shows up as directory counts:

Extension category Count
HTTP filters (source/extensions/filters/http/) 71
Network filters (source/extensions/filters/network/) 28
Listener filters (source/extensions/filters/listener/) 9
Transport sockets (source/extensions/transport_sockets/) 10
Cluster types (source/extensions/clusters/) 15
Load balancing policies (source/extensions/load_balancing_policies/) 12
Access loggers (source/extensions/access_loggers/) 11
Tracers (source/extensions/tracers/) 8
Stat sinks (source/extensions/stat_sinks/) 9
Contrib extensions (contrib/) 32

Adding the wasm runtimes (4), resource monitors (5), formatters (6), watchdog (1), and the assorted matching/scoring/key-value/early-data extensions, Envoy ships well over 200 in-tree extension implementations.

Activity

Envoy is one of the most actively-maintained CNCF projects.

  • Total commits on main: 27,205.
  • Project age: about 9 years 8 months — first commit a714b9c2b0 "Initial commit" on 2016-08-08.
  • Last 90 days of commits: 821 (about 9 commits/day average).

Recent monthly cadence:

Month Commits
2025-05 212
2025-06 214
2025-07 178
2025-08 177
2025-09 202
2025-10 234
2025-11 293
2025-12 301
2026-01 261
2026-02 271
2026-03 256
2026-04 277

The cadence is remarkably steady. There is a small dip mid-year (US summer) and a bump at year end, but Envoy ships ~200–300 commits a month every month.

Bot-attributed commits

A non-trivial slice of the commit log is automation. Counts are lower bounds (inline AI-assisted work without explicit attribution is invisible):

Source Commits
dependabot[bot] (author or message) ~2,242
All [bot] co-author / message hits ~2,669
Total commits 27,205

Roughly 10% of merged commits are dependency updates from dependabot[bot], which makes sense for a project that pins ~150 third-party C++ libraries via Bazel.

Authors

Envoy has a long tail of contributors:

  • Unique committer email addresses: 1,643.
  • Unique committer names: 1,456.

The bulk of commits come from a few hundred maintainers and corporate contributors (Google, Lyft, Tetrate, Aspen Mesh, IBM, Bloomberg, Apple, Microsoft, …); the rest is one-off PRs from the wider community.

Hottest directories

In the last 90 days the most-modified subtrees (by commit count) are roughly:

  • source/extensions/filters/http/ — new and evolving HTTP filters
  • source/common/quic/ and source/extensions/quic/ — ongoing HTTP/3 work
  • source/extensions/filters/http/ext_proc/ — the external-processor filter
  • mobile/ — Envoy Mobile churn
  • bazel/ and tools/dependency/ — dependency bumps

These are the parts of the codebase a contributor is most likely to find conflicts in.

Where to use these numbers

  • The size split (source vs test vs api vs contrib) is the headline reason this wiki has separate sections for systems, features, and API.
  • The extension counts justify treating each extension category as its own page in features rather than enumerating every individual filter.
  • The activity numbers explain why the repo is so strict about formatting, pre-commit checks, and CI gating (development workflow) — without them, 200+ commits/month would be unreviewable.

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

By the numbers – Envoy wiki | Factory