# grpc/grpc-rust

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/grpc-grpc-rust).**

12,338 stars · 1,225 forks · Rust · MIT

## Links

- GitHub: https://github.com/grpc/grpc-rust
- Homepage: https://docs.rs/tonic
- awesome-repositories: https://awesome-repositories.com/repository/grpc-grpc-rust.md

## Topics

`async` `grpc` `proto` `rpc` `rust`

## Description

grpc-rust is a native gRPC framework for Rust designed for building high-performance remote procedure call clients and servers. It provides an asynchronous communication stack and a protocol buffers implementation for encoding, decoding, and generating type-safe code from service definitions.

The project enables the implementation of unary and bi-directional data streaming over the HTTP/2 protocol. It includes specialized support for gRPC-Web integration, allowing browser-based clients to communicate with services through protocol translation.

The infrastructure covers a broad range of distributed systems capabilities, including service reflection for runtime discovery, standardized health monitoring, and client-side load balancing. Security is handled through transport layer security with support for certificates and mutual authentication.

The toolkit includes automated code generation to produce strongly typed client and server stubs directly from protobuf interface definitions.

## Tags

### Networking & Communication

- [gRPC Implementations](https://awesome-repositories.com/f/networking-communication/polyglot-client-support/grpc-implementations.md) — Provides a native Rust implementation of the gRPC protocol for high-performance remote procedure call clients and servers.
- [gRPC Service Implementations](https://awesome-repositories.com/f/networking-communication/polyglot-client-support/grpc-implementations/grpc-service-implementations.md) — Implements high-performance gRPC clients for initiating remote procedure calls across a network. ([source](https://github.com/grpc/grpc-rust/tree/master/examples))
- [Bi-directional Streaming RPC](https://awesome-repositories.com/f/networking-communication/bi-directional-streaming-rpc.md) — Supports full-duplex bi-directional streaming of messages between clients and servers for real-time communication. ([source](https://github.com/grpc/grpc-rust#readme))
- [gRPC Client-Server Toolkits](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/distributed-computing/communication-protocols/websocket-implementations/grpc-client-server-toolkits.md) — Generates both client and server implementations from protobuf definitions to enable full-stack RPC communication. ([source](https://github.com/grpc/grpc-rust#readme))
- [gRPC Code Generators](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/distributed-computing/communication-protocols/websocket-implementations/websocket-clients-and-servers/grpc-code-generators.md) — Produces client and server implementations automatically from protobuf definitions to ensure type safety. ([source](https://github.com/grpc/grpc-rust/blob/master/README.md))
- [gRPC Client Implementations](https://awesome-repositories.com/f/networking-communication/grpc-client-implementations.md) — Provides the necessary infrastructure to build clients that invoke remote functions through a typed interface. ([source](https://github.com/grpc/grpc-rust/blob/master/.gitignore))
- [gRPC-Web Bridging](https://awesome-repositories.com/f/networking-communication/grpc-interfaces/grpc-web-bridging.md) — Translates gRPC-Web requests from browser-based clients into standard gRPC server requests. ([source](https://github.com/grpc/grpc-rust/blob/master/CHANGELOG.md))
- [HTTP/2 Support](https://awesome-repositories.com/f/networking-communication/http-2-support.md) — Implements the HTTP/2 protocol to support request multiplexing and concurrent data streaming.
- [Asynchronous Transport Stacks](https://awesome-repositories.com/f/networking-communication/network-transport-protocols/asynchronous-transport-stacks.md) — Ships an asynchronous communication stack featuring TLS encryption, payload compression, and custom request interceptors.
- [Type-Safe Remote Calls](https://awesome-repositories.com/f/networking-communication/remote-procedure-calls/type-safe-remote-calls.md) — Enforces type safety across distributed calls by defining RPC types via shared protobuf schemas. ([source](https://github.com/grpc/grpc-rust/tree/master/grpc-protobuf))
- [Connection Lifecycle Managers](https://awesome-repositories.com/f/networking-communication/connection-lifecycle-managers.md) — Manages the connection lifecycle, including keep-alive settings, timeouts, and lazy connection establishment. ([source](https://github.com/grpc/grpc-rust/blob/master/CHANGELOG.md))
- [Reflection Services](https://awesome-repositories.com/f/networking-communication/grpc-interfaces/reflection-services.md) — Exposes service metadata at runtime to allow clients to discover available methods and types.
- [Client-Side Load Balancing](https://awesome-repositories.com/f/networking-communication/load-balancers/client-side-load-balancing.md) — Provides logic to distribute outgoing requests across multiple backend endpoints to optimize reliability.
- [Network Data Compression](https://awesome-repositories.com/f/networking-communication/network-data-compression.md) — Provides utilities to compress gRPC network payloads to optimize bandwidth and reduce transmission size. ([source](https://github.com/grpc/grpc-rust/blob/master/CHANGELOG.md))
- [Traffic Distribution](https://awesome-repositories.com/f/networking-communication/traffic-shaping/scaling/traffic-distribution.md) — Balances network traffic across multiple backend endpoints to optimize resource utilization and reliability. ([source](https://github.com/grpc/grpc-rust#readme))

### Software Engineering & Architecture

- [Protobuf Stub Generators](https://awesome-repositories.com/f/software-engineering-architecture/interface-definition-languages/type-safe-code-generators/protobuf-stub-generators.md) — Automatically produces strongly typed client and server stubs from protobuf definitions for type-safe communication.
- [Protocol Buffer Implementations](https://awesome-repositories.com/f/software-engineering-architecture/protocol-buffer-implementations.md) — Includes a full protocol buffers implementation for encoding and decoding messages from service definitions.
- [Interceptor Middleware](https://awesome-repositories.com/f/software-engineering-architecture/interceptor-middleware.md) — Implements a pluggable middleware pipeline to process requests and responses for cross-cutting concerns.
- [Request Interceptors](https://awesome-repositories.com/f/software-engineering-architecture/request-interceptors.md) — Includes request and response interceptors for implementing cross-cutting concerns like authentication and logging. ([source](https://github.com/grpc/grpc-rust/blob/master/CHANGELOG.md))
- [Service Request Routing](https://awesome-repositories.com/f/software-engineering-architecture/service-request-routing.md) — Directs incoming gRPC requests to the appropriate service implementation via a multiplexing router. ([source](https://github.com/grpc/grpc-rust/blob/master/CHANGELOG.md))

### Data & Databases

- [Binary Serialization Codecs](https://awesome-repositories.com/f/data-databases/binary-serialization-codecs.md) — Provides pluggable encoders and decoders for translating high-level types into binary wire formats.
- [Protobuf Serialization](https://awesome-repositories.com/f/data-databases/protobuf-serialization.md) — Uses protocol buffers for efficient binary serialization and deserialization of messages. ([source](https://github.com/grpc/grpc-rust/tree/master/tonic-prost))
- [RPC](https://awesome-repositories.com/f/data-databases/database-error-handling/error-metadata-extraction/rpc.md) — Allows attaching and extracting detailed error metadata to programmatically communicate specific failure reasons. ([source](https://github.com/grpc/grpc-rust/blob/master/tonic-types))

### Development Tools & Productivity

- [Build-Time Code Generation Engines](https://awesome-repositories.com/f/development-tools-productivity/build-time-code-generators/build-time-code-generation-engines.md) — Integrates gRPC code generation into the build process to keep types synchronized with protobuf definitions. ([source](https://github.com/grpc/grpc-rust/tree/master/grpc))
- [Interface Definition Code Generation](https://awesome-repositories.com/f/development-tools-productivity/interface-definition-code-generation.md) — Automatically generates client stubs and server skeletons from protobuf interface definition files. ([source](https://github.com/grpc/grpc-rust/tree/master/grpc))
- [Protobuf Code Generators](https://awesome-repositories.com/f/development-tools-productivity/protobuf-code-generators.md) — Provides automated code generation to produce strongly typed client and server stubs directly from protobuf interface definitions.
- [Service Stub Generators](https://awesome-repositories.com/f/development-tools-productivity/static-type-generators/service-stub-generators.md) — Provides automated generation of client and server stubs from protobuf definitions for type-safe network communication. ([source](https://github.com/grpc/grpc-rust/tree/master/grpc-protobuf-build))
- [API Error Handling](https://awesome-repositories.com/f/development-tools-productivity/api-error-handling.md) — Implements a detailed error model to convey complex failure states beyond simple numeric status codes. ([source](https://github.com/grpc/grpc-rust/blob/master/CHANGELOG.md))

### DevOps & Infrastructure

- [gRPC Service Generators](https://awesome-repositories.com/f/devops-infrastructure/cicd-pipeline-automation/core-build-engines/build-toolchains/compile-time-code-generators/grpc-service-generators.md) — Automatically generates gRPC service source code from protocol definitions during the build process. ([source](https://github.com/grpc/grpc-rust/tree/master/protoc-gen-rust-grpc))
- [RPC Infrastructure Toolkits](https://awesome-repositories.com/f/devops-infrastructure/rpc-infrastructure-toolkits.md) — Provides distributed systems capabilities such as service reflection, standardized health monitoring, and client-side load balancing.

### Programming Languages & Runtimes

- [Async-Await Flow Control](https://awesome-repositories.com/f/programming-languages-runtimes/async-await-flow-control.md) — Implements a non-blocking asynchronous execution model to handle concurrent RPC calls efficiently.

### Security & Cryptography

- [gRPC and HTTP TLS Securings](https://awesome-repositories.com/f/security-cryptography/grpc-security/grpc-and-http-tls-securings.md) — Encrypts communication between clients and servers using TLS with configurable certificates and mutual authentication. ([source](https://github.com/grpc/grpc-rust/blob/master/CHANGELOG.md))
- [SSL/TLS Connection Security](https://awesome-repositories.com/f/security-cryptography/ssl-tls-connection-security.md) — Secures network traffic using transport layer security to ensure data privacy and peer authenticity.
- [TLS Traffic Encryption](https://awesome-repositories.com/f/security-cryptography/tls-traffic-encryption.md) — Secures communication channels between clients and backend services using SSL/TLS encryption. ([source](https://github.com/grpc/grpc-rust#readme))
- [Transport Layer Security](https://awesome-repositories.com/f/security-cryptography/transport-layer-security.md) — Provides transport-level encryption and authentication for secure network communication channels. ([source](https://github.com/grpc/grpc-rust/blob/master/README.md))
- [API Access Security](https://awesome-repositories.com/f/security-cryptography/api-access-security.md) — Secures API access using encryption and authentication tokens to ensure authorized communication. ([source](https://github.com/grpc/grpc-rust/tree/master/examples))
- [API Request Authentication](https://awesome-repositories.com/f/security-cryptography/identity-access-management/authentication-strategies/machine-and-protocol-identity/api-machine-authentication/api-request-authentication.md) — Implements authentication processes for API requests to ensure only authorized clients can access the server. ([source](https://github.com/grpc/grpc-rust/blob/master/examples))
- [Certificate Trust Validation](https://awesome-repositories.com/f/security-cryptography/identity-servers/certificate-trust-validation.md) — Validates server identities using programmable verifiers during the TLS connection handshake. ([source](https://github.com/grpc/grpc-rust/tree/master/tonic-build))
- [Request Size Limiters](https://awesome-repositories.com/f/security-cryptography/request-size-limiters.md) — Enforces maximum message and header sizes to protect server resources from exhaustion. ([source](https://github.com/grpc/grpc-rust/blob/master/CHANGELOG.md))
- [Secure Network Communication](https://awesome-repositories.com/f/security-cryptography/secure-network-communication.md) — Implements secure network communication using TLS encryption and certificates to protect gRPC traffic.

### System Administration & Monitoring

- [Service Health Monitoring](https://awesome-repositories.com/f/system-administration-monitoring/service-health-monitoring.md) — Provides a standardized health checking service to report the operational status of the server to monitoring tools. ([source](https://github.com/grpc/grpc-rust/blob/master/CHANGELOG.md))

### Web Development

- [Request Metadata Attachment](https://awesome-repositories.com/f/web-development/api-request-configurations/request-metadata-attachment.md) — Supports attaching custom key-value metadata to requests and responses for out-of-band information like tokens. ([source](https://github.com/grpc/grpc-rust#readme))
- [Error Handling](https://awesome-repositories.com/f/web-development/error-handling.md) — Processes detailed error metadata between clients and servers to provide rich context for failures. ([source](https://github.com/grpc/grpc-rust/blob/master/examples))
- [Transport Parameter Tuning](https://awesome-repositories.com/f/web-development/http-2-transport-layers/transport-parameter-tuning.md) — Allows adjustment of low-level HTTP/2 transport settings such as maximum frame and header table sizes. ([source](https://github.com/grpc/grpc-rust/tree/master/tonic-build))
- [gRPC-Web Client Support](https://awesome-repositories.com/f/web-development/web-infrastructure-deployment/web-clients/grpc-web-client-support.md) — Handles requests from web-based clients directly on the server, removing the need for an external proxy. ([source](https://github.com/grpc/grpc-rust/tree/master/tonic-web))
