Go Protobuf

Open-source Go projects categorized as Protobuf

Top 23 Go Protobuf Projects

  • kratos

    Your ultimate Go microservices framework for the cloud-native era.

  • grpcurl

    Like cURL, but for gRPC: Command-line tool for interacting with gRPC servers

    Project mention: Roll your own auth with Rust and Protobuf | dev.to | 2023-10-28


  • InfluxDB

    Collect and Analyze Billions of Data Points in Real Time. Manage all types of time series data in a single, purpose-built database. Run at any scale in any environment in the cloud, on-premises, or at the edge.

  • goprotobuf

    Go support for Google's protocol buffers (by golang)

    Project mention: Protoc Plugins with Go | dev.to | 2023-08-19

    Now let’s take a look at the source code of the protoc-gen-go plugin:

  • buf

    A new way of working with Protocol Buffers.

    Project mention: gut: convert golang structs to typescript interfaces | /r/golang | 2023-05-29

    Not so much anymore! Take a look at buf.build, it makes the whole thing notoriously easy :)

  • twirp

    A simple RPC framework with protobuf service definitions

    Project mention: How do I provide bot RPC and REST endpoints? | /r/golang | 2023-05-22
  • gogoprotobuf

    [Deprecated] Protocol Buffers for Go with Gadgets (by gogo)

  • protoactor-go

    Proto Actor - Ultra fast distributed actors for Go, C# and Java/Kotlin

    Project mention: Is there a programming language that will blow my mind? | /r/ProgrammingLanguages | 2023-06-01

    https://github.com/asynkron/protoactor-go & this is a great lib, that implements a Erlang/Akka-like the Actor Model in Go.

  • Onboard AI

    Learn any GitHub repo in 59 seconds. Onboard AI learns any GitHub repo in minutes and lets you chat with it to locate functionality, understand different parts, and generate new code. Use it for free at www.getonboard.dev.

  • nano

    Lightweight, facility, high performance golang based game server framework

  • protoc-gen-doc

    Documentation generator plugin for Google Protocol Buffers

    Project mention: Embedded communication protocols doc gen | /r/embedded | 2023-05-20
  • plumber

    A swiss army knife CLI tool for interacting with Kafka, RabbitMQ and other messaging systems.

    Project mention: Show HN: Streamdal – an open-source tail -f for your data | news.ycombinator.com | 2023-10-31

    4. Go to the provided UI (or run the CLI app) and be able to peek into what your app is reading or writing, like with `tail -f`.

    And that's basically it. There's a bunch more functionality in the project but we find this to be the most immediately useful part. Every developer we've shown this to has said "I wish I had this at my gig at $company" - and we feel exactly the same. We are devs and this is what we’ve always wanted, hundreds of times - a way to just quickly look at the data our software is producing in real-time, without having to jump through any hoops.

    If you want to learn more about the "why" and the origin of this project - you can read about it here: https://streamdal.com/manifesto

    — — —


    The SDK establishes a long-running session with the server (using gRPC) and "listens" for commands that are forwarded to it all the way from the UI -> server -> SDK.

    The commands are things like: "show me the data that you are currently consuming", "apply these rules to all data that you produce", "inspect the schema for all data", and so on.

    The SDK interprets the command and either executes Wasm-based rules against the data it's processing or if it's a `tail` request - it'll send the data to the server, which will forward it to the UI for display.

    The SDK IS part of the critical path but it does not have a dependency on the server. If the server is gone, you won't be able to use the UI or send commands to the SDKs, but that's about it - the SDKs will continue to work and attempt to reconnect to the server behind the scenes.

    — — —


    The project consists of a lot of "buzzwordy" tech: we use gRPC, grpc-Web, protobuf, redis, Wasm, Deno, ReactFlow, and probably a few other things.

    The server is written in Go, all of the Wasm is Rust and the UI is Typescript. There are SDKs for Go, Python, and Node. We chose these languages for the SDKs because we've been working in them daily for the past 10+ years.

    The reasons for the tech choices are explained in detail here: https://docs.streamdal.com/en/resources-support/open-source/

    — — —


    OK, that's it. What do you think? Is it useful? Can we answer anything?

    - If you like what you're seeing, give our repo a star: https://github.com/streamdal/streamdal

  • go-proto-validators

    Generate message validators from .proto annotations.

    Project mention: Understanding gRPC Concepts, Use Cases & Best Practices | dev.to | 2023-01-15

    protoc-gen-go-validators — a plugin that allows to define validation rules for proto message fields. It generates a Validate() error method for proto messages you can call in Go to validate if the message matches your predefined expectations.

  • encoding

    Go package containing implementations of efficient encoding, decoding, and validation APIs.

    Project mention: Rust vs. Go in 2023 | news.ycombinator.com | 2023-08-13


    Further, Go refusing to have macros means that many libraries use reflection instead, which often makes those parts of the Go program perform no better than Python and in some cases worse. Rust can just generate all of that at compile time with macros, and optimize them with LLVM like any other code. Some Go libraries go to enormous lengths to reduce reflection overhead, but that's hard to justify for most things, and hard to maintain even once done. The legendary https://github.com/segmentio/encoding seems to be abandoned now and progress on Go JSON in general seems to have died with https://github.com/go-json-experiment/json .

    Many people claiming their projects are IO-bound are just assuming that's the case because most of the time is spent in their input reader. If they actually measured they'd see it's not even saturating a 100Mbps link, let alone 1-100Gbps, so by definition it is not IO-bound. Even if they didn't need more throughput than that, they still could have put those cycles to better use or at worst saved energy. Isn't that what people like to say about Go vs Python, that Go saves energy? Sure, but it still burns a lot more energy than it would if it had macros.

    Rust can use state-of-the-art memory allocators like mimalloc, while Go is still stuck on an old fork of tcmalloc, and not just tcmalloc in its original C, but transpiled to Go so it optimizes much less than LLVM would optimize it. (Many people benchmarking them forget to even try substitute allocators in Rust, so they're actually underestimating just how much faster Rust is)

    Finally, even Go Generics have failed to improve performance, and in many cases can make it unimaginably worse through -- I kid you not -- global lock contention hidden behind innocent type assertion syntax: https://planetscale.com/blog/generics-can-make-your-go-code-...

    It's not even close. There are many reasons Go is a lot slower than Rust and many of them are likely to remain forever. Most of them have not seen meaningful progress in a decade or more. The GC has improved, which is great, but that's not even a factor on the Rust side.

  • 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 v5 - new major release of real-time messaging server written in Go | /r/golang | 2023-06-29

    BTW, Centrifugo is based on https://github.com/centrifugal/centrifuge Go library which may provide much more control and flexibility for Gophers than a standalone server and can be embedded to any Go app leveraging all Centrifugo client SDKs.

  • vtprotobuf

    A Protocol Buffers compiler that generates optimized marshaling & unmarshaling Go code for ProtoBuf APIv2

  • mortar

    Mortar is a GO framework/library for building gRPC (and REST) web services. (by go-masonry)

  • nrpc

    nRPC is like gRPC, but over NATS

    Project mention: Istio moved to CNCF Graduation stage | news.ycombinator.com | 2023-07-12

    There's a proto service implementation from NATs folks that I think does what you want - https://github.com/nats-rpc/nrpc

  • onnx-go

    onnx-go gives the ability to import a pre-trained neural network within Go without being linked to a framework or library.

    Project mention: Why isn’t Go used in AI/ML? | /r/golang | 2022-12-23
  • protolock

    Protocol Buffer companion tool. Track your .proto files and prevent changes to messages and services which impact API compatibility.

  • otpauth

    Google Authenticator migration decoder

    Project mention: Ask HN: How do you start over with 2FA and losing your phone? | news.ycombinator.com | 2023-03-07

    will generate a PNG file for each account, name after the account name and site name, and containing the QR code for the account.

    Going forward, save those PNGs somewhere secure (I use an encrypted tar file). Any new accounts you set up save the QR codes for those as PNGs and add them to your collection. If you keep that collection up to date you will be able to readily handle any device updates or replacements readily or adding new TOTP apps.

    [1] https://github.com/dim13/otpauth

  • buildbuddy

    BuildBuddy is an open source Bazel build event viewer, result store, remote cache, and remote build execution platform.

    Project mention: Launch HN: Moonrepo (YC W23) – Open-source build system | news.ycombinator.com | 2023-02-21
  • protolint

    A pluggable linter and fixer to enforce Protocol Buffer style and conventions.

    Project mention: Understanding gRPC Concepts, Use Cases & Best Practices | dev.to | 2023-01-15

    protolint - a plugin to add lint rules to proto files.

  • gosercomp

    :zap: Golang Serializer Benchmark Comparison

  • goflow2

    High performance sFlow/IPFIX/NetFlow Collector

    Project mention: Free netflow collector that forwards messages to a syslog server? | /r/networking | 2023-04-10

    I use goflow2 to do something like this. I don't specifically use syslog itself for this, but mtail to generate the metrics.

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

NOTE: The open source projects on this list are ordered by number of github stars. The number of mentions indicates repo mentiontions in the last 12 Months or since we started tracking (Dec 2020). The latest post mention was on 2023-10-31.

Go Protobuf related posts


What are some of the best open-source Protobuf projects in Go? This list will help you:

Project Stars
1 kratos 21,749
2 grpcurl 9,440
3 goprotobuf 9,346
4 buf 7,687
5 twirp 6,685
6 gogoprotobuf 5,606
7 protoactor-go 4,707
8 nano 2,549
9 protoc-gen-doc 2,472
10 plumber 2,004
11 go-proto-validators 1,026
12 encoding 934
13 centrifuge 877
14 vtprotobuf 741
15 mortar 661
16 nrpc 581
17 onnx-go 563
18 protolock 558
19 otpauth 547
20 buildbuddy 520
21 protolint 472
22 gosercomp 405
23 goflow2 333
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives