dk
a Windows-friendly, incremental, remote cacheable build system
dk is Diskuv's development kit for building and distributing
software.
With dk your users clone your project and run one command on Windows, macOS or Linux.
dk fetches, builds, and runs the software locally or remotely.
Start with the documentation below.
-
Documentation →
The dk specification, guides, and the dk0, dk1, and dkjs reference implementations.
-
Packages →
Officially supported dk packages.
-
Quickstarts →
Bootstrap a workspace in one command.
Why dk?
- Windows is first-class
- Build on the OS your users actually use: Windows, with macOS and Linux too.
- Remote builds
- No beefy PC or laptop needed.
dk1 remotecompiles on a remote build machine. - Caches and incremental builds
- Pull prebuilt binary caches with
dk1 add, and rebuild only what changed withdk1 restore. - Write-once, read-many distros
- Package once and distribute everywhere, with checksums and signatures baked in.
Which dk?
Three implementations share one build engine, so every one produces
byte-identical results. Reach for dk1 day to day;
dk0 is the single-threaded reference implementation, and
dkjs builds JavaScript and web projects on Node.js.
dk0 | dk1 | dkjs | |
|---|---|---|---|
| Runtime | Native, single-threaded | Native, multi-threaded | JavaScript on Node.js |
| Install | Signed native binary | Signed native binary | JavaScript bundle, no native binary |
| Parallelism | Serial | -j (default: CPU count) | -j (default: 1) |
| Best for | The reference implementation and cross-language emulation target | Fast day-to-day local and remote builds | Building JavaScript and web projects (js_nodejs / js_web) |
| Build output | Byte-identical | Byte-identical | Byte-identical |
Commands
get-object | Fetch a prebuilt object (a tool, library, or binary) from the registry. |
|---|---|
remote | Build on a remote GitHub Actions machine instead of your own. |
add | Add a GitHub release verified with a SLSA-2 attestation to your workspace. |
restore | Rebuild only what changed: fast, incremental builds. |
run-object | Run a built object locally or remote. |
distribute | Package a build into a signed, checksummed distribution. |

