dagger is a free, open source cloud infrastructure management project written in Go and released under Apache-2.0. It has 16,261 GitHub stars, 924 forks and 156 open issues, and was last pushed 5 hours ago. On this registry it ranks #10 of 43 tracked projects in Cloud Infrastructure Management, with 5 head-to-head comparisons available. It gained 11 stars over the last 3 tracked days.

What is dagger?

What it is

Dagger is an open-source automation engine for software delivery, written in Go and released under the Apache-2.0 license. It builds, tests and ships any codebase, and it runs locally, inside a CI server, or directly in the cloud. The project lives in the cloud infrastructure and CI/CD ecosystem, where it occupies the space normally filled by shell scripts and proprietary pipeline YAML. It has been developed for roughly seven years and carries a substantial community footprint, with more than sixteen thousand stars and over nine hundred forks on GitHub.

The concrete problem Dagger solves is the gap between automation that works on one machine and automation that works everywhere. Shell scripts and vendor-specific YAML pipelines are brittle: they depend on host tooling, they behave differently on a laptop than in CI, and they are hard to debug when they fail. Dagger replaces that with a programmable system API, sandboxed container execution, and content-addressed caching, so the same automation definition produces the same result on a developer machine, in a CI runner, or on dedicated cloud infrastructure.

Key capabilities

  • A cross-language system API for orchestrating containers, filesystems, secrets, git repositories and network tunnels, with every operation typed and composable.
  • Native SDKs for eight languages — Go, Python, TypeScript, PHP, Java, .NET, Elixir and Rust — each generated from the API schema for idiomatic code and full type safety.
  • Typed artifacts: custom object types with encapsulated state and functions, content-addressed and passable across SDK and module boundaries without serialization.
  • Incremental execution keyed by inputs, so changing one file re-runs only the affected operations, with caching that works across local runs and CI.
  • Built-in OpenTelemetry tracing on every operation, viewable in a live terminal TUI or exported to Jaeger, Honeycomb or any OTel-compatible backend.
  • An interactive REPL and a rich ecosystem of reusable modules.
  • Portability across Linux natively and macOS or Windows through Docker Desktop and similar container runtimes.

Who uses it and how

  • Developers automating build, test and deployment tasks that must behave identically on a laptop and in a CI server.
  • Teams replacing shell scripts and proprietary pipeline YAML with typed, composable programs.
  • Platform engineers composing reusable modules and sharing them across projects and language boundaries.
  • Operators debugging complex workflows through OpenTelemetry traces rather than reading wall-of-text logs.
  • AI sandbox and cloud infrastructure users running the same automation definition outside a traditional CI runner.

Getting started

Install on macOS or Linux with brew install dagger/tap/dagger. Documentation and a quickstart are available at docs.dagger.io.

When to use it — and when not to

Dagger suits teams that want delivery automation to be programmable, local-first, repeatable and observable, and that are willing to write code instead of YAML. A self-hoster must operate a Linux container runtime such as Docker; the README names no database, object storage or SMTP dependency beyond that. The evident constraint is the container runtime requirement itself, and

project readme (upstream, from github) — read inline

Dagger: a better way to ship

Dagger is a platform for automating software delivery. It can build, test and ship any codebase, reliably and at scale.

Dagger runs locally, in your CI server, or directly in the cloud.

brew install dagger/tap/dagger

Why Dagger?

Dagger makes your software delivery programmable, local-first, repeatable and observable.

Programmable. Shell scripts and proprietary YAML are no longer acceptable for automating software delivery. Dagger provides: a complete execution engine and system API; SDKs for 8 languages; an interactive REPL; a rich ecosystem of reusable modules; and more.

Local-first. Once you automate a task with Dagger, it will reliably run on any supported system: your laptop, AI sandbox, CI server, or dedicated cloud infrastructure. The only dependency is a container runtime like Docker.

Repeatable. Tools run in containers, orchestrated by sandboxed functions. Host dependencies are explicit and strictly typed. Intermediate artifacts are built just-in-time. Every operation is incremental by default, with advanced cache control. Whether it's a test report, a build or a deployment, Dagger gives you an output you can trust.

Observable. Every operation emits a full OpenTelemetry trace, enriched by granular logs and metrics. Visualize the trace in directly in the terminal, or in a web view. Debug complex workflows immediately instead of guessing what went wrong from a wall of text logs.

Features

System API. A cross-language API for orchestrating containers, filesystems, secrets, git repositories, network tunnels, and more. Every operation is typed and composable.

SDKs in 8 languages. Native SDKs for Go, Python, TypeScript, PHP, Java, .NET, Elixir and Rust. Each SDK is generated from the API schema, so you get idiomatic code with full type safety and editor support.

Typed artifacts. Define custom object types with encapsulated state and functions. Types are content-addressed and can be passed across SDK language boundaries and module boundaries without serialization.

Incremental execution. Every operation is keyed by its inputs. Change one file and only the affected operations re-run. Caching is content-addressed and works automatically across local runs and CI.

Runs anywhere. The only requirement is a Linux container runtime. Runs natively on Linux, or via Docker Desktop and similar products on macOS and Windows. Local and CI behavior are identical.

Built-in tracing. Every operation emits OpenTelemetry spans. The CLI includes a live TUI; traces can also be exported to Jaeger, Honeycomb, or any OTel-compatible backend.

Getting started

Community

Contributing

See CONTRIBUTING.md.

Frequently asked questions

Is dagger free to use?

dagger is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does dagger do?

Automation engine to build, test and ship any codebase. Runs locally, in CI, or directly in the cloud

What is dagger written in?

dagger is primarily written in Go. Its source is publicly available at https://github.com/dagger/dagger, and it has 16,261 GitHub stars.