Dagger: The Automation Engine for Programmable Software Delivery

Summary
Dagger is an open-source automation engine designed to build, test, and ship any codebase reliably and at scale. It transforms your software delivery into a programmable, local-first, repeatable, and observable process. With SDKs in multiple languages, Dagger offers a modern alternative to traditional shell scripts and YAML-based CI/CD.
Repository Info
Tags
Click on any tag to explore related repositories
Introduction
Dagger is a powerful automation engine that redefines how software is built, tested, and shipped. It provides a complete execution engine and system API, allowing developers to automate complex software delivery workflows with unprecedented programmability. Dagger runs consistently across your local machine, CI server, or directly in the cloud, requiring only a container runtime like Docker.
Installation
Getting started with Dagger is straightforward. You can install it using Homebrew on macOS and Linux:
brew install dagger/tap/dagger
For other installation methods and detailed instructions, please refer to the official documentation.
Examples
Dagger empowers you to define your CI/CD pipelines as code using native SDKs in 8 languages, including Go, Python, and TypeScript. This programmability allows for complex logic, reusable modules, and full type safety, moving beyond the limitations of shell scripts and proprietary YAML. For instance, you can define functions to build a Docker image, run tests, and deploy an application, all orchestrated within a Dagger pipeline.
Why Use Dagger?
Dagger offers several compelling advantages for modern software delivery:
- Programmable: Replace brittle shell scripts and restrictive YAML with a complete execution engine and system API. Dagger provides SDKs for 8 languages, an interactive REPL, and a rich ecosystem of reusable modules, making your delivery pipelines truly programmable.
- Local-first: Automate tasks once and run them reliably anywhere. Dagger ensures identical behavior on your laptop, CI server, or cloud infrastructure, with the only dependency being a container runtime.
- Repeatable: Tools run in isolated containers, orchestrated by sandboxed functions. Host dependencies are explicit, artifacts are built just-in-time, and every operation is incremental by default, ensuring trustworthy and consistent outputs.
- Observable: Gain deep insights into your workflows. Every operation emits a full OpenTelemetry trace, enriched with granular logs and metrics. Visualize traces directly in the terminal or a web view, enabling immediate debugging of complex workflows.
Links
- Documentation: https://docs.dagger.io
- Quickstart: https://docs.dagger.io/quickstart
- Community Discord: https://discord.gg/dagger-io
- GitHub Discussions: https://github.com/dagger/dagger/discussions
- Contributing: https://github.com/dagger/dagger/blob/main/CONTRIBUTING.md