The Buf Schema Registry stores versioned Protobuf modules rather than individual topic schemas: pushes are linted and checked for breaking changes before they reach consumers, generated SDKs are published to native package managers, and a Confluent-compatible endpoint serves Kafka clients.
A hosted registry at buf.build driven by the buf CLI: pushes become commits, labels mark releases, dependencies resolve into lock files. Pro adds a private instance with SSO and audit logging; Enterprise adds self-hosted and on-premises deployment.
How Buf Schema Registry answers the questions Schema Registries turns on.
| How it works | |
| Schema formats | Protobuf and nothing else, where the unit is a module, a versioned bundle of .proto files with their dependencies. That is the sharpest elimination in this capability: a team on Avro or JSON Schema gets nothing here, while a team whose gRPC services and Kafka events share one set of definitions gets a single registry for both |
| Protocol | Its own module API driven by the buf CLI, plus Confluent Schema Registry compatibility, Buf's claim is that the BSR implements the same API, so most Kafka producers and consumers work against it, along with kSQL, Kafka Connect and management tools like AKHQ |
| Compatibility rules | Four breaking-change categories rather than compatibility levels, FILE, PACKAGE, WIRE_JSON and WIRE, ordered strictest to most lenient, where passing a stricter category implies passing every looser one. FILE is the default and catches breakage to generated source per file; WIRE catches only breakage to the binary encoding |
| Where enforced | At push, before the registry accepts anything, the answer that distinguishes this row. Registry-side lint, breaking-change and review policies run on buf push, and a broken push is rejected before a consumer can resolve it, rather than being registered and judged afterwards |
| Running it | |
| What you run | Nothing at all on most tiers, the public BSR at buf.build, a private BSR instance with its own subdomain on Pro, and self-hosted or on-premises deployment only at Enterprise |
| Connections | |
| Client libraries | Generated SDKs served from language-native registries (a consumer installs a package by name through Go modules, npm, pip, Cargo or Maven rather than running protoc against a vendored copy) while Kafka clients reach the same schemas through the Confluent-compatible API instead |
| Generated code | The strongest answer in this capability, and half the product, the BSR generates SDKs and publishes them to each language's own package registry, so code generation is something consumers never run themselves, with API documentation generated for every commit alongside |
| Connectors | The Kafka ecosystem through the Confluent-compatible API (producers and consumers, kSQL, Kafka Connect and tools like AKHQ) and on the other side the package managers carrying the generated SDKs. Dependencies between modules resolve through buf dep update into a lock file |
| Access | |
| Access control | Organisations with roles and permissions, and policy as the real mechanism, lint, breaking-change and review-commit policies configured on the registry decide what a push may contain, while labels mark which commits consumers track. Pro adds SSO through SAML or OIDC and audit logging |
| Cost | |
| Billing unit | Per type, which is unlike anything else here, a type being a message, an enum or an RPC, billed on the average count across the cycle. Community is free with one private repository capped at 100 types, Teams is $0.50 a type a month and bills private repositories only, Pro is $5 a type with a $3,000 monthly minimum and bills public types too, and Enterprise is custom |
vs Buf Schema Registry: Open source (permissive) · Self-hosted · Free · Java
vs Buf Schema Registry: Managed · Serverless · Free
vs Buf Schema Registry: Source-available · Java