A curated list of useful resources for gRPC
- Official Libraries and Tools
- Protocol Buffers
- 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.
- API Design Guide - Google Cloud API Design Guide useful for gRPC API design insights
- Community links - Mailing list, Gitter, Twitter, Reddit
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
- 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
- protodot - Transforming your .proto files into .dot files (and .svg, .png if you happen to have graphviz installed)
- grpc-client-cli - interactive gRPC client
- proto2asciidoc - Generate AsciiDoc documentation from a .proto file
- proto-to-postman - Create postman API import collection from .proto files
- 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.
- Milkman - Extensible alternative to Postman for crafting all kinds of requests, not only for gRPC, also http, sql etc.
- 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.
- Wombat - A cross platform gRPC client. Auto-generates input fields from your proto files or the gRPC reflection API. Not another Electron app - built with Qt and Go.
- 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
- 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
- protoc-gen-hbs - Fast and easy protobuf generation with handlebars and some helpers
- 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.
- protoc-gen-mock - A protoc plugin to generate gRPC mock services from proto definitions in Golang
- Pike — Generate CRUD gRPC backends from single YAML description
- 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
- grpc-create-error - Utility function for creating
Errorsfor gRPC responses
- grpc-error -
GRPCErrorclass that wraps
- 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
- 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 Spring Boot starter module for gRPC framework from LogNet.
- 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
- hoverfly-java-grpc - MITM proxy for recording and simulating gRPC services
- grpcmock - A gRPC Java testing tool to easily mock endpoints of gRPC services for IT or Unit testing
- gruf - gRPC Ruby Framework
- gapic-generator-ruby - Generates Ruby gRPC client libraries from protocol buffer definitions of an API.
- 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
- django-grpc-framework - A gRPC toolkit for Django inspired by djangorestframework
- homi - Python micro framework for build grpc server easy and fast.
- grpc_requests - GRPC for Humans! grpc reflection support client. you can request grpc just like REST(No need Stub!)
- MagicOnion - gRPC based HTTP/2 RPC Streaming Framework for .NET, .NET Core and Unity
- Grpc.Tools - gRPC and Protocol Buffer compiler for managed C# and native C++ projects. See Introduction to gRPC on .NET Core tutorial.
- 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
- grpc-haskell - gRPC library binding for Haskell
- Erlang grpc - Erlang library for gRPC
- grpcbox - Erlang grpc client and server
- bert - Erlang Google Protobuf V3 generator from HRL files
- grpc-elixir - The Elixir implementation of gRPC
- elm-protobuf - Protoc plugin generating elm code from proto definitions
- ts-protoc-gen - Protoc Plugin for TypeScript Declarations
- protoc-gen-tstypes - Configurable Protoc Plugin to generate TypeScript types.
- sisyphus.js - gRPC runtime and compiler for Web Clients by HTTP transcoding. Recommend using with Sisyphus back-end framework.
- 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
- grpc-dart - Protocol Buffer Compiler for Dart
- 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/Google AIP support.
- grpc-perl - Experimental Perl gRPC library supporting grpc client
- Getting Started with Microservices using Go, gRPC and Kubernetes
- gRPC in Production
- gRPC Go: Beyond the basics - GopherAcademy article
- Building High Performance APIs In Go Using gRPC - Small tutorial on building a simple API using gRPC and Go
- Bidirectional gRPC streaming for Go
- How We Build gRPC Services At Namely - Blog article from Namely Labs
- Our experience designing and building gRPC services - Blog series from Bugsnag on building a new Releases dashboard backend using gRPC
- Writing gRPC Interceptors in Go - A simple tutorial on gRPC Interceptors
- An introduction to gRPC
- How we use gRPC to build a client/server system in Go - A technical presentation on how to use gRPC (and Protobuf) to build a robust client/server system
- Serving gRPC and HTTP services on the same port - Small tutorial on how to serve http and gRPC on same port in Go
- Take a REST with HTTP/2, Protobufs, and Swagger - Small tutorial on how to serve http and gRPC on same port in Go
- OpenCensus for Go gRPC developers - Tutorial on how to use OpenCensus with gRPC and Go. Also available for Java and Python.
- How to develop Go gRPC microservice with HTTP/REST endpoint, middleware, Kubernetes deployment, etc - A series of blog posts for gRPC development using Go. Source code.
- GopherJS Client and gRPC Server - A guide to implementing a GopherJS frontend to a gRPC backend exposed over HTTP via the gRPC-gateway. Also available related gRPC-Web with GopherJS tutorial.
- The G-Unit Stack: Go, GraphQL, and gRPC - A blog post and tutorial on using Go, GraphQL and gRPC. Associated repo.
- Envoy, gRPC, and Rate Limiting - A tutorial on using gRPC and Envoy to build a rate limit service - Venil Noronha, VMware Open Source Technology Center
- Seamless Cloud-Native Apps with gRPC-Web and Istio - A tutorial on building a Cloud-Native web app using gRPC-Web and Istio - Venil Noronha, VMware Open Source Technology Center
- Backward and Forward Compatibility, Protobuf Versioning, Serialization - A small article on making gRPC API changes
- Node, gRPC, and Postgres - This tutorial looks at how to implement an API with Node, gRPC, and Postgres.
- Building High Performance APIs In Go Using gRPC And Protocol Buffers - An introductory gRPC Go tutorial.
- Understanding gRPC - An introductory gRPC tutorial with example application in Go.
- Part 1: Demystifying gRPC - A simple gRPC service with context cancelation and secure connection over SSL/TLS.
- Part 2: Demystifying gRPC - Extend the service with gRPC streaming and Python backend.
- Part 3: Demystifying gRPC - Add Unary and Stream gRPC Interceptors to a service and provide REST endpoints with grpc-gateway.
- gRPC in Microservices - Tutorial on using gRPC in microservice architetures.
- gRPC and Protobuffer API Documentation with proto2asciidoc and code2asciidoc - Tutorial on generating AsciiDoc documentation from a .proto file, includes a small gRPC demo project too.
- gRPC: Google's high-performance, open-source RPC framework - GothamGo 2015 by Sameer Ajmani
- Introduction to gRPC: A general RPC framework that puts mobile and HTTP/2 first - Devoxx by Mete Atamel
- gRPC: The Story of Microservices at Square - Apigee webcast
- Scalable Realtime Microservices with Kubernetes and gRPC - Mark Mandel @ Google
- Text to Speech server with gRPC and Kubernetes - justforfunc #12
- GRPC Microservices 101 - Google Developer Group Washington by Ray Tsang
- Efficient Microservices w/ Binary Protocol - gRPC 101 - By Ray Tsang
- grpc: From Tutorial to Production - GopherCon 2017 by Alan Shreve
- Scalable Microservices with gRPC, Kubernetes, and Docker - Node Interactive 2016 by Sandeep Dinesh
- Building Microservices w/gRPC & Kubernetes - Philly ETE 2016 #49 by Kelsey Hightower
- Building high performance microservices with Kubernetes, Go, and gRPC - Google Cloud Next '17 by Andrew Jessup
- Modifying gRPC Services Over Time - Eric Anderson, Google at KubeCon + CloudNativeCon 2017 - Austin
- Next Generation Services at Indeed Using gRPC - Jaye Pitzeruse, Indeed.com at KubeCon + CloudNativeCon 2017 - Austin
- Generating Unified APIs with Protocol Buffers and gRPC - A video on Protocol Buffers, gRPC and Envoy from Lyft.
- Intro to gRPC: A Modern Toolkit for Microservice Communication - A video from Twilio's Signal Conference
- gRPC and Go: Developing Efficient and Type-Safe Services
- Best Practices for (Go) gRPC Services
- Creating GopherJS Apps with gRPC-Web - At FOSDEM
- justforfunc #31: gRPC Basics - JustForFunc: Programming in Go series Episode 31 covering gRPC
- Efficient service communication with gRPC - Talk at microXchg 2018 Berlin
- gRPC Java Course on Udemy - Online Course (4 hours) that walks through several examples and implementations of gRPC using the Java Language
- HTTP and JSON for your gRPC Services - Michael Hamrah - from Full Stack Fest
- Types All the Way Down — gRPC and Go Infrastructure at Lyft - Christopher Burnett at Istanbul Tech Talks
- Using gRPC for Long-lived and Streaming RPCs - Eric Anderson, Google at KubeCon North America 2018
- Intro: gRPC-Web - Stanley Cheung & Wenbo Zhu, Google at at KubeCon North America 2018
- gRPC Loadbalancing on Kubernetes - Presentation at KubeCon Europe 2018. Source.
- Putting gRPC in Practice - Presentation on working with gRPC.
- The Story of Why We Migrate to gRPC and How We Go About It - Matthias Grüter, Spotify at KubeCon + CloudNativeCon Europe 2019
- Authentication and Security in gRPC Microservices - Jan Tattermusch, Google at KubeCon + CloudNativeCon Europe 2019
- JustFootball’s Journey to gRPC + Linkerd in Production - Ben Lambert, & Kevin Lingerfelt at KubeCon + CloudNativeCon Europe 2019
- gRPC load balancing and Service Mesh - Vishal Powar, Google at KubeCon + CloudNativeCon Europe 2019
- Adopting gRPC: Overcoming Team and Technical Hurdles - GOTO 2019 • Adopting gRPC: Overcoming Team and Technical Hurdles • Josh Humphries
- Moving to gRPC Java - Mya Pitzeruse at Indeed.com
- Building Microservices with Go - A series of tutorials for building microservices with Go, covers using gRPC (source).
- gRPC Overview - An overview at gRPC: Talk at Slack by Varun Talwar
- gRPC Design and Implementation - April 2016 talk at Stanford by Varun Talwar
- gRPC - boilerplate to high-performance scalable APIs - code.talks 2015 by Robert Kubis
- HTTP2 and gRPC - A simple introduction about HTTP2 and gRPC by Xin Gong Chang
- gRPC and Microservices - Overview of Google's open source microservices framework - gRPC, based on HTTP2 and protocol buffers. Presented at Golang Melbourne, June 2016 by Jonathan Gomez
- gRPC and Microservices - Golang Melbourne - June 2016 Go Hack Night by Jonathan Gomez
- Scalable Microservices with gRPC, Kubernetes, and Containers - DevFest Ukraine
- OpenAPI and gRPC Side by-Side - APIStrat Conference - Tim Burks
- Go+Microservices at Mercari - Taichi Nakashima at Go Conference 2017
- gRPC - RPC rebirth? - Presentation about gRPC at the 23. NetPonto community meeting in Porto by Luís Barbosa
- gifinator - A sample application demonstrating Kubernetes, gRPC, Go and cute Gophers demoed at Google GCP Next 2017
- Text to Speech server with gRPC and Kubernetes - justforfunc #12
- 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 Microservices Example - HTTP up front, Protobufs in the rear
- 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
- go-micro-services - An demonstration of Golang micro-services that expose a HTTP/JSON frontend and then leverages gRPC for inter-service communication
- 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.
- Making a Multiplayer Game With Go and gRPC - gRPC game example in Go. Source.
- 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
- Packaging Generated Code for gRPC Services - An article demonstrating a strategy on how to version and package gRPC libraries
- Migrating APIs from REST to gRPC at WePay - A blog post on migrating from REST to gRPC
- Website - Official website and documentation
- Third-Party Add-ons for Protocol Buffers - List of add-ons for Protocol Buffers in main github repository
- 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_validatorGo gRPC middleware.
- protolock - Protocol Buffer companion tool to
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.
- pbvm - Protocol Buffers Version Manager
- clang-format - Protocol Buffers formating tool Can be used to format on save in editor such as Visual studio code or IntelliJ.
- 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
Contributions welcome! Read the contribution guidelines first.
This work is licensed under a Creative Commons Attribution 4.0 International License.