The wire
Connect's unary JSON protocol is the default because it is the only gRPC-family protocol that is honest HTTP — real status codes, a JSON error body, no trailers, and reproducible with curl:
POST /user.v1.UserService/GetUser
Content-Type: application/json
Connect-Protocol-Version: 1
Connect-Timeout-Ms: 5000
{"id":"u_1"}Your Zod schemas stay the source of truth. No .proto is parsed at runtime and
no protobuf runtime is installed.
Already running grpc-gateway with transcoded REST paths? You need no adapter at all — that is the built-in
httptransport.