Dagger Documentation
What is Dagger?​
Dagger is an integrated platform to orchestrate the delivery of applications to the cloud from start to finish. The Dagger Platform includes the Dagger Engine, Dagger Cloud, and the Dagger SDKs.
What is the Dagger Engine?​
The Dagger Engine is a programmable CI/CD engine that runs your pipelines in containers.
Programmable​
Develop your CI/CD pipelines as code, in the same programming language as your application.
Runs your pipelines in containers​
The Dagger Engine executes your pipelines entirely as standard OCI containers. This has several benefits:
- Instant local testing
- Portability: the same pipeline can run on your local machine, a CI runner, a dedicated server, or any container hosting service.
- Superior caching: every operation is cached by default, and caching works the same everywhere
- Compatibility with the Docker ecosystem: if it runs in a container, you can add it to your pipeline.
- Cross-language instrumentation: teams can use each other's tools without learning each other's language.
What is Dagger Cloud?​
Dagger Cloud complements the Dagger Engine with a production-grade control plane. Features of Dagger Cloud include pipeline visualization, operational insights, and distributed caching.
Who is it for?​
Dagger may be a good fit if you are...
- A developer wishing your CI pipelines were code instead of YAML.
- Your team's "designated devops person", hoping to replace a pile of artisanal scripts with something more powerful.
- A platform engineer writing custom tooling, with the goal of unifying continuous delivery across organizational silos.
- A cloud-native developer advocate or solutions engineer, looking to demonstrate a complex integration on short notice.
How does it work?​
- Your program imports the Dagger SDK in your language of choice.
- Using the SDK, your program opens a new session to a Dagger Engine: either by connecting to an existing engine, or by provisioning one on-the-fly.
- Using the SDK, your program prepares API requests describing pipelines to run, then sends them to the engine. The wire protocol used to communicate with the engine is private and not yet documented, but this will change in the future. For now, the SDK is the only documented API available to your program.
- When the engine receives an API request, it computes a Directed Acyclic Graph (DAG) of low-level operations required to compute the result, and starts processing operations concurrently.
- When all operations in the pipeline have been resolved, the engine sends the pipeline result back to your program.
- Your program may use the pipeline's result as input to new pipelines.
Getting started​
To get started with the Dagger Engine, use our Dagger Engine quickstart, which walks you through the basics of creating and using a pipeline with the Dagger SDKs. Alternatively, choose an SDK and follow that SDK's getting started guide.
To use Dagger in production, learn about Dagger Cloud and use our Dagger Cloud guide to connect Dagger with your CI provider or CI tool.
Which SDK should I use?​
If you are... | then you should... |
---|---|
a Go developer | Use the Go SDK |
a Python developer | Use the Python SDK |
a TypeScript/JavaScript developer | Use the Node.js SDK |
looking for an excuse to learn Go | Use the Go SDK |
looking for an excuse to learn Python | Use the Python SDK |
looking for an excuse to learn TypeScript/JavaScript | Use the Node.js SDK |
waiting for your favorite language to be supported | Let us know which one, and we'll notify you when it is ready |
a GraphQL veteran | Use the GraphQL API |
a fan of shell scripts | Use the CLI |
Not sure which SDK to choose 🤷 | In doubt, try the Go SDK. It does not require advanced Go knowledge, and what you learn will transpose well to future SDKs |