Skip to main content

The Buf logo

Buf

License Release CI Docker Homebrew Slack

Buf is the modern toolchain for Protobuf. It replaces day-to-day protoc use with a fast compiler, module-aware workspaces, formatting, linting, breaking-change detection, code generation, dependency management, API calls, and a client for the Buf Schema Registry.

If you are still driving Protobuf with shell scripts around protoc -I ..., Buf is the upgrade you want: the same schema language, the same generated-code plugin model, fewer moving parts, and a direct path from local .proto files to governed, versioned APIs.

Start

Install buf with Homebrew:

brew install bufbuild/buf/buf

Initialize a workspace and run the checks you should expect every Protobuf repository to pass:

buf config init
buf build
buf format -w
buf lint
buf breaking --against '.git#branch=main'

Generate code from a checked-in buf.gen.yaml instead of a hand-maintained shell command:

buf generate

For a guided walkthrough from an empty workspace to a working Connect service, run the Buf CLI quickstart.

Why Buf wins

Protobuf work With protoc and scripts With Buf
Finding files Maintain -I paths and hope import order does not change behavior. Declare modules once in buf.yaml; Buf discovers files and rejects ambiguous imports.
Compiling Manage a local protoc install and parse changing stderr output. Use Buf's internal compiler, tested against protoc descriptor output and built for deterministic parallel compilation.
Style Rely on review comments or separate tooling. Run buf lint locally, in editors, in CI, and on the BSR with 40+ built-in rules plus custom plugins.
Compatibility Find breakage after generated code fails, clients fail, or serialized data becomes unreadable. Run buf breaking against Git, a BSR module, a tarball, a zip file, or a Buf image before merge.
Code generation Keep plugin binaries installed on every machine and encode behavior in long commands. Put plugins, outputs, options, inputs, and managed-mode settings in buf.gen.yaml; use local or remote plugins.
Dependencies Copy .proto files between repositories or vendor them by hand. Declare BSR module dependencies in buf.yaml and pin them in buf.lock.
API consumers Send people your schemas and generation instructions. Publish to the BSR and let consumers install generated SDKs with go get, npm install, Maven, Gradle, pip install, NuGet, Cargo, SwiftPM, CMake, or an archive.
Governance Reimplement checks in every repository and hope every team keeps them enabled. Enforce breaking-change, uniqueness, and custom policies at the BSR layer.

Core CLI features work without a BSR account. Signing in to the registry adds distribution, remote plugins, generated SDKs, hosted docs, dependency resolution for private modules, and server-side checks when you need them.

Core workflow

Buf treats a directory tree of .proto files as a module, and a project as a workspace. A small buf.yaml is enough to make build, lint, breaking-change detection, generation, dependency resolution, and publishing agree on the same input.

version: v2
modules:
  - path: proto
lint:
  use:
    - STANDARD
breaking:
  use:
    - FILE

From there, the useful commands are deliberately boring:

buf build
buf format -w
buf lint
buf breaking --against '.git#branch=main'
buf generate
buf push

buf build compiles the workspace. buf lint catches API-shape problems while the author is still editing. buf breaking compares the current schema against a previous version and flags source, JSON, or wire-format incompatibilities. buf generate runs protoc plugins from a checked-in template. buf push publishes named modules to the BSR.

Code generation

buf generate is compatible with the normal protoc plugin model, but it moves generation into versioned configuration. This example generates Go Protobuf types and ConnectRPC handlers from proto/ using remote plugins hosted on the BSR:

version: v2
clean: true
managed:
  enabled: true
  override:
    - file_option: go_package_prefix
      value: github.com/acme/weather/gen/go
plugins:
  - remote: buf.build/protocolbuffers/go
    out: gen/go
    opt: paths=source_relative
  - remote: buf.build/connectrpc/gosimple
    out: gen/go
    opt:
      - paths=source_relative
      - simple
inputs:
  - directory: proto

Remote plugins remove the need to install and maintain generator binaries on every developer machine or CI runner. Managed mode lets API producers keep language-specific file options out of .proto files while consumers still get correct generated package names for their target language.

Local plugins work too. If a plugin speaks the standard Protobuf plugin protocol, Buf can run it.

Breaking changes

Protobuf compatibility is not one thing. Renaming a field can break generated source code while preserving the binary wire format; changing a field from int32 to string breaks every existing serialized message. buf breaking makes that distinction explicit with rule categories for FILE, PACKAGE, WIRE_JSON, and WIRE compatibility.

buf breaking --against '.git#branch=main'

--against accepts a Git branch, a BSR module, a tarball, a zip file, a local directory, or a prebuilt Buf image. That matters in real repositories: the same command works on a laptop, in CI, and in release automation.

Buf Schema Registry

