gRPCServer.jl
A production-ready gRPC server in Julia
Four RPC patterns. Three backends. One API.
All four RPC patterns
Unary, server-streaming, client-streaming, and bidirectional streaming over one consistent API.
Pluggable HTTP/2 backends
HTTP.jl is the production-ready default, with two experimental backends behind a pluggable interface.
Hardened for production
Over a million test assertions across six CI platform combos, nanosecond dispatch benchmarks, and deadline, shutdown, and mTLS hardening.
IDE-first code generation
One protojl run emits message types and registration functions designed for IDE code completion and suggestions.
Middleware interceptors
Logging, metrics, timeout, and recovery interceptors out of the box, plus a clean hook to write your own.
TLS and mTLS
TLSConfig covers certificates, client-CA mTLS, and ALPN.
Health + reflection built in
Standard grpc.health.v1 checking and server reflection let grpcurl and standard tooling discover your services.
Wire efficiency
Strict gzip and deflate request decompression plus zero-copy framing for large payloads.
What it is
gRPCServer.jl is a native Julia gRPC server: the default HTTP.jl backend serves unary and streaming RPCs out of the box, with TLS/mTLS, interceptors, health, and reflection built in. One protojl run generates message types, client stubs, and server registration functions. PureHTTP2 and nghttp2 are optional pluggable backends.
Getting started
- Quick Start — serve your first RPC in a few lines
- Code Generation —
protojlend to end - HTTP/2 Backends — default HTTP.jl, opt-in PureHTTP2/nghttp2
Related packages
gRPCClient.jl is the sibling client package; load both and a single protojl run emits client stubs alongside the server registration functions.
Installation
using PkgPkg.add("gRPCServer")License
gRPCServer.jl is licensed under the MIT License — see LICENSE.md.