Skip to main content

Introduction

Getting Started

Understand what DxCore is and how it parallelizes your CI workloads across multiple agents.

What is DxCore?

DxCore is a DAG parallel task execution engine. It is not a CI system — it is an execution layer you bolt onto your existing CI (GitHub Actions, GitLab CI, etc.) to parallelize build and test workloads across multiple agents.

Your build system (Turborepo, Nx, Gradle, Docker Buildx) already knows your task graph. DxCore takes that graph, schedules tasks across connected agents respecting dependency order, and streams results back to your CI pipeline.

Note

DxCore is an independent project by Eyal Lapid (JoinWith) and is not affiliated with, endorsed by, or sponsored by Vercel, Nrwl, Gradle, Docker, or any other third-party project. See Trademarks & Attribution.

How It Works

DxCore operates in five steps:

1. Graph Production

Your build system outputs a task DAG. For example, turbo run build test --dry=json produces a JSON representation of every task and its dependencies.

2. Dispatch

The dxcore dispatch command reads the graph from stdin and submits it to the coordinator over WebSocket.

3. Scheduling

The coordinator parses the DAG, optionally expands tasks into shards, and computes the frontier — the set of tasks whose dependencies are all complete. It assigns frontier tasks to agents based on resource hints and capability tags.

4. Execution

Agents execute assigned tasks using the appropriate adapter (turbo, nx, gradle, docker, or generic). Results flow back to the coordinator, which propagates success or failure through the DAG and computes the next frontier.

5. Profiling

Task duration, agent specs, and shard info are recorded. Over time, the coordinator learns optimal shard counts for each task.

Tip

DxCore works with any CI provider that supports running parallel jobs — GitHub Actions, GitLab CI, CircleCI, and more.

Supported Adapters

Adapter Build System Graph Command
turbo Turborepo turbo run <task> --dry=json
nx Nx nx run-many --targets=<tasks> --graph=stdout
gradle Gradle ./gradlew -q exportDxcoreGraph (DxCore plugin)
docker Docker Buildx docker buildx bake --print
generic Any Custom JSON with explicit shell commands

Next Steps