docs/current_docs/extending/index.mdx
The Dagger API is extensible and shareable by design.
Both approaches let you access Dagger features for container operations, secret management, and more.
In addition to providing a set of core functions and types, the Dagger API can be extended with custom Dagger Functions and custom types. This is achieved by creating (or installing) Dagger modules. You are encouraged to write your own Dagger modules and share them with others.
When a Dagger module is loaded, the Dagger API is dynamically extended with new Dagger Functions served by that module. So, after loading a Dagger module, an API client can now call all of the original core functions, plus the new Dagger Functions provided by that module.
Dagger also lets you import and reuse modules developed by your team, your organization or the broader Dagger community. The Daggerverse is a free service run by Dagger, which indexes all publicly available Dagger modules and Dagger Functions, and lets you easily search and consume them.
When using a Dagger SDK in your application:
dagger runThe following SDKs are available for embedding Dagger into your application:
Here is a quick summary of differences between these two approaches.
| Capability | Dagger modules | Custom applications |
|---|---|---|
| Pre-initialized Dagger API client | ✅ | 🚫 |
| Direct host access | 🚫 | ✅ |
| Direct third-party module access | ✅ | 🚫 |
| Cross-language interoperability | ✅ | 🚫 |