/awesome-grpc

A curated list of useful resources for gRPC

Creative Commons Attribution 4.0 InternationalCC-BY-4.0

Awesome gRPC Awesome

A curated list of useful resources for gRPC

Contents

Documentation

Community

Official Libraries and Tools

  • gRPC Core - C, C++, Ruby, Node.js, Python, PHP, C#, Objective-C
  • gRPC Java - The Java gRPC implementation. HTTP/2 based RPC
  • 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 Ecosystem - gRPC Ecosystem that complements gRPC
  • gRPC contrib - Known useful contributions around github
  • Homebrew gRPC - gRPC formulae repo for Homebrew
  • grpc_cli - gRPC CLI tool

Tools

CLI

  • polyglot - A gRPC command line client written in Java
  • grpcc - Node.js grpc command-line client
  • gcall - Simple Node.js gRPC command line interface
  • Evans - more expressive universal gRPC (CLI) client
  • grpcurl - Like cURL, but for gRPC: Command-line tool for interacting with gRPC servers

GUI

  • letmegrpc - Generate a web form gui from a grpc specification
  • omgRPC (Deprecated) - A GUI client for interacting with gRPC services, similar to what Postman is for REST APIs
  • grpcui - An interactive web UI for gRPC, along the lines of postman (also, a Go library for embedding these web UIs into Go HTTP servers)
  • BloomRPC - A nice and simple GUI Client. Exploring and interacting with gRPC services has never been simpler, Inspired By GraphQL-Playground and Postman
  • gRPCox - Like Postman, but for gRPC. web based GUI Client for gRPC, extremely easy to use.
  • MuninRPC - Protobuf request and response testing application under the gRPC system.
  • Delivery - A simple electron app for gRPC that uses gRPCurl to autodetect all endpoints/methods and their request bodies, just modify the JSON body. Simplicity in mind.
  • (Yodelay.io) - A browser GUI Making sure your outbound 🗣️ ‘yodelay’ returns the ‘IiiOoo’ 📣 that you expect.

Testing

  • ghz - Simple gRPC benchmarking and load testing tool inspired by hey and grpcurl
  • gatling-grpc - A Gatling stress test plugin for gRPC.
  • strest-grpc - A load tester for stress testing grpc intermediaries.
  • hazana - A Go package for creating load test tooling. Supports gRPC.
  • fortio - A microservices (http, grpc) load testing library and tool from Istio project.
  • grpc-swagger - Debugging gRPC application with swagger-ui.
  • grpc-tools - A suite of gRPC debugging tools. Like Fiddler/Charles but for gRPC.
  • jmeter-grpc-plugin - A plugin supports load test gRPC service with Jmeter

Other

  • kafka-pixy - gRPC/REST proxy for Kafka
  • grpc-proxy - gRPC reverse proxy with the goal of making it easy to expose gRPC services over the internet
  • ratelimit - Go/gRPC service designed to enable generic rate limit scenarios from different types of applications
  • ProfaneDB - A Protocol Buffers database with gRPC API, built in C++ on top of RocksDB
  • danby - A grpc proxy for the browser
  • docker-protoc - Dockerized protoc, grpc-gateway, and grpc_cli commands bundled with Google API libraries
  • grpc-json-proxy - A proxy which allows existing tools like Postman or curl to interact with gRPC servers
  • protoc-gen-gotemplate - Generic generator based on golang's template system
  • grpc-http-proxy - A reverse proxy server which translate JSON HTTP requests to gRPC calls based on protoreflect
  • grpc-mate - A dynamic proxy server that translates JSON HTTP requests into gRPC calls
  • jawlb - An unsophisticated grpclb load balancer implementation for Kubernetes and gRPC
  • pbhbs - Generate files based on protobuf definition and handlebars templates

Language-Specific

Go

  • go-GRPC Micro - Micro based gRPC framework for microservices
  • go-kit gRPC - Go Kit with gRPC as transport
  • 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
  • grpc-proxy - gRPC proxy is a Go reverse proxy that allows for rich routing of gRPC calls with minimum overhead
  • 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
  • grpcui - Embed a gRPC web UI into a Go gRPC/HTTP server
  • clay - Minimal server platform for gRPС+REST+Swagger APIs
  • grpc-consul-resolver - Easy to use endpoints resolver for the services registered in the Consul
  • 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.

Node.js

  • 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-web-gateway – HTTP & WebSocket proxy gateway for gRPC services

Java

Ruby

  • gruf - gRPC Ruby Framework
  • gapic-generator-ruby - Generates Ruby gRPC client libraries from protocol buffer definitions of an API.

Python

  • 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 Djagno ORM over gRPC for microservices written in any other languages

C#

Rust

  • grpc-rs - The gRPC library for Rust built on C Core library and futures
  • grpc-rust - Rust implementation of gRPC
  • tower-grpc - A client and server gRPC implementation based on Tower
  • tonic - A native gRPC client & server implementation with async/await support

Haskell

Erlang

  • Erlang grpc - Erlang library for gRPC
  • grpcbox - Erlang grpc client and server
  • bert - Erlang Google Protobuf V3 generator from HRL files

Elixir

Elm

  • elm-protobuf - Protoc plugin generating elm code from proto definitions

TypeScript

Scala

  • ScalaPB - Protocol Buffer Compiler for Scala
  • Akka-gRPC - Akka gRPC provides support for building streaming gRPC servers and clients on top of Akka Streams.
  • Mu - Mu RPC is a purely functional library for building RPC endpoint-based services with support for gRPC and HTTP/2

Dart

  • grpc-dart - Protocol Buffer Compiler for Dart

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

Perl

  • grpc-perl - Experimental Perl gRPC library supporting grpc client

Resources

Tutorials

Videos

Slides

Examples

Miscellaneous

Protocol Buffers

Documentation

Tools

  • buf - Protobuf tool that includes linting and breaking change detection. Allows many types of input including directly checking remote repositories and tarballs, and has a built-in compiler as well.
  • prototools - Documentation generator & other tools for protobuf/gRPC
  • protoc-gen-doc - Documentation generator plugin for Google Protocol Buffers
  • Protoxygen - Doxygen 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.
  • 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
  • protoc-gen-validate - Protoc plugin to generate polyglot message validators
  • 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.
  • protoc-gen-struct-transformer - Transformation functions generator for Protocol Buffers.

Similar

  • gogoprotobuf - Fork of golang/protobuf with extra code generation features
  • MessagePack - It's like JSON, but fast and small
  • Thrift - Thrift is an interface definition language and binary communication protocol
  • TChannel - Network multiplexing and framing protocol for RPC
  • Cap’n Proto - Think Protocol Buffers, except faster
  • FlatBuffers - An efficient cross platform serialization library
  • RSocket - Application protocol providing Reactive Streams semantics
  • Twirp - A simple RPC framework with protobuf service definitions
  • Greenpack - Serialization format similar to MessagePack, but adds field versioning and type annotation

Contribute

Contributions welcome! Read the contribution guidelines first.

License

CC BY 4.0

This work is licensed under a Creative Commons Attribution 4.0 International License.