Buf Schema Registry is a Protobuf-aware registry. It stores modules, verifies they compile, renders documentation, resolves dependencies, hosts remote plugins, produces generated SDKs, and can enforce schema checks before a breaking change reaches consumers.

buf push

Pushing a module to the BSR gives your organization a source of truth for Protobuf APIs. Consumers can depend on the schema as a BSR module, install generated SDKs from their normal package manager, or use the BSR docs to inspect services, messages, fields, enums, references, and historical commits.

Buf is most useful when schemas drive more than code generation. ConnectRPC uses Protobuf schemas to build simple HTTP APIs that support Connect, gRPC, and gRPC-Web without separate service definitions. Protobuf-ES gives JavaScript and TypeScript users a modern Protobuf runtime and generator. Protovalidate puts validation rules in the schema and runs them consistently across languages.

One contract should drive the whole workflow: compile, lint, compatibility checks, generated clients and servers, validation, API calls, package publishing, and governed changes.

Installation

Homebrew installs the buf, protoc-gen-buf-breaking, and protoc-gen-buf-lint binaries, plus shell completion scripts for Bash, Fish, PowerShell, and zsh.

brew install bufbuild/buf/buf

Other supported installation methods include npm, Windows, Docker, binary downloads, tarballs, source builds, and minisign verification. See the installation docs for the full list.

CLI stability

Buf CLI releases do not make breaking changes within a major version. Since buf reached v1.0, you can expect no breaking changes until v2.0. We have no plans to release v2.0.

This policy does not apply to commands behind the buf beta gate. Expect breaking changes for beta commands until they are promoted.

Documentation

Community

For help and discussion around Protobuf, best practices, and Buf, join us on Slack.

For bugs, feature requests, and technical questions, open an issue in this repository or email dev@buf.build. For general inquiries, email info@buf.build.

Metadata

Release files for buf-bin 1.73.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for buf-bin 1.73.0
File
buf_bin-1.73.0-py3-none-win_arm64.whl Python 3 none Windows ARM64 Details
buf_bin-1.73.0-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
buf_bin-1.73.0-py3-none-manylinux_2_17_riscv64.musllinux_1_2_riscv64.whl Python 3 none Linux glibc 2.17+ RISC-V 64, Linux musl 1.2+ RISC-V 64 Details
buf_bin-1.73.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.musllinux_1_1_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64, Linux musl 1.1+ x86-64 Details
buf_bin-1.73.0-py3-none-manylinux2014_s390x.manylinux_2_17_s390x.musllinux_1_1_s390x.whl Python 3 none Linux glibc 2.17+ IBM System/390x, Linux musl 1.1+ IBM System/390x Details
buf_bin-1.73.0-py3-none-manylinux2014_ppc64le.manylinux_2_17_ppc64le.musllinux_1_1_ppc64le.whl Python 3 none Linux glibc 2.17+ PowerPC 64-le, Linux musl 1.1+ PowerPC 64-le Details
buf_bin-1.73.0-py3-none-manylinux2014_armv7l.manylinux_2_17_armv7l.musllinux_1_1_armv7l.whl Python 3 none Linux glibc 2.17+ ARMv7l, Linux musl 1.1+ ARMv7l Details
buf_bin-1.73.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.musllinux_1_1_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64, Linux musl 1.1+ ARM64 Details
buf_bin-1.73.0-py3-none-macosx_11_0_x86_64.whl Python 3 none macOS 11.0+ x86-64 Details
buf_bin-1.73.0-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details

Total release size: 154.8 MB

Release files / buf_bin-1.73.0-py3-none-win_arm64.whl

Download URL buf_bin-1.73.0-py3-none-win_arm64.whl
Size 14.8 MB
Tags Python 3 Windows ARM64
SHA-256 checksum
How to use checksums
ef4bd08ff1af592046059f6866c0e91cf8898cde4bd18873b1cf8afac182df76
BLAKE2b-256 checksum
How to use checksums
33ac65748603c46ab40b85fdf03dbfbb4c5812c2f0d4ea5457184732b55e9877
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / buf_bin-1.73.0-py3-none-win_amd64.whl

Download URL buf_bin-1.73.0-py3-none-win_amd64.whl
Size 16.7 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
24004a8c22a55a0a5b732ff6d5462921ce735d03a403f59878dd159f5893b46c
BLAKE2b-256 checksum
How to use checksums
ef518f025597d411e9490b29599d7088c51179cd200170728d4698c585212b44
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / buf_bin-1.73.0-py3-none-manylinux_2_17_riscv64.musllinux_1_2_riscv64.whl

