https://github.com/otwieracz/clj-grpc

clj-grpc is a Clojure library that wraps the official gRPC Java bindings, making it possible to define and serve gRPC services in idiomatic Clojure without wrestling with Java interop boilerplate. It provides a small set of macros and functions that handle service registration, RPC method definition, and protobuf message construction while staying close to the patterns described in the official gRPC Java tutorial.

The design philosophy is deliberately minimal. Rather than building a new abstraction layer on top of gRPC, clj-grpc keeps users aligned with the standard Java gRPC approach. Each gRPC service maps to a single Clojure namespace, and the implement-grpc-service macro wires up the generated protobuf classes automatically. The defrpc macro defines individual RPC methods, and on-next handles building response messages from plain Clojure maps, including automatic kebab-case to camelCase key conversion.

The library integrates with the danielsz/system component framework, providing a GrpcServer component that can be dropped into a system definition and will automatically serve all registered gRPC services. It also works standalone for simpler setups. Both unary and server-streaming RPC methods are supported.