My understanding is that you have a set of core functionality that is entirely optional so you only run what you want and need. These features are defined at a high level like state management (persistence) or an event bus.
Dapr provides a unified API that sits on top of all this and allows you to swap out your event bus system from say Kafka to Google PubSub without any code changes.
But under the hood everything seems to operate via gRPC calls.
Edit: I just came across this link which puts together a solid explanation of what Dapr is and how it works https://thenewstack.io/how-microsofts-dapr-simplifies-develo...
I'm not saying it's nefarious, it's kind of refreshing to let the project succeed on its own merits.
From what I’ve seen I think the abstractions they have focused on make a lot of sense and do a LOT to reduce the complexity of my own applications from both a code and operational point of view.
I’m excited to actually try it and see what the experience is like for someone coming strictly from the monolith world.