dagger

dagger: Automate Software Delivery Across Environments

Dagger is a Go-based automation engine for building, testing, and shipping software with reusable, programmable workflows. It suits teams that want the same containerized delivery tasks to run locally, in CI, or in the cloud.

Stars
16.3k
Forks
933
Stars, last 8 days
+19

Our take

Health score

74/100

How it is scored
Activity
91
Community
93
Issues
47
Pull requests
63

+19 stars in the last 8 days

  • Releases more often than 93% of the projects we track
  • Merges more pull requests than 91% of the projects we track
  • More contributors than 77% of the projects we track

Overview

Dagger is an automation engine for defining and running software delivery workflows. It addresses the gap between local scripts and CI-specific configuration by letting teams express build, test, and deployment tasks as programmable workflows that can run across environments.

It is aimed at developers and platform teams who want repeatable, composable automation with containerized tools and incremental caching. Its system API and language SDKs let workflows be written in application code rather than being limited to shell scripts or proprietary YAML.

Key Features

  • Run container-based workflows locally, in CI, or in the cloud, with a Linux container runtime.
  • Compose typed operations for containers, filesystems, secrets, Git repositories, and network tunnels through a system API.
  • Write workflows using SDKs for Go, Python, TypeScript, PHP, Java, .NET, Elixir, and Rust.
  • Reuse custom typed objects and functions across modules and SDK language boundaries.
  • Cache operations by their inputs, so changes can trigger only affected work.
  • Inspect workflow execution with OpenTelemetry traces, logs, metrics, and the CLI's live interface.

Use Cases

  • A development team can run the same build and test workflow on laptops and CI, reducing environment-specific differences.
  • Platform engineers can create reusable automation modules for multiple codebases instead of maintaining duplicated pipeline configuration.
  • A team can add content-based caching to containerized builds and tests, especially when workflows are rerun frequently.
  • Developers can trace a failing or slow workflow through operation-level telemetry rather than relying only on unstructured logs.

Getting Started

Install the CLI with Homebrew:

brew install dagger/tap/dagger

See the README and documentation for setup and usage details.

Alternatives

  • argo-workflows: Argo Workflows orchestrates containerized jobs on Kubernetes, while Dagger is designed to run reusable workflows locally, in CI, or in the cloud.
  • gitbundle: GitBundle combines code hosting with workflow automation and a separate runner, while Dagger focuses on programmable, containerized software delivery workflows.
ProjectLanguageLicenseStarsStatus
daggerGoApache-2.016.3kNot checked yet
argo-workflowsGoApache-2.017kActive
gitbundleSlim–57Quiet

Considerations

  • A Linux container runtime is required. On macOS and Windows, the README describes using Docker Desktop or similar products.
  • Workflow code and its container dependencies may require an initial investment to model and maintain; Dagger is an automation platform, not a ready-made pipeline for a particular project.
  • The repository reports 211 open issues. Review the project and its issue tracker to assess whether it fits your requirements.
  • The repository is not archived, and its license is Apache-2.0.

Found this useful?

Share it with someone who would like dagger.

Comparisons