awesome-grpc
A curated list of useful resources for gRPC
https://github.com/grpc-ecosystem/awesome-grpc
Last synced: 16 days ago
JSON representation
-
Community
- Community links - Mailing list, Gitter, Twitter, Reddit
-
Documentation
- Website - Official documentation, libraries, resources, samples and FAQ
- Technical documentation - Collection of useful technical documentation
- gRPC status codes - Status codes and their use in gRPC
- gRPC status code mapping - HTTP to gRPC Status Code Mapping
- grpc-errors - Code examples in each language on how to return and handle error statuses.
-
Language-Specific
-
Ballerina
- Ballerina gRPC - Ballerina library for gRPC
- Ballerina gRPC CLI - Ballerina gRPC CLI tool
-
C#
- Grpc.Tools - gRPC and Protocol Buffer compiler for managed C# and native C++ projects. See [Introduction to gRPC on .NET Core](https://docs.microsoft.com/en-us/aspnet/core/grpc/?view=aspnetcore-3.0) tutorial.
- GrpcBrowser - a web UI for interactively debugging all types of gRPC endpoints
- MagicOnion - gRPC based HTTP/2 RPC Streaming Framework for .NET, .NET Core and Unity
-
C++
- QtProtobuf - gRPC and Protobuf generator and bindings for the Qt framework
- asio-grpc - Asynchronous gRPC with [Boost.Asio](https://github.com/boostorg/asio) or [libunifex](https://github.com/facebookexperimental/libunifex)
- qtgrpc - gRPC and Protobuf generator and bindings for the Qt framework
- sugar-proto - A Protobuf wrapper with expressive, minimal, and strongly-typed C++ syntax, close to plain structs.
-
Dart
- grpc-dart - Protocol Buffer Compiler for Dart
-
Elixir
- grpc-elixir - The Elixir implementation of gRPC
-
Elm
- elm-protobuf - Protoc plugin generating elm code from proto definitions
-
Erlang
- Erlang grpc - Erlang library for gRPC
- grpcbox - Erlang grpc client and server
- bert - Erlang Google Protobuf V3 generator from HRL files
- bert - Erlang Google Protobuf V3 generator from HRL files
-
Go
- go-GRPC Micro - [Micro](https://github.com/micro) based gRPC framework for microservices
- go-kit gRPC - [Go Kit](https://github.com/go-kit) with gRPC as transport
- grpcui - Embed a gRPC web UI into a Go gRPC/HTTP server
- grpc-proxy - gRPC proxy is a Go reverse proxy that allows for rich routing of gRPC calls with minimum overhead
- gRPC over NATS - nRPC is an RPC framework like gRPC, but for NATS.
- grpc-web - gRPC Web implementation for Golang and TypeScript
- grpc-web-devtools - Chrome Browser extension to aid gRPC-Web development
- rpcx - A RPC service framework based on net/rpc like alibaba Dubbo and weibo Motan
- grpclb - External Load Balancing Service solution for gRPC written in Go
- go-microservice-helpers - A collection of handy snippets that simplify creation of gRPC servers and clients
- lile - Easily create gRPC services in Go
- proteus - Generate .proto files from Go source code
- protoc-gen-cobra - Command line tool generator for Go gRPC
- gRPC over WebSocket - connect to a gRPC Server behind a firewall by using a pre-established WebSocket connection
- yarpc - A message passing platform for Go, including support for gRPC
- promgrpc - Prometheus instrumentation for gRPC based services
- protoreflect - Reflection (Rich Descriptors) for Go Protocol Buffers
- grpchan - Channels for gRPC: custom transports, such as in-process and HTTP 1.1
- clay - Minimal server platform for gRPС+REST+Swagger APIs
- grpc-consul-resolver - Easy to use endpoints resolver for the services registered in the [Consul](https://www.consul.io/)
- kuberesolver - gRPC Load Balancer with Kubernetes resolver
- ttrpc - GRPC for low-memory environments
- grapi - 😮 A surprisingly easy API server and generator in gRPC and Go
- gripmock - gRPC Mock Server
- grpc-gateway-boilerplate - All the boilerplate you need to get started with writing grpc-gateway powered REST services in Go
- protoc-gen-struct-transformer - Transformation function generator for protocol buffers.
- cmux - Connection multiplexer for GoLang: serve different services on the same port! Supports gRPC.
- go-grpc-channelz - A channelz UI for Golang. Channelz is an approved and already implemented proposal describing the inner state of gRPC connections/channels. go-grpc-channelz provides a simple UI for channelz for easy diagnosis.
- goprotoc - Library for writing protoc plugins in Go; also includes a pure-Go protoc replacement.
- gRPC for production - A Golang project that provides the core requirements for a production-ready gRPC communication.
- protoc-gen-mock - A protoc plugin to generate gRPC mock services from proto definitions in Golang
- Pike
- Mortar - GO framework for building gRPC (and REST) web services with DI, Telemetry and more
- sqlc-grpc - Generate gRPC/HTTP server (with metrics, tracing, swagger and grpcui) from SQL
- protoc-gen-fieldmask - A protoc plugin that generates fieldmask paths as static type properties of proto messages
- Thunder Framework - A gRPC-Gateway-powered framework with Prisma, Kubernetes, and Go for scalable microservices.
- protoc-gen-go-mock - A protoc plugin for generating minimal gRPC service mocks suitable for use in tests.
- gRPC for production - A Golang project that provides the core requirements for a production-ready gRPC communication.
- gRPC over NATS - nRPC is an RPC framework like gRPC, but for NATS.
-
Haskell
- grpc-haskell - gRPC library binding for Haskell
-
Java
- hoverfly-java-grpc - MITM proxy for recording and simulating gRPC services
- gax-java - Google API Extensions for Java
- Armeria - Asynchronous RPC/REST library built on top of Java 8, Netty, HTTP/2, Thrift and gRPC
- grpc-spring-boot-starter - Spring Boot starter module for gRPC framework
- grpc-spring-boot-starter
- reactive-grpc - Integrates reactive programming with grpc-java
- grpc-java-contrib - Useful extensions for the grpc-java library
- rejoiner - Generates a GraphQL schema from gRPC microservices
- grpcmock - A gRPC Java testing tool to easily mock endpoints of gRPC services for IT or Unit testing
- protoc-gen-java-optional - A Java Protoc plugin extending generated java classes with null safe `setOrClear` and `getOptional` methods.
- Vert.x gRPC - Asynchronous, non-blocking gRPC server and client built with the Vert.x HTTP server and client. It helps you create gRPC applications using a low-level message API or generated stubs.
- gax-java - Google API Extensions for Java
- grpc-spring-boot-starter - Spring Boot starter module for gRPC framework
-
Kotlin
- kroto-plus - gRPC Coroutines Integration and Protobuf message DSL support
- grpc-kotlin - A protoc plugin for generating native Kotlin bindings using coroutine primitives for gRPC services
- gapic-generator-kotlin - Generates coroutine-based gRPC Kotlin client libraries from a protocol buffer description of an API
- grpc-kapt - Annotation driven gRPC clients & servers in Kotlin with coroutines
- sisyphus - Modern gRPC back-end development framework based on Kotlin/Spring Boot with Message DSL/[HTTP transcoding](https://aip.bybutter.com/127)/[Google AIP](https://aip.bybutter.com) support.
-
Node.js
- grpc-web-gateway
- Mali - A minimalistic gRPC microservice framework for Node.js
- grpc-host-builder - Lightweight library for building gRPC services with server side interceptors support
- grpc-caller - An improved Node.js gRPC client
- grpc-create-metadata - Helper utility for creating gRPC `Metadata`
- grpc-create-error - Utility function for creating `Errors` for gRPC responses
- grpc-error - `GRPCError` class that wraps `create-grpc-error`
- grpc-inspect - gRPC protocol buffer inspection utility
- Node.js Proto Files - All of the Google API's protocol buffer files
- grpc-bus - Call gRPC services (even streams!) from the browser over any two-way socket to Node and soon Go
- grpc-errors - A quick and easy way of generating errors for use with grpc
- grpc-dynamic-gateway - Like grpc-gateway, but written in node and dynamic.
- node-protoc-plugin - Create protoc code-generation plugins easily in nodejs.
- grpc-promise - GRPC promisify module for all Request/Response types: standard and stream
- firecomm - Feature library for gRPC-Node
- grpc-reflection-js
-
Perl
- grpc-perl - Experimental Perl gRPC library supporting grpc client
-
Python
- Bali - Simplify Cloud Native Microservices development base on FastAPI and gRPC.
- grpclib - Pure-Python gRPC implementation, based on hyper-h2 project
- pytest-grpc - pytest plugin which allow test gRPC services
- grpcalchemy - The Python micro framework for building gPRC application
- django-grpc - Django application to build gRPC services with access to ORM, settings and everything else
- garuda - Automagically Exposing Django ORM over gRPC for microservices written in any other languages
- django-grpc-framework - A gRPC toolkit for Django inspired by djangorestframework
- grpc_requests - GRPC for Humans! grpc reflection support client. you can request grpc just like REST(No need Stub!)
- betterproto - More pythonic gRPC based on grpclib and dataclasses
- Fast-gRPC - The Python async micro framework for easy develop gRPC server
- grpc_requests - GRPC for Humans! grpc reflection support client. you can request grpc just like REST(No need Stub!)
-
Ruby
- gruf - gRPC Ruby Framework
- gapic-generator-ruby - Generates Ruby gRPC client libraries from protocol buffer definitions of an API.
-
Rust
- grpc-rust - Rust implementation of gRPC
- tower-grpc - A client and server gRPC implementation based on Tower. Deprecated in favour of tonic
- tonic - A native gRPC client & server implementation with async/await support
- wtx - RFC7541 and RFC9113 implementation with built-in support for `gRPC` connections.
- grpc-rs - The gRPC library for Rust built on C Core library and futures
-
Scala
- ScalaPB - Protocol Buffer Compiler for Scala
- Mu - Mu RPC is a purely functional library for building RPC endpoint-based services with support for gRPC and HTTP/2
- Akka-gRPC - Akka gRPC provides support for building streaming gRPC servers and clients on top of Akka Streams.
- fs2-grpc - gRPC implementation for FS2/cats-effect using netty
- http4s-grpc - A pure Scala gRPC implementation! Use it with http4s Ember and deploy on JVM, Node.js, and Native.
- zio-grpc - ScalaPB meets ZIO: write purely functional gRPC services and clients using ZIO
-
TypeScript
- protoc-gen-tstypes - Configurable Protoc Plugin to generate TypeScript types.
- ts-protoc-gen - Protoc Plugin for TypeScript Declarations
- sisyphus.js - gRPC runtime and compiler for Web Clients by HTTP transcoding. Recommend using with [Sisyphus](https://github.com/ButterCam/sisyphus) back-end framework.
- protoc-gen-grpc-gateway-ts - TypeScript client generator for the grpc-gateway project that generates idiomatic TypeScript clients that connect the web frontend and golang backend fronted by grpc-gateway.
- protobuf-ts - Protoc plugin and runtime for TypeScript. Generates gRPC server/client for Node.js, gRPC-Web/Twirp clients for browser, uses Fetch API.
- ts-proto - Transforms your .proto files into strongly-typed, idiomatic TypeScript files!
- grpc-js-typescript - Examples of how to use gRPC with TypeScript & Node.js.
- nice-grpc - gRPC library for Node.js and the Browser with modern API and middleware support.
- sisyphus.js - gRPC runtime and compiler for Web Clients by HTTP transcoding. Recommend using with [Sisyphus](https://github.com/ButterCam/sisyphus) back-end framework.
-
-
Official Libraries and Tools
- gRPC Ecosystem - gRPC Ecosystem that complements gRPC
- grpc_cli - gRPC CLI tool
- gRPC Core - C, C++, Ruby, Node.js, Python, PHP, C#, Objective-C
- gRPC Java - The Java gRPC implementation. HTTP/2 based RPC
- gRPC Kotlin - The Kotlin gRPC implementation. Based on gRPC Java
- gRPC Node.js - gRPC for Node.js
- gRPC Go - The Go language implementation of gRPC. HTTP/2 based RPC
- gRPC Swift - The Swift language implementation of gRPC
- gRPC Dart - The Dart language implementation of gRPC
- gRPC C# - The C# language implementation of gRPC
- gRPC Web - gRPC for Web Clients
- gRPC contrib - Known useful contributions around github
- gRPC contrib - Known useful contributions around github
-
Protocol Buffers
-
Documentation
- Third-Party Add-ons for Protocol Buffers - List of add-ons for Protocol Buffers in main github repository
- Third-Party Add-ons for Protocol Buffers - List of add-ons for Protocol Buffers in main github repository
-
Package Managers
-
Similar
- MessagePack - It's like JSON, but fast and small
- Thrift - Thrift is an interface definition language and binary communication protocol
- Cap’n Proto - Think Protocol Buffers, except faster
- gogoprotobuf - [[Deprecated] Fork of golang/protobuf with extra code generation features
- TChannel - Network multiplexing and framing protocol for RPC
- Twirp - A simple RPC framework with protobuf service definitions
- Greenpack - Serialization format similar to MessagePack, but adds field versioning and type annotation
-
Tools
- clang-format - Protocol Buffers formating tool
- Visual studio code - protocol-buffer-editor).
- GenDocu - gRPC Documentation and SDK generator as a Service.
- GenDocu - gRPC Documentation and SDK generator as a Service.
- prototools - Documentation generator & other tools for protobuf/gRPC.
- protoc-gen-apidocs - Documentation generator plugin for protobuf/gRPC.
- protoc-gen-doc - Documentation generator plugin for Google Protocol Buffers
- Protoxygen - [Doxygen](http://doxygen.nl) plugin to generate documentation for protobuf/gRPC
- openapi2proto - A tool for generating Protobuf v3 schemas and gRPC service definitions from OpenAPI specifications
- Wireshark Protobuf Dissector - A Wireshark Lua plugin for decoding Google protobuf packets. [Relevant PR and discussion](https://github.com/google/protobuf/issues/3303).
- protoc-gen-lint - A plug-in for Google's Protocol Buffers (protobufs) compiler to lint .proto files for style violations
- prototool - Compile, lint, and format Protobuf files, and generate stubs for any lanuguage/plugin, along with Vim/IDE integration
- go-proto-validators - Generate message validators from .proto annotations, used in `grpc_validator` Go gRPC middleware.
- protolock - Protocol Buffer companion tool to `protoc` and `git`. Track your .proto files and prevent changes to messages and services which impact API compatibilty.
- protoc-gen-map - SQL data mapper framework for Protocol Buffers.
- api-linter - A linter for APIs defined in protocol buffers.
- pbvm - Protocol Buffers Version Manager
- intellij-protobuf-plugin - IntelliJ-based IDEs Protobuf Language Plugin that provides Protobuf language support.
- protolint - A pluggable linter and fixer to enforce Protocol Buffer style and conventions.
- Mouse Melon - A user-friendly Protocol Buffers data editor.
- Protovalidate - Protovalidate provides standard annotations to validate common rules on messages and fields, as well as the ability to use CEL to write custom rules.
-
-
Resources
-
Examples
- Text to Speech server with gRPC and Kubernetes - justforfunc #12
- Making a Multiplayer Game With Go and gRPC - gRPC game example in Go. [Source](https://github.com/mortenson/grpc-game-example).
- Envoy proxy as an API gateway for gRPC microservice - A gRPC service in Go, built with Bazel and deployed into Kubernetes cluster with [Tilt](https://tilt.dev) and REST API enabled. [Source](https://github.com/ekhabarov/bazel-k8s-envoy)
- gRPC Ballerina client Example - A collection of simple gRPC client examples written in Ballerina
- gifinator - A sample application demonstrating Kubernetes, gRPC, Go and cute Gophers demoed at Google GCP Next 2017
- Multiplayer Simon Says - A Game using gRPC and Kubernetes - Sample app with Go server and clients using Node.js (on Arduino and web), and Java (Android and CLI)
- go-micro-services - An demonstration of Golang micro-services that expose a HTTP/JSON frontend and then leverages gRPC for inter-service communication
- Streaming RPC's using gRPC - A quick demo of bi-directional streaming RPC's using grpc, Go and Python
- gRPC Java Examples - A collection of useful/essential gRPC Java Examples
- gRPC/OpenCensus Demo - Export metrics and traces from gRPC servers and clients using Java, Go and Prometheus
- Colossus - An example multi-language gRPC microservice architecture built by Bazel and targeting Kubernetes
- coolstore-microservices - A containerized polyglot gRPC microservices based on .NET Core, Nodejs and more running on Istio
- gRPC Microservices with Go and Kubernetes - A sample application use gRPC in microservice and deploy in kubernetes.
- Detailed examples for Go - A detailed gRPC example in Go.
- Go gRPC features examples - A collection of gRPC and Go examples showcasing features of the framework
- Hello gRPC - Simple server and client examples showcasing gRPC features(including proxy and propagate, running in containers and kubernetes) with Java/Kotlin/Go/NodeJs/Python/Rust/C++/C#.
- GCP - Online Boutique application rewritten in Ballerina - Online Boutique application rewritten in Ballerina
- gRPC Goat - An intentionally vulnerable gRPC Security Lab - gRPC Goat is a "Vulnerable by Design" lab created to provide an interactive, hands-on playground for learning and practicing gRPC security.
- gRPC Java Examples - A collection of useful/essential gRPC Java Examples
-
Miscellaneous
- gRPC with Load Balancer or Proxy or on AWS - Various notes on doing gRPC behind a load balancer or proxy or on AWS
- gRPC service upgrade, versioning - A short possibly useful discussion on gRPC service upgrade and versioning
- Migrating APIs from REST to gRPC at WePay - A blog post on migrating from REST to gRPC
- Packaging Generated Code for gRPC Services - An article demonstrating a strategy on how to version and package gRPC libraries
-
Slides
- gRPC Design and Implementation - April 2016 talk at Stanford by Varun Talwar
-
Programming Languages
Categories
Sub Categories
Keywords
grpc
129
protobuf
52
golang
38
go
28
protocol-buffers
23
grpc-client
14
rpc
13
kubernetes
10
protoc
10
typescript
10
java
9
grpc-web
9
microservices
9
microservice
8
grpc-java
8
cli
8
http
7
grpc-server
7
proxy
7
swagger
6
grpc-go
6
docker
5
kotlin
5
spring-boot
5
grpc-gateway
5
api
5
proto
5
javascript
4
testing
4
prometheus
4
json
4
http2
4
grpc-framework
3
load-testing
3
database
3
thrift
3
devops
3
proto3
3
graphql
3
middleware
3
nodejs
3
api-testing
3
twirp
3
web
3
opentracing
3
debugging-tool
3
openapi
3
plugin
3
performance
3
rust
3