Awesome Open Source
Awesome Open Source

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 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 Ecosystem - gRPC Ecosystem that complements gRPC
  • gRPC contrib - Known useful contributions around github
  • 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
  • httpyac - a command line client for executing integration tests for all kinds of requests (gRPC, HTTP, MQTT, Websocket).
  • 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
  • gWhisper - Client with interactive tab-completion (uses reflection) and human readable format
  • grpcdebug - Debugs serving gRPC applications with tools like channel trace info, xDS config dump, and health checking

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 and gRPC-web 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.
  • vscode-httpyac - A VSCode extension which supports sending all kinds of requests (gRPC, HTTP, MQTT, Websocket)
  • 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.
  • Kreya - A gRPC and gRPC-web client supporting environments, templating, authentication schemes and file based syncing.
  • Plumber - Another one GUI for GRPC requests (reflection only)
  • Fint - Create, run, manage performance tests and functional tests cases for gRPC service in a single (commercial) tool
  • Protocall - A browser-based gRPC & protobuf API client. Integrates with Github and automatically resolves all proto imports with no manual configuration.
  • Grip - Native macOS client for interacting with gRPC services
  • ezy - desktop gRPC client.

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.
  • camouflage - Camouflage is a backend mocking tool for HTTP, gRPC and Websockets protocols.
  • Mediator - Cross-platform GUI gRPC debugging proxy like charles but design for gRPC.
  • grpc_bench - A suite of gRPC benchmarks for different technologies.
  • grpcdump - Tool for capture and decode GRPC messages from ethernet traffic only for Linux
  • nosymouse - Saas tool to functional, perfomance and secure testing gRPC

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
  • protoc-gen-hbs - Fast and easy protobuf generation with handlebars and some helpers
  • grpcson - An easy to use proxy which translates JSON HTTP requests to gRPC calls with web ui
  • rk-grpc - Middleware and bootstrapper library for gRPC with logging, metrics, auth, tracing etc.
  • PropaneDB - A Protocol Buffers database with gRPC API and Golang driver.
  • APISIX - An api gateway that supports gRPC, HTTP(s) to gRPC and gRPC web request proxying.

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.
  • 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
  • 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

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
  • grpc-reflection-js gRPC Reflection client for JS

Java

  • 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
  • protoc-gen-java-optional - A Java Protoc plugin extending generated java classes with null safe setOrClear and getOptional methods.

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 Django 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!)

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

  • 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.
  • 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 - Protocol buffers and RPC for Node.js and the Web Browser. Pure TypeScript.
  • 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.

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
  • sisyphus - Modern gRPC back-end development framework based on Kotlin/Spring Boot with Message DSL/HTTP transcoding/Google AIP support.

Perl

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

C++

Ballerina

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.
  • 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.
  • intellij-protobuf-plugin - IntelliJ-based IDEs Protobuf Language Plugin that provides Protobuf language support.
  • GenDocu - gRPC Documentation and SDK generator as a Service.
  • protolint - A pluggable linter and fixer to enforce Protocol Buffer style and conventions.

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
  • Capn 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.

Related Awesome Lists
Top Programming Languages
Top Projects

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Command Line (131,591
Http (30,205
Gui (16,396
Awesome List (13,642
Grpc (5,177
Protocol Buffers (4,261
Postman (3,322