Hi everyone! ![]()
I’m excited to share a new native Julia gRPC server library I’m working on: gRPCServer.jl.
Repository: https://github.com/s-celles/gRPCServer.jl
(Currently unregistered — and still in development — feedback welcome!)
What is gRPCServer.jl?
gRPCServer.jl is a server‑side gRPC framework written in pure Julia. It makes it easy to serve gRPC APIs from Julia applications using Protocol Buffers for message serialization (via ProtoBuf.jl). This fills an important gap — while client‑side gRPC support exists in packages like gRPCClient.jl, the server story has been relatively underdeveloped. (Julia Packages)
Key features include:
All RPC Patterns — Unary, server streaming, client streaming, bidirectional streaming
Type‑safe dispatch leveraging Julia’s type system
High performance – type‑stable handlers with minimal allocations
TLS/mTLS support for secure communication (to be implemented)
Reflection & health checks
Interceptors for logging, auth, metrics, etc.
Julia‑idiomatic interfaces and extensive docstrings
Quick Example
Here’s how to define and run a simple gRPC server:
using ProtoBuf, gRPCServer
include("generated/helloworld.jl")
using .helloworld
function say_hello(ctx::ServerContext, req::HelloRequest)::HelloReply
HelloReply(message="Hello, $(req.name)!")
end
struct GreeterService end
function gRPCServer.service_descriptor(::GreeterService)
ServiceDescriptor(
"helloworld.Greeter",
Dict(
"SayHello" => MethodDescriptor("SayHello", MethodType.UNARY,
"helloworld.HelloRequest",
"helloworld.HelloReply",
say_hello)
),
nothing
)
end
server = GRPCServer("127.0.0.1", 50051)
register!(server, GreeterService())
run(server)
You can then test it locally:
grpcurl -plaintext -d '{"name":"Julia"}' localhost:50051 helloworld.Greeter/SayHello
Why This Package?
Many Julia tools and ecosystems lack a complete gRPC server solution. While there are client libraries (e.g., gRPCClient.jl for making requests), the server side has been largely missing or experimental until now. This package aims to provide:
- A gRPC server for Julia
- Secure and extensible infrastructure for RPC
- A foundation for building distributed and service‑oriented Julia applications
Requirements
- Julia 1.10+
ProtoBuf.jlfor protocol buffers support (Julia Packages)
Feedback, Collaboration & Registration
This package is currently unregistered, and I’d love to get early user feedback, feature requests, and collaborators! If you find this useful or want to help polish it for registration on the General registry — please comment below.
Repository: https://github.com/s-celles/gRPCServer.jl
Thanks, and happy coding! ![]()