@startuml

node "Language Plugin" as plugin {
	interface gRPC as langhost

	component "Language SDK" as sdk
}

node "Pulumi CLI" as cli {
	interface gRPC as resmon

	component "Deployment engine" as engine
	component "State storage backend" as backend
	component "Code generators" as codegen

	resmon - engine

	sdk -down-> resmon
	engine -up-> langhost
	engine -right-> backend
}

node "Resource Providers" as providers {
	interface gRPC as provider

	component "Package schemas" as schemas
	component "Multi-language components" as mlcs
	component "Cloud resources" as resources

	provider - mlcs
	provider - resources

	engine -down-> provider
	mlcs -up-> resmon
}

@enduml