envoyproxy/envoy
Tooling
tools/ holds the auxiliary scripts and binaries that orchestrate the project: code format, dependency management, API tooling, release scripts, and developer convenience commands. Most are Python; a few are Bash.
Format and lint
| Path | Purpose |
|---|---|
tools/code_format/check_format.py |
The repo-wide formatter and linter. Has check and fix modes. Runs clang-format, header ordering, banned-token checks, license-header checks, BUILD-file ordering. |
tools/clang-format/ |
Wrappers and config for clang-format. |
tools/clang-tidy/ |
clang-tidy integration with the build. |
tools/spelling/ |
Curated dictionary of project-specific terms used by the spell-check pre-commit. |
tools/local_fix_format.sh |
Format the files changed since main — the fast wrapper devs actually use. |
tools/path_fix.sh |
Fix #include paths after moving files. |
API and proto tooling
The xDS API is large enough to need its own tooling.
| Path | Purpose |
|---|---|
tools/api/ |
API maintenance helpers (rename fields, version bumps). |
tools/api_proto_plugin/ |
Shared library for protoc plugins that walk the API tree. |
tools/api_proto_breaking_change_detector/ |
Diff old vs new protos to flag wire-format breaking changes. Runs in CI on every API change. |
tools/api_versioning/ |
Bump API versions, manage vNalpha. |
tools/proto_format/ |
Canonical .proto formatter. |
tools/protoprint/ |
Proto descriptor → text. Used by the format tool. |
tools/protojsonschema/ |
Generate JSON schemas from protos for editor integration. |
tools/protoshared/ |
Shared helpers for the proto plugins. |
tools/type_whisperer/ |
Track which types are used where in the API tree for impact analysis. |
Dependency management
| Path | Purpose |
|---|---|
tools/dependency/ |
Validate, list, and update Bazel-fetched dependencies. Backs the bazel/repositories.bzl definitions. |
tools/check_repositories.sh |
CI gate for repo-pin updates. |
tools/update_crates.sh |
Refresh the Cargo.lock for Rust dependencies of the dynamic-modules ABI. |
tools/extensions/ |
Maintain extensions_metadata.yaml in lockstep with extensions_build_config.bzl. |
tools/deprecate_features/ |
Walk through deprecation lifecycle: warn → fatal → remove. |
tools/deprecate_guards/ |
Helpers for runtime deprecation guards. |
Release tooling
| Path | Purpose |
|---|---|
tools/distribution/ |
Distribution package descriptors for the Apt/Dnf release. |
tools/tarball/ |
Source tarball generation for releases. |
tools/sha/ |
SHA pin verifier. |
tools/github/ |
GitHub-aware helpers (release-cut PR templates, write_current_source_version.py for tarball builds). |
CI helpers
| Path | Purpose |
|---|---|
tools/ci/ |
CI helper scripts referenced by .azure-pipelines/. |
tools/coverage/ |
LLVM coverage collection and reporting. |
tools/docker_wrapper.sh |
Run a command inside the official Envoy build image. |
tools/bazel-test-docker.sh |
Run a Bazel test inside the build image. |
Developer environment
| Path | Purpose |
|---|---|
tools/vscode/ |
VS Code launch + IntelliSense configuration. |
tools/dev/ |
Random developer convenience commands. |
tools/debugging/ |
Debugging helpers. |
tools/find_related_envoy_files.py |
Given source/foo.cc, find the matching header, test, and mock. |
tools/gen_compilation_database.py |
Produce compile_commands.json for clangd. |
tools/stack_decode.py |
Symbolicate Envoy crash backtraces. |
tools/build_profile.py |
Visualise where Bazel build time is going. |
tools/envoy_collect/ |
Collect Envoy logs/admin output for diagnostic bundles. |
tools/h3_request/ |
Minimal HTTP/3 client used to manually exercise QUIC paths. |
tools/socket_passing/ |
Helpers for hot restart socket-passing tests. |
Bootstrap conversion
tools/bootstrap2pb/ and tools/bootstrap2pb.cc — convert a YAML bootstrap into the binary protobuf representation, useful for embedded environments where YAML parsing isn't desirable.
Pre-commit and Git hooks
The project ships pre-commit hooks under support/; see support/README.md. The hooks automate format checking, DCO sign-off, license-header checks, and the spelling pass before git push.
Repokitteh
Not strictly under tools/, but worth noting: repokitteh.star at the repo root is a Starlark configuration for the repokitteh GitHub bot, which handles slash-command-driven CI re-runs, automatic reviewer assignment from reviewers.yaml, and merge-on-green workflows. If a PR comment is structured like /retest or /lgtm, repokitteh is what acts on it.
See also
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.