SaaSHub helps you find the best software and product alternatives Learn more →
Top 23 Go Protobuf Projects
-
-
Nutrient
Nutrient - The #1 PDF SDK Library. Bad PDFs = bad UX. Slow load times, broken annotations, clunky UX frustrates users. Nutrient’s PDF SDKs gives seamless document experiences, fast rendering, annotations, real-time collaboration, 100+ features. Used by 10K+ devs, serving ~half a billion users worldwide. Explore the SDK for free.
-
grpcurl is a command-line tool designed to interact with gRPC services. It is simple, fast, and perfect for testing APIs directly from the terminal, especially when working with microservices.
-
Project mention: gRPC vs. REST: Understand gRPC, OpenAPI and REST and When to Use in API Design | news.ycombinator.com | 2025-01-22
> timestamppb.New(time) is hard to figure out?
No need to be snarky; that API did not exist when I started using protobuf. https://github.com/golang/protobuf/blame/master/ptypes/times... <-- and you can still see the full code from this era on master because of the migration from `github.com/golang/protobuf` to `google.golang.org/protobuf`, which was a whole other exercise in terrible DX.
-
Buf CLI itself is licensed under a permissive Apache 2.0 License [0]. Buf distinguishes a few types of plugins: the most important being local and remote.
Local plugins are executables installed on your own machine, and Buf places no restrictions on use of those. Since Buf is a compiler, its output cannot be copyrighted (similar to proprietary or GPL licensed compilers). DISCLAIMER: I am not a lawyer. But it is my understanding that if you only use Buf with local plugins, law-wise you should be in the clear.
Remote plugins are hosted on BSR (Buf Schema Registry) servers [1], which are rate limited. All remote plugins are also available as local plugins if you install them.
Additionally, BSR also offers hosting of user proto schemas and plugins, and this is where pricing comes in [2].
[0] https://github.com/bufbuild/buf/blob/main/LICENSE
-
Project mention: gRPC vs. REST: Understand gRPC, OpenAPI and REST and When to Use in API Design | news.ycombinator.com | 2025-01-22
- 2. serialization format via protobuf
For most companies, neither 1 or 2 is needed, but the side effect of 2 (of having structured schema) is good enough. This was the idea behind twrip - https://github.com/twitchtv/twirp - not sure whether this is still actively used / maintained, but it's protobuf as json over HTTP.
-
After successful deployment, the data display panel looks as follows. Here, we present statistics and displays of the open-source community CloudWeGo, a project by ByteDance. The panels include:
-
The Go tooling for gRPC is inexplicably bad, both in terms of ergonomics and in terms of performance.
The GoGoProtobuf [1] project was started to improve both. It would generate nice Go types that followed Go's conventions. And it uses fast binary serialization without needing to resort to reflection.
Unfortunately, the gRPC/Protobuf team(s) at Google is famously resistant to changes, and was unwilling to work with the GoGo. As a result, the GoGo project is now dead. [2]
I've never used Buf, but it looks like it might fix most of the issues with the Go support.
[1] https://github.com/gogo/protobuf
[2] https://x.com/awalterschulze/status/1584553056100057088
-
CodeRabbit
CodeRabbit: AI Code Reviews for Developers. Revolutionize your code reviews with AI. CodeRabbit offers PR summaries, code walkthroughs, 1-click suggestions, and AST-based analysis. Boost productivity and code quality across all major languages with each PR.
-
Proto.Actor is the best framework for the Actor Model (you can use it with Go), it is implemented by the book (like Akka) Actor Model and supports the Virtual Actor Model (like Orleans). I would give a change for this framework
-
-
-
plumber
A swiss army knife CLI tool for interacting with Kafka, RabbitMQ and other messaging systems.
-
-
centrifuge
Real-time messaging library for Go. The simplest way to add feature-rich and scalable WebSocket support to your application. The core of Centrifugo server.
Project mention: Centrifugo v6 released – major update of scalable WebSocket server written in Go | news.ycombinator.com | 2025-01-16Hi everyone!
I'd like to share that we've just released Centrifugo v6 - a major update of scalable WebSocket server. The release addresses some usability pain points and adds nice features and more observability.
Centrifugo is an open-source standalone server written in Go – https://github.com/centrifugal/centrifugo. Centrifugo can instantly deliver messages to application online users connected over supported transports (WebSocket, HTTP-streaming, Server-Sent Events (EventSource), GRPC, WebTransport). Centrifugo has the concept of a channel – so it's a user-facing PUB/SUB server. Everything implemented in a language-agnostic way – so Centrifugo can be used in combination with any frontend or backend stack.
These days we also provide Centrifugo PRO version – and trying to find a balance to be sustainable.
The server is based on the open-source Centrifuge library - https://github.com/centrifugal/centrifuge, so many improvements mentioned in Centrifugo v6 release blog post (even those for Centrifugo PRO) may be used just as a library in Go application.
We provide real-time SDKs for popular client environments – for browser and mobile development – they connect to both Centrifuge library based servers and Centrifugo server.
Generally Centrifugal ecosystem provides a good alternative to Socket.IO and cloud services like Pusher.com and Ably.com
Will be happy to answer on any questions
-
-
I'm surprised the author doesn't mention ConnectRPC: https://connectrpc.com/
It solves ALL the problems of vanilla gRPC, and it even is compatible with the gRPC clients! It grew out of Twirp protocol, which I liked so much I made a C++ implementation: https://github.com/Cyberax/twirp-cpp
But ConnectRPC guys went further, and they built a complete infrastructure for RPC. Including a package manager (buf.build), integration with observability ( https://connectrpc.com/docs/go/observability/ ).
And most importantly, they also provide a library to do rich validation (mandatory fields, field limits, formats, etc): https://buf.build/bufbuild/protovalidate
Oh, and for the unlimited message problem, you really need to use streaming. gRPC supports it, as does ConnectRPC.
-
encoding
Go package containing implementations of efficient encoding, decoding, and validation APIs.
-
vtprotobuf
A Protocol Buffers compiler that generates optimized marshaling & unmarshaling Go code for ProtoBuf APIv2
-
-
-
-
buildbuddy
BuildBuddy is an open source Bazel build event viewer, result store, remote cache, and remote build execution platform.
-
protolock
Protocol Buffer companion tool. Track your .proto files and prevent changes to messages and services which impact API compatibility.
-
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
Go Protobuf discussion
Go Protobuf related posts
-
Optimizing Call Routing Efficiency with Phone Number Carrier Lookup APIs
-
CDNs vs Caching: The Key to Blazing Fast Web Performance (and Why You Need Both)
-
AI bots everywhere. Does anyone have a good whitelist for robots.txt?
-
gRPC vs. REST: Understand gRPC, OpenAPI and REST and When to Use in API Design
-
Go Protobuf: The New Opaque API
-
Using gRPC for (local) inter-process communication – F. Werner's Research Page
-
Cloudflare.com's Robots.txt
-
A note from our sponsor - SaaSHub
www.saashub.com | 16 Feb 2025
Index
What are some of the best open-source Protobuf projects in Go? This list will help you:
# | Project | Stars |
---|---|---|
1 | kratos | 23,665 |
2 | grpcurl | 11,238 |
3 | goprotobuf | 9,862 |
4 | buf | 9,506 |
5 | twirp | 7,257 |
6 | kitex | 7,233 |
7 | gogoprotobuf | 5,670 |
8 | protoactor-go | 5,136 |
9 | nano | 2,940 |
10 | protoc-gen-doc | 2,698 |
11 | plumber | 2,109 |
12 | matchbox | 1,310 |
13 | centrifuge | 1,138 |
14 | go-proto-validators | 1,090 |
15 | protovalidate | 1,018 |
16 | encoding | 1,004 |
17 | vtprotobuf | 938 |
18 | otpauth | 736 |
19 | mortar | 679 |
20 | nrpc | 659 |
21 | buildbuddy | 616 |
22 | protolock | 611 |
23 | protolint | 602 |