In client streaming, the client sends multiple messages over a stream and waits for a single response from the server. Next, we have stream client interceptors, which intercept streaming RPCs before the client starts sending messages: Stream server interceptor: The gRPC framework owns the stream, but you can wrap the ServerStream to modify the context before it reaches the handler.