Windows Deploy Kit

WinImageKit

Runs deployment steps in dependency order and won't start on a broken graph.

Free right now — no account, no card

Get WinImageKit free Windows & Mac · one file, nothing to install

Preview

1 interface design, then a screenshot of it running. Drag, scroll or use the arrows.

Interface design WinImageKit, 1 of 1
Screenshot WinImageKit running on Windows today

Free while we’re in preview

Get WinImageKit

Runs deployment steps in dependency order and won't start on a broken graph.

The Mac button is for Apple Silicon. On an older Intel Mac, get this one instead.

One file, both ways. Double-click it for the window. Run the same file from a command prompt with arguments and it behaves as the command-line tool, because the engine is inside it. Nothing else to download and nothing to keep beside it.

Early preview. The window has been built and run, but not yet on a real Windows PC or Mac, so expect rough edges. The engine underneath it is fully tested.

  • One file — no installer
  • Runs on your machine, offline
  • Source code published below

Free while in preview. It isn’t signed yet, so Windows or macOS will ask you to confirm the first time you open it. At launch, WinImageKit is included in every plan along with the rest of the range.

Order comes from the graph, not the file

Every step in the manifest declares by name which other steps it depends on. WinImageKit validates that graph before running anything: a depends_on naming a step that doesn’t exist refuses the run and points at the bad reference, and a cycle refuses it too, printing the loop as dependency cycle detected: X -> Z -> Y -> X. Only then does it compute a topological order. winimagekit validate runs that check alone, executing no commands at all.

One failure shouldn’t stop the rest

This is the real difference from DeployForge, which halts the whole run on the first failure. Here, if “install runtime” fails, “install app” is marked BLOCKED and never attempted, while the unrelated “configure logging” branch runs to completion. The process exits non-zero if anything failed or was blocked, and --log records one JSON line per step with its verdict: SKIP, INSTALLED, FAILED, BLOCKED or WOULD_INSTALL.

Each step is a check command plus an install command. If the check exits 0 the step is already satisfied and gets skipped, which makes re-running a recipe safe.

Read the name carefully

This prototype orchestrates shell commands. Building Windows images, injecting drivers into a WIM and EFI repair all need DISM and WinPE, and none of that is here yet.

Reading on the job itself

Advanced & technical details Command-line builds, source code, checksums and a recorded session — for developers and IT teams

A working CLI prototype of the deployment-recipe engine: dependency-graph-ordered install steps with cycle detection, idempotent re-runs that skip already-satisfied steps, and fault isolation so a failed step blocks only its own dependents while unrelated branches keep running. Actual Windows image/driver injection needs OS-privileged APIs and is still on the roadmap.

Naming status

Working name only — brand verdict **RENAME** (High). Collision: WinImage + ImageKit. Rename before launch.

What it draws on

Existing paid software whose best ideas shaped this program: NTLite, WinToUSB Professional, EasyUEFI Professional, Macrium Reflect X.

Command line

There is nothing extra to install. The program you download is the command-line tool as well: give it arguments instead of double-clicking it and it runs as one, with its output on your terminal. The standalone builds below are the same engine on its own, for machines where you would rather not ship a window at all.

WinImageKit 0.1.0 -- dependency-graph-ordered deployment recipe runner

Usage:
  winimagekit apply <manifest.json> [--dry-run] [--log run.log]
  winimagekit validate <manifest.json>
  winimagekit -h | --help | help

Commands:
  apply       Validate the dependency graph, compute a topological
              execution order, then run each step's check/install pair.
              A failed step blocks only its (transitive) dependents;
              unrelated branches of the graph keep running.
  validate    Validate the dependency graph only (unknown dependency
              references, cycles) without executing anything.

Flags for apply:
  --dry-run       Report what would run, in dependency order, without
                  executing any install command and without applying
                  partial-failure blocking (nothing is really failing).
  --log <path>    Append a JSON-lines record per step outcome to <path>.

Recorded from the shipped binary, not written by hand.

Source

Every file the program is built from:

console.go · console_test.go · guided.go · main.go

SHA-256 checksums · build instructions & scope notes · full build plan