Kairo uses Guice for dependency injection. There are other Kotlin-specific DI options out there like Koin and Kodein, but Guice is quite mature and works just fine. It also supports circular dependencies, which is useful for some architectures.
kairo-dependency-injection
makes Guice available,
along with some utilities to make its use more idiomatic.
// build.gradle.kts
dependencies {
implementation("kairo:kairo-dependency-injection:$kairoVersion")
}