Building a gRPC service, server tells all clients "not implemented" for this method

I’m building a gRPC server and it’s using mutual tls. Right now, it’s configured just to listen for heartbeat messages from clients as a litmus test. When a client, either one written in Rust or the grpcurl CLI, hit my application, they get the following error message:

(from Rust)

Error: Status { code: Unimplemented, message: "Operation is not implemented or not supported/enabled in this service", metadata: MetadataMap { headers: {"content-length": "0", "content-type": "application/grpc+proto", "date": "Tue, 25 May 2021 13:42:25 GMT", "server": "Cowboy"} } }

This is the reply, so the content length of the reply is 0, my message to the server was populated.

Here’s the line in the protobuf file that’s relevant:

service HostHandshake {
    rpc heartBeat(ProviderHeartBeat) returns (Empty);

And here’s my server definition (which is named by an endpoint):

    @spec heart_beat(HostCore.Capcom.ProviderHeartBeat.t) :: Wasmcloud.Capcom.Empty.t
    def heart_beat(hb) do
        IO.inspect hb

Anybody know why my stuff is showing up as not implemented? What wiring am I missing?

I am not at all familiar with gRPC but here’s a SO thread: go - Getting Unimplemented desc = unknown service error gRPC - Stack Overflow

But I am not well-informed so just a shot in the dark.