{"id":13436266,"url":"https://github.com/linkerd/linkerd2-proxy","last_synced_at":"2026-04-08T07:02:17.548Z","repository":{"id":37251366,"uuid":"140121383","full_name":"linkerd/linkerd2-proxy","owner":"linkerd","description":"A purpose-built proxy for the Linkerd service mesh. Written in Rust.","archived":false,"fork":false,"pushed_at":"2026-04-07T15:15:55.000Z","size":17807,"stargazers_count":2116,"open_issues_count":16,"forks_count":291,"subscribers_count":35,"default_branch":"main","last_synced_at":"2026-04-07T15:28:17.553Z","etag":null,"topics":["cncf","linkerd","rust","service-mesh"],"latest_commit_sha":null,"homepage":"https://linkerd.io","language":"Rust","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/linkerd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":"GOVERNANCE.md","roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":"MAINTAINERS.md","copyright":null,"agents":null,"dco":"DCO","cla":null}},"created_at":"2018-07-07T22:40:57.000Z","updated_at":"2026-04-07T14:03:28.000Z","dependencies_parsed_at":"2023-10-04T07:34:29.111Z","dependency_job_id":"d71e3071-efcc-48aa-93cf-207c7251a01d","html_url":"https://github.com/linkerd/linkerd2-proxy","commit_stats":{"total_commits":3051,"total_committers":63,"mean_commits":48.42857142857143,"dds":0.576204523107178,"last_synced_commit":"d95e5abaecc530c889780147b7f484ae12ebcec8"},"previous_names":[],"tags_count":413,"template":false,"template_full_name":null,"purl":"pkg:github/linkerd/linkerd2-proxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linkerd%2Flinkerd2-proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linkerd%2Flinkerd2-proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linkerd%2Flinkerd2-proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linkerd%2Flinkerd2-proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/linkerd","download_url":"https://codeload.github.com/linkerd/linkerd2-proxy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linkerd%2Flinkerd2-proxy/sbom","scorecard":{"id":591003,"data":{"date":"2025-08-11","repo":{"name":"github.com/linkerd/linkerd2-proxy","commit":"627a5aad2117a1481d7c5f22d49d336daa12cf05"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":6.3,"checks":[{"name":"Maintained","score":10,"reason":"30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":10,"reason":"all changesets reviewed","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/pr.yml:90","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/pr.yml:155","Warn: jobLevel 'actions' permission set to 'write': .github/workflows/release-weekly.yml:68","Warn: jobLevel 'actions' permission set to 'write': .github/workflows/release.yml:193","Warn: jobLevel 'contents' permission set to 'write': .github/workflows/release.yml:194","Info: topLevel 'contents' permission set to 'read': .github/workflows/beta.yml:21","Info: topLevel 'contents' permission set to 'read': .github/workflows/coverage.yml:9","Info: topLevel 'contents' permission set to 'read': .github/workflows/fuzzers.yml:24","Info: topLevel 'contents' permission set to 'read': .github/workflows/markdown.yml:4","Info: topLevel 'contents' permission set to 'read': .github/workflows/nightly.yml:21","Warn: no topLevel permission defined: .github/workflows/pr.yml:1","Warn: no topLevel permission defined: .github/workflows/release-weekly.yml:1","Warn: no topLevel permission defined: .github/workflows/release.yml:1","Info: topLevel 'contents' permission set to 'read': .github/workflows/shellcheck.yml:4","Info: topLevel 'contents' permission set to 'read': .github/workflows/toolchain.yml:12"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":10,"reason":"project is fuzzed","details":["Info: OSSFuzz integration found","Info: RustCargoFuzzer integration found: linkerd/addr/fuzz/fuzz_targets/fuzz_target_1.rs:4","Info: RustCargoFuzzer integration found: linkerd/app/inbound/fuzz/fuzz_targets/fuzz_target_1.rs:4","Info: RustCargoFuzzer integration found: linkerd/app/inbound/src/http.rs:22","Info: RustCargoFuzzer integration found: linkerd/dns/fuzz/fuzz_targets/fuzz_target_1.rs:4","Info: RustCargoFuzzer integration found: linkerd/proxy/http/fuzz/fuzz_targets/fuzz_target_1.rs:4","Info: RustCargoFuzzer integration found: linkerd/tls/fuzz/fuzz_targets/fuzz_target_1.rs:4","Info: RustCargoFuzzer integration found: linkerd/transport-header/fuzz/fuzz_targets/fuzz_target_raw.rs:4","Info: RustCargoFuzzer integration found: linkerd/transport-header/fuzz/fuzz_targets/fuzz_target_structured.rs:4","Info: RustCargoFuzzer integration found: linkerd/transport-header/src/lib.rs:280"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact release/v2.313.0 not signed: https://api.github.com/repos/linkerd/linkerd2-proxy/releases/239545638","Warn: release artifact release/v2.312.0 not signed: https://api.github.com/repos/linkerd/linkerd2-proxy/releases/238007033","Warn: release artifact release/v2.311.0 not signed: https://api.github.com/repos/linkerd/linkerd2-proxy/releases/236145604","Warn: release artifact release/v2.310.0 not signed: https://api.github.com/repos/linkerd/linkerd2-proxy/releases/234428915","Warn: release artifact release/v2.309.0 not signed: https://api.github.com/repos/linkerd/linkerd2-proxy/releases/233261560","Warn: release artifact release/v2.313.0 does not have provenance: https://api.github.com/repos/linkerd/linkerd2-proxy/releases/239545638","Warn: release artifact release/v2.312.0 does not have provenance: https://api.github.com/repos/linkerd/linkerd2-proxy/releases/238007033","Warn: release artifact release/v2.311.0 does not have provenance: https://api.github.com/repos/linkerd/linkerd2-proxy/releases/236145604","Warn: release artifact release/v2.310.0 does not have provenance: https://api.github.com/repos/linkerd/linkerd2-proxy/releases/234428915","Warn: release artifact release/v2.309.0 does not have provenance: https://api.github.com/repos/linkerd/linkerd2-proxy/releases/233261560"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":6,"reason":"dependency not pinned by hash detected -- score normalized to 6","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/pr.yml:130: update your workflow using https://app.stepsecurity.io/secureworkflow/linkerd/linkerd2-proxy/pr.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pr.yml:79: update your workflow using https://app.stepsecurity.io/secureworkflow/linkerd/linkerd2-proxy/pr.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/shellcheck.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/linkerd/linkerd2-proxy/shellcheck.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/toolchain.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/linkerd/linkerd2-proxy/toolchain.yml/main?enable=pin","Warn: containerImage not pinned by hash: .devcontainer/Dockerfile:3","Warn: containerImage not pinned by hash: Dockerfile:12","Warn: containerImage not pinned by hash: Dockerfile:14","Warn: containerImage not pinned by hash: Dockerfile:38","Warn: containerImage not pinned by hash: Dockerfile:54","Info:  22 out of  22 GitHub-owned GitHubAction dependencies pinned","Info:  15 out of  19 third-party GitHubAction dependencies pinned","Info:   0 out of   5 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-20T21:53:06.001Z","repository_id":37251366,"created_at":"2025-08-20T21:53:06.001Z","updated_at":"2025-08-20T21:53:06.001Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31544087,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"online","status_checked_at":"2026-04-08T02:00:06.127Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cncf","linkerd","rust","service-mesh"],"created_at":"2024-07-31T03:00:46.032Z","updated_at":"2026-04-08T07:02:17.527Z","avatar_url":"https://github.com/linkerd.png","language":"Rust","readme":"# The Linkerd Proxy\n\n![linkerd2][logo]\n\n[![GitHub license](https://img.shields.io/github/license/linkerd/linkerd2-proxy.svg)](LICENSE)\n[![Slack Status][slack-badge]][slack]\n\nThis repo contains the transparent proxy component of [Linkerd2][linkerd2].\nWhile the Linkerd2 proxy is heavily influenced by [the Linkerd 1.X\nproxy][linkerd1], it comprises an entirely new codebase implemented in the\n[Rust programming language][rust].\n\nThis proxy's features include:\n\n* Transparent, zero-config proxying for HTTP, HTTP/2, and arbitrary TCP protocols.\n* Automatic [Prometheus][prom] metrics export for HTTP and TCP traffic;\n* Transparent, zero-config WebSocket proxying;\n* Automatic, latency-aware, layer-7 [load balancing][loadbalancing];\n* Automatic layer-4 load balancing for non-HTTP traffic;\n* Automatic Mutual TLS;\n* An on-demand diagnostic `tap` API.\n\nThis proxy is primarily intended to run on Linux in containerized\nenvironments like [Kubernetes][k8s], though it may also work on other\nUnix-like systems (like macOS).\n\nThe proxy supports service discovery via DNS and the [linkerd2\n`Destination` gRPC API][linkerd2-proxy-api].\n\nThe Linkerd project is hosted by the Cloud Native Computing Foundation\n([CNCF][cncf]).\n\n## Building the project\n\nWe use [`just-cargo`][just-cargo] which provide a thin wrapper around `just` and\n`cargo`.\n\nWe recommend that you use the included [`Dev Container`][devc] to avoid setting\nup the complex development environment by hand.\n\n### Just\n\nA [`justfile`](./justfile) is provided to automate most build tasks. It provides\nthe following recipes:\n\n* `just build` -- Compiles the proxy on your local system using `cargo`\n* `just test` -- Runs unit and integration tests on your local system using `cargo`\n* `just docker` -- Builds a Docker container image that can be used for testing.\n\n### Cargo\n\nUsually, [Cargo][cargo], Rust's package manager, is used to build and test this\nproject. If you don't have Cargo installed, we suggest getting it via\n\u003chttps://rustup.rs/\u003e.\n\n### Devcontainer\n\nA Devcontainer is provided for use with Visual Studio Code. It includes all of\nthe tooling needed to build and test the proxy.\n\n### Repository Structure\n\nThis project is broken into many small libraries, or _crates_, so that\ncomponents may be compiled \u0026 tested independently. The following crate\ntargets are especially important:\n\n* [`linkerd2-proxy`] contains the proxy executable;\n* [`linkerd2-app-integration`] contains the proxy's integration tests;\n* [`linkerd2-app`] bundles the [`linkerd2-app-inbound`] and\n  [`linkerd2-app-outbound`] crates so that they may be run by the executable or\n  integration tests.\n\n[`linkerd2-proxy`]: linkerd2-proxy\n[`linkerd2-app`]: linkerd/app\n[`linkerd2-app-integration`]: linkerd/app/integration\n[`linkerd2-app-inbound`]: linkerd/app/inbound\n[`linkerd2-app-outbound`]: linkerd/app/outbound\n\n## Code of conduct\n\nThis project is for everyone. We ask that our users and contributors take a few\nminutes to review our [code of conduct][coc].\n\n## Security\n\nWe test our code by way of fuzzing and this is described in [FUZZING.md](/docs/FUZZING.md).\n\nA third party security audit focused on fuzzing Linkerd2-proxy was performed by\nAda Logics in 2021. The\n[full report](/docs/reports/linkerd2-proxy-fuzzing-report.pdf) can be found in\nthe `docs/reports/` directory.\n\n## License\n\nlinkerd2-proxy is copyright 2018 the linkerd2-proxy authors. All rights reserved.\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthese files except in compliance with the License. You may obtain a copy of the\nLicense at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software distributed\nunder the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\nCONDITIONS OF ANY KIND, either express or implied. See the License for the\nspecific language governing permissions and limitations under the License.\n\n\u003c!-- refs --\u003e\n[cargo]: https://github.com/rust-lang/cargo/\n[cncf]: https://cncf.io/\n[coc]: https://github.com/linkerd/linkerd/wiki/Linkerd-code-of-conduct\n[devc]: https://containers.dev/\n[just-cargo]: https://github.com/linkerd/dev/tree/main/bin/just-cargo\n[k8s]: https://kubernetes.io/\n[linkerd1]: \u003chttps://github.com/linkerd/linkerd\u003e\n[linkerd2]: \u003chttps://github.com/linkerd/linkerd2\u003e\n[linkerd2-proxy-api]: \u003chttps://github.com/linkerd/linkerd2-proxy-api\u003e\n[loadbalancing]: \u003chttps://linkerd.io/2.11/features/load-balancing/\u003e\n[logo]: \u003chttps://user-images.githubusercontent.com/9226/33582867-3e646e02-d90c-11e7-85a2-2e238737e859.png\u003e\n[prom]: \u003chttps://prometheus.io/\u003e\n[rust]: \u003chttps://www.rust-lang.org/\u003e\n[slack-badge]: \u003chttps://slack.linkerd.io/badge.svg\u003e\n[slack]: \u003chttps://slack.linkerd.io\u003e\n","funding_links":[],"categories":["Applications","Rust","应用程序 Applications","应用","应用 Applications","Uncategorized","Service Mesh"],"sub_categories":["贡献","Uncategorized"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinkerd%2Flinkerd2-proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinkerd%2Flinkerd2-proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinkerd%2Flinkerd2-proxy/lists"}