The DAGZ Platform
DAGZ is a test execution platform that makes your CI dramatically faster. It has four parts:
DAGZ Engine
The engine is written in Rust and implements most of DAGZ's capabilities around a language-agnostic code graph. It computes test selections, orchestrates parallel execution, and reports results to the DAGZ service.
Test Plugin
dagz-pytest is a pytest plugin available on PyPI. It hosts the DAGZ engine and binds it to the Python runtime — all Python-specific instrumentation lives here.
DAGZ Service
The DAGZ service stores baselines and telemetry data and serves the web dashboard. It is available to enterprise customers and can be deployed as a Helm chart or a Compose stack.
CLI (zb)
zb embeds the full DAGZ service locally, so you can develop and test on your own codebase without any infrastructure. It also lets you interact with your team's remote DAGZ service.
Language Support
Python is production-ready. See Roadmap for other languages.
CI Integration
DAGZ works with any CI platform — no special support needed.
On top of standard functionality, we have built custom integrations for:
- GitLab — parallel job support, MR metadata extraction, pipeline reporting
- GitHub Actions — parallel job support, PR metadata extraction
How It Works
DAGZ instruments the language runtime with multiple low-level probes, including a home-grown, optimized coverage collector. These probes detect different kinds of code dependencies — function calls, module-level statements, class hierarchies, registries, caches, and more.
After every execution, DAGZ generates a baseline: a compressed graph of all observed dependencies, with content-based fingerprints for code elements.
When a new test job starts, DAGZ compares the baseline's code fingerprints to the new code, and by walking the dependency graph it knows exactly which tests are impacted by which changes — and how. You get a full trace of the selection process for each selected test.
What "affected" means
- Changed a function? Only tests that call it (directly or indirectly) are selected.
- Changed a module-level variable? Tests that read it are selected.
- Deleted a module? All tests that imported from it are selected.
- Reformatted code without logic changes? Nothing is selected — DAGZ tracks logic, not whitespace.
Roadmap
The engine is language-agnostic by design — the Rust core handles dependency graphs, fingerprinting, and test selection for any language. Only the instrumentation layer is language-specific.
| Language | Status | Notes |
|---|---|---|
| Python | Production | Full pytest integration, bytecode-level instrumentation |
| JavaScript / TypeScript | In development | Jest and Vitest support planned |
| Java | Planned | |
| C# | Planned |