CI that keeps up
← Changelog
v0.21.1 · May 29, 2026

Cross-language interfaces

A module can now accept any object that has the functions it needs, instead of one specific type. A deploy module can take anything with a container() function that returns a Container, so modules written in different languages can each hand it their own object and stay type-checked. Interfaces now work in every Dagger SDK, not just the core three.

You define interfaces in Go, Python, and TypeScript, and consume them from PHP, Java, .NET, Elixir, and Rust. Dagger implements them as real GraphQL interfaces using the standard ID model, which means less adapter code and modules that are easier to share across languages.