FreeWilly
Docker Desktop charges a licence fee for what is, underneath, an open engine. FreeWilly runs upstream Moby in a WSL2 distro it owns and exposes it on the docker_engine pipe your tools already look for, so nothing in your setup has to know it changed. One window, your containers, no subscription.

Public numbers
- GitHub stars
- 1
- Release downloads
- 6
Public numbers from GitHub and PyPI, as of 2026-10-20. The site is rebuilt daily.
Install
What comes next
From the product's own docs/ROADMAP.md at 7dad90f.
Installer and distribution (free, Apache 2.0)
- IdeaNobody knows whether winget's validation VM can install it, since the preflight exits 7 without WSL2
The site on the design system
- DesignedThe site keeps its own copy of the template that eight product sites share
Recently shipped
All 279 entries →- DD284 · 704a856A silent install on a blocked machine exits 1 at the preflight page instead of 7, and /MERGETASKS is overwritten
Silent Setup skips the tasks and preflight pages, so a blocked machine exits 7 from PrepareToInstall and /MERGETASKS holds; measured exit 7, nothing installed, on the test guest.
- DD282 · e7a49b1A release never reaches winget-pkgs: the manifests stay in the repository unsubmitted
publish-release.ps1 runs wingetcreate submit after the release exists when WINGET_TOKEN is set, and skips without failing on a draft, stale manifests or a missing token.
- DD281 · d2192d9No winget manifest exists, so
winget installcannot find FreeWillybuild\winget carries manifests for alegauss.FreeWilly, rewritten from the built installer by update-winget.ps1 during update-release; winget validate passes on v1.0.15.
- DD280 · 6db267athe filesystem check refuses on a distribution that will not start, which is the one whose filesystem needs it
A distribution that will not start is checked by the UUID read off its ext4.vhdx and a launch under the hold that attaches the disk; it repaired the disk it was measured on.
- DD279 · b5313fbthe relay's dispose joins its accept thread for five seconds inside a teardown budget of four
The relay's join now takes the same budget as the calls around it, so the last wait that could outlast a session ending no longer stops the steps behind it running.
- DD278 · 9324afdsix callers spell their own version of what a wsl call said, and none falls back to the exit code
The six restatements now call one Detail that carries the separator, so a wsl call which exited non-zero and wrote nothing names its exit code instead of resolving to nothing.
- DD277 · 0b55204the teardown lines two processes now write are both labelled stop, so nobody can tell which wrote one
A teardown step is written under its writer's own column word, so the host's stop and the tray's backstop are told apart in the file DD188 leaves that question in.
- DD276 · e174fcca logoff on a machine that never provisioned an engine now writes a terminate failure
A terminate that finds nothing registered now says there was nothing to take down, so a logoff on a machine with no engine stops writing a failure about one.