Skip to main content

Dagger Documentation

What is Dagger?

Dagger is an open-source runtime for composable workflows. It's perfect for systems with many moving parts and a strong need for repeatability, modularity, observability and cross-platform support. This makes it a great choice for AI agents and CI/CD workflows.

Key Features

  • Containerized Workflow Execution: Transform code into containerized, composable operations. Build reproducible workflows in any language with custom environments, parallel processing, and seamless chaining.

  • Universal Type System: Mix and match components from any language with type-safe connections. Use the best tools from each ecosystem without translation headaches.

  • Automatic Artifact Caching: Operations produce cacheable, immutable artifacts — even for LLMs and API calls. Your workflows run faster and cost less.

  • Built-in Observability: Full visibility into operations with tracing, logs, and metrics. Debug complex workflows and know exactly what's happening.

Dagger Trace

  • Open Platform: Works with any compute platform and tech stack — today and tomorrow. Ship faster, experiment freely, and don’t get locked into someone else's choices.

  • LLM Augmentation: Native integration of any LLM that automatically discovers and uses available functions in your workflow. Ship mind-blowing agents in just a few dozen lines of code.

  • Interactive Terminal: Directly interact with your workflow or agents in real-time through your terminal. Prototype, test, debug, and ship even faster.

Architecture

Dagger consists of a number of components, all of which work together in an integrated fashion to provide the best possible platform for composable workflows.

Dagger Engine

The Dagger Engine is the core runtime powering the Dagger platform. It combines an execution engine, universal type system, data layer and module system. It can run on any OCI-compatible system, and is controlled by the Dagger API.

Dagger CLI

The Dagger CLI is your primary entrypoint to Dagger. It is a full-featured, easy to use tool that can be used interactively from a terminal or non-interactively from a shell script or a CI runner. The Dagger CLI also includes a real-time visualization feature called the terminal UI (TUI). The Dagger CLI acts as a client to the Dagger Engine. It can automatically provision an engine if needed.

Client libraries

Client libraries allow controlling the Dagger Engine directly from your code.

To fully take advantage of the Dagger's universal type system, client libraries are automatically generated: the Dagger CLI and SDKs provides the necessary tooling. This allows for cross-language composition: install any Dagger module as a dependency, and your generated client will include native bindings, regardless of languages.

SDKs

Dagger SDKs provide resources for developing Dagger modules using a familiar language and toolchain. Each SDK provides:

  1. A client generator, to consume the Dagger API with native code.
  2. A server generator, to extend the Dagger API with native code.
  3. Examples and reference documentation

Modules

Dagger modules are platform-agnostic software components that consume or extend Dagger types.

Dagger API

The Dagger API is a unified interface for programming the Dagger Engine.

It defines a universal type system based on GraphQL, which can be introspected by any client, and dynamically extended by specially crafted servers. The core features of the Dagger Engine - execution engine, data layer - are available as builtin types.

Dagger Cloud

Dagger Cloud complements Dagger with a production-grade control plane. Features of Dagger Cloud include pipeline visualization and operational insights. Dagger Cloud provides a web interface to visualize each step of your pipeline, drill down to detailed logs, understand how long operations took to run, and whether operations were cached.

Dagger Cloud also collects telemetry from all your organization's Dagger Engines, whether they run in development or CI, and presents it all to you in one place. This gives you a unique view on all pipelines, both pre-push and post-push.

The Daggerverse

The Daggerverse is a free service run by Dagger, which indexes all publicly available Dagger modules, and lets you easily search and consume them.