For example, I miss an easy way to stuff all my (and my team's) protobufs in a registry and a tool that autodetects what schema a protobuf is (or leverages the type in Any), so that I can avoid passing complicated path flags to all these tools that decode protos.
Any ideas?
(If you want a "registry," the better approach would be to have something that uses all the services as dependencies to consolidate their protos.)
2) Going along with this approach, gRPC has a reflection service; most server implementations can expose this (I have personally done it with Tonic/Rust but I know Golang and Java bindings, probably Ruby and others, support it). If you use something like gRPCurl against a server with reflection, the only "path flags" you have to worry about are, like... just the method names. It can't really get more terse than it is with gRPCurl and gRPC reflection, though autocomplete would be nice to have I guess.
The basic intent of gRPC - indeed, its advantage over JSON - is to promote composable, decoupled services. Unless you're monorepoing all your services, putting all protos in a "registry" type repo, that everything depends on, only makes things harder for everyone that needs to do things with those protos.
https://buf.build/blog/buf-curl/
Didn't dig deeper to see if the bud tooling can help me deciding protobufs laying around when it's not about a grpc call
The introspection could be a little slow if the server was far away (it added a couple round trips) but the ability to avoid knowing where the schemas were was invaluable. (I wonder if there could have also been some sort of caching to make it a bit better).
gRPCurl, Like cURL, but for gRPC: Command-line tool for interacting with gRPC servers
https://github.com/fullstorydev/grpcurl
The readme in your link mentions how they are different:
> How is protocurl different from grpccurl? grpccurl only works with gRPC services with corresponding endpoints. However, classic REST HTTP endpoints with binary Protobuf payloads are only possible with protocurl.
For my purposes, gRPCurl was a good fit. Maybe to others as well.
Unfortunately, those options are poorly documented, so it took me some time to figure that out.