Download URL buf_bin-1.73.0-py3-none-manylinux_2_17_riscv64.musllinux_1_2_riscv64.whl
Size 14.9 MB
Tags Linux glibc 2.17+ RISC-V 64 Linux musl 1.2+ RISC-V 64 Python 3
SHA-256 checksum
How to use checksums
b6596e3f81933ec18831c9eee7d01fb4466524842cc73e8e8c6b0422d285f935
BLAKE2b-256 checksum
How to use checksums
6f848f77ca63094c5c89c112903c7def93b415860a37a2b82424ff4617bec2ad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / buf_bin-1.73.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.musllinux_1_1_x86_64.whl

Download URL buf_bin-1.73.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.musllinux_1_1_x86_64.whl
Size 16.3 MB
Tags Linux glibc 2.17+ x86-64 Linux musl 1.1+ x86-64 Python 3
SHA-256 checksum
How to use checksums
f1d1a7ced285077860e205dd92a77333d8b4ed0f9ac39304a45ae72282c5aadc
BLAKE2b-256 checksum
How to use checksums
17270a1f324b8371cbdd95fe5a8898164b23272a921bb25193fac58788496444
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / buf_bin-1.73.0-py3-none-manylinux2014_s390x.manylinux_2_17_s390x.musllinux_1_1_s390x.whl

Download URL buf_bin-1.73.0-py3-none-manylinux2014_s390x.manylinux_2_17_s390x.musllinux_1_1_s390x.whl
Size 15.7 MB
Tags Linux glibc 2.17+ IBM System/390x Linux musl 1.1+ IBM System/390x Python 3
SHA-256 checksum
How to use checksums
013e7d9e7aed9c128d96566193fa2f64ef3a7b3f271bc68630870371d78193fa
BLAKE2b-256 checksum
How to use checksums
fdedcdd586312b325047059eeb832aeec045b7edd6e515431a4ef8b053995ac8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / buf_bin-1.73.0-py3-none-manylinux2014_ppc64le.manylinux_2_17_ppc64le.musllinux_1_1_ppc64le.whl

Download URL buf_bin-1.73.0-py3-none-manylinux2014_ppc64le.manylinux_2_17_ppc64le.musllinux_1_1_ppc64le.whl
Size 14.4 MB
Tags Linux glibc 2.17+ PowerPC 64-le Linux musl 1.1+ PowerPC 64-le Python 3
SHA-256 checksum
How to use checksums
ed50126575ec9e915c75e86690b738732c84212f9b52e6399c3b1790765ce77c
BLAKE2b-256 checksum
How to use checksums
3c73b6c5f7a14d74eb5086fce8fd4d393479b37a5df2de2ccc22821af86110a5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / buf_bin-1.73.0-py3-none-manylinux2014_armv7l.manylinux_2_17_armv7l.musllinux_1_1_armv7l.whl

Download URL buf_bin-1.73.0-py3-none-manylinux2014_armv7l.manylinux_2_17_armv7l.musllinux_1_1_armv7l.whl
Size 14.9 MB
Tags Linux glibc 2.17+ ARMv7l Linux musl 1.1+ ARMv7l Python 3
SHA-256 checksum
How to use checksums
58b6da0fd524590ae66d44f79f26377a159bc9677d44715980ce60daa6f832ac
BLAKE2b-256 checksum
How to use checksums
205c4687974d896cab1c6d06b27cafa3372473aea0f939a8bafff728d938127b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / buf_bin-1.73.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.musllinux_1_1_aarch64.whl

Download URL buf_bin-1.73.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.musllinux_1_1_aarch64.whl
Size 14.7 MB
Tags Linux glibc 2.17+ ARM64 Linux musl 1.1+ ARM64 Python 3
SHA-256 checksum
How to use checksums
d3bcee4b1f19d48c538065b3caaa640219a1d8ac85bd1549fe7c3068acf16800
BLAKE2b-256 checksum
How to use checksums
a16c26b99911b3034663e7efcfcd29a54e9de9d5e5f82f6d284c71c285ce125a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / buf_bin-1.73.0-py3-none-macosx_11_0_x86_64.whl

Download URL buf_bin-1.73.0-py3-none-macosx_11_0_x86_64.whl
Size 16.7 MB
Tags Python 3 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
f566d4ac4215d06dbb978843601cc45b5a9bb7bc4cdfa748774578b670661e47
BLAKE2b-256 checksum
How to use checksums
241fc1059e7f4a3740c0762eefcc1284c177744f499219f7d3798952b5468805
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / buf_bin-1.73.0-py3-none-macosx_11_0_arm64.whl

Download URL buf_bin-1.73.0-py3-none-macosx_11_0_arm64.whl
Size 15.6 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
456c7795e3ede8fa073ce56899651e453c2f975163dd18b76fcba4c6c12f54cb
BLAKE2b-256 checksum
How to use checksums
2d2271a832d2f3c80b077b82c317098ceb51c07dd20b62b247e9122b3747e428
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.73.0 This release

10 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page