Open-Source Wikis

/

Envoy

/

How to contribute

/

Tooling

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.

Tooling – Envoy wiki | Factory