When we built the guardian service for kairon.trade, we had the usual dilemma: ship a gRPC API for internal services, or a REST/JSON API for browser clients. Both have merit. Running two separate servers doubles the surface area.
Connect-RPC solved this cleanly.
What Connect-RPC does
Connect is a protocol that runs on HTTP/1.1 and HTTP/2. A single handler can serve:
gRPC clients (HTTP/2, binary protobuf)
gRPC-web clients (HTTP/1.1, protobuf or JSON)
Connect clients (HTTP/1.1 or HTTP/2, JSON or protobuf)
Content-type negotiation happens transparently. The handler code is protocol-agnostic.
The setup
kairon-guardian is written in Rust. We use the connectrpc crate to expose services defined in .proto files as both gRPC and REST/JSON endpoints on a single :9000 listener.
No Envoy. No sidecar. No port split.…