A tiny ConnectRPC gateway
Conny translates REST, gRPC, gRPC-Web, Connect, and MCP requests into whichever protocol your backend speaks — Connect, gRPC, or gRPC-Web — using a protobuf descriptor. One small binary out front, no config files, no sidecars, no control plane.
$ conny -d descriptor.pb http://localhost:8080REST / JSONgRPCgRPC-WebConnectMCP
→
conny
→
ConnectgRPCgRPC-Web
Install
$ brew install connysh/tap/conny# macOS / Linux — from GitHub Releases
$ curl -fsSL https://github.com/connysh/conny/releases/latest/download/conny_$(uname -s)_$(uname -m).tar.gz | tar xz$ docker run -v ./descriptor.pb:/descriptor.pb ghcr.io/connysh/conny \
-d /descriptor.pb http://backend:8080$ go install github.com/connysh/conny/cmd/conny@latestDescriptor-driven
No route config. Point conny at a buf build descriptor and REST paths, methods, and JSON mappings come from your protos.
One small binary
A single static Go binary — drop it in front of your backend, in a container, or in a Kubernetes pod.
MCP for agents
--mcp serves an MCP endpoint at /mcp — unary RPCs become tools, with schemas and docs from the same descriptor.
Embeddable
Also a Go library: mount the gateway's http.Handler in your own server and middleware stack.