Dagger: A shell for the container age
Purpose and Positioning of Dagger Shell
- Framed as a complement to the system shell, not a login shell replacement.
- Intended for workflows “too complex for regular shell scripts but not full software,” breaking them into composable modules.
- Targets cross-platform builds, complex integration tests, data/AI pipelines, and dev tooling inside containers.
- Same underlying engine as existing Dagger “pipeline-as-code”; this is just a new client/shell interface.
Comparison with Docker, Nix, Jenkins, etc.
- Not trying to rip out Docker; more about replacing ad‑hoc glue (Dockerfiles + shell + Makefiles + CI YAML).
- Uses BuildKit under the hood and can build from plain Dockerfiles; can act as a nicer
docker buildwith better debugging. - Some compare it to nix-shell / Nix / Bazel: Dagger is described as declarative via a dynamic API + SDKs, not a static DSL.
- Others see it as an awkward middle ground versus fully declarative Nix, or simply prefer existing tools (Bakefiles, Make, Python scripts, Jenkins).
Shell Design, Syntax, and Piping Semantics
- Syntax is bash-like but semantically closer to PowerShell / OO method chaining / builder pattern.
- Confusion and criticism that
|here is not Unix pipes but type-based method chaining; some feel this is misleading. - Some users dislike more bash-compatibility and wish for a safer, modern language; others like the familiarity.
Use Cases & Perceived Benefits
- Replace “Dockerfile + shell sandwich” workflows; compose multi-stage builds, reuse images, and avoid tag juggling.
- Local‑first CI: same pipelines run locally and in CI, improving portability across machines and platforms.
- Strong debugging story: interactive shell on failure or at arbitrary points; ability to inspect containers mid-pipeline.
- Composable modules (e.g., Alpine module, adapters around tools like apko) to build more deterministic images.
Concerns, Critiques, and UX Issues
- Some find Dagger a “time sink” with leaky BuildKit/kernel details and regret the investment compared to Nix/Bazel.
- Confusion over Dagger’s scope: CI engine? Docker replacement? dev shell? AI agent framework?
- Marketing copy (“cross-platform composition engine,” “devops OS”) seen as too vague or grandiose.
- Worry about core LLM types in the API as off-mission for a build/composition tool; others argue it’s just another primitive.
- Skepticism that yet another complex layer on top of Unix/container primitives truly improves on mature, simple shell workflows.