Docs/Overview

gRPC-GraphQL Gateway

Transform your gRPC microservices into a unified GraphQL API with zero GraphQL code. This gateway dynamically generates GraphQL schemas from protobuf descriptors and routes requests to your gRPC backends via Tonic, providing a seamless bridge between gRPC and GraphQL ecosystems.

Features

Core Capabilities

Federation & Enterprise

Developer Experience

Production Ready

Why gRPC-GraphQL Gateway?

If you have existing gRPC microservices and want to expose them via GraphQL without writing GraphQL resolvers manually, this gateway is for you. It:

  1. Reads your protobuf definitions - Including custom GraphQL annotations
  2. Generates a GraphQL schema automatically - Types, queries, mutations, subscriptions
  3. Routes requests to your gRPC backends - With full async/await support
  4. Supports federation - Build a unified supergraph from multiple services

Quick Example

rust
use grpc_graphql_gateway::{Gateway, GrpcClient};

const DESCRIPTORS: &[u8] = include_bytes!(concat!(env!("OUT_DIR"), "/descriptor.bin"));

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let gateway = Gateway::builder()
        .with_descriptor_set_bytes(DESCRIPTORS)
        .add_grpc_client(
            "greeter.Greeter",
            GrpcClient::builder("http://127.0.0.1:50051").connect_lazy()?,
        )
        .build()?;

    gateway.serve("0.0.0.0:8888").await?;
    Ok(())
}

That's it! Your gateway is now running at:

Getting Started

Ready to dive in? Start with the Installation guide.

↑ ↓ navigate ↵ openDocumentation, at your fingertips.