Dagger is a programmable CI/CD engine that runs pipelines in containers. The solution executes pipelines entirely as standard OCI containers. 

The solution is a good fit for developers wishing their CI pipelines were code instead of YAML, DevOps teams, platform engineers running custom tooling, and cloud-native developer advocates or solution engineers. 

The running of executing pipelines entirely as standard OCI containers has several benefits, including instant local testing; the portability of the pipeline which can run on a local machine, a CI runner, a dedicated server, or any container hosting service; superior caching; and more. 

A program first imports the Dagger SDK in a language of your choice. Utilizing the SDK, the program is able to generate API requests that define the pipelines intended for execution. 

Next, these formulated requests are transmitted to the engine for processing. Presently, the wire protocol employed for the engine communication remains undisclosed and lacks formal documentation. However, there are expectations that this confidentiality will eventually change, making the protocol accessible. At the current stage, the SDK remains the singularly documented API accessible to the program.

Upon receipt of an API request, the engine initiates the construction of a Directed Acyclic Graph (DAG) outlining the sequence of low-level operations necessary to achieve the desired outcome. These operations are then executed concurrently by the engine.

Once all the operations encompassed within the pipeline are effectively resolved, the engine forwards the resulting data from the pipeline back to the program. This outcome from the pipeline can subsequently serve as input for new pipelines within the program’s operations.

Additional details are available here