Skip to content
Windows · Desktop app

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
Latest release
v1.0.16
released 2026-10-15
Release downloads
6
v1.0.16

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.

Block F

Installer and distribution (free, Apache 2.0)

  • IdeaNobody knows whether winget's validation VM can install it, since the preflight exits 7 without WSL2
Block I

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 →
  1. A 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.

    DD284 · 704a856
  2. A 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.

    DD282 · e7a49b1
  3. No winget manifest exists, so winget install cannot find FreeWilly

    build\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.

    DD281 · d2192d9
  4. the 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.

    DD280 · 6db267a
  5. the 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.

    DD279 · b5313fb
  6. six 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.

    DD278 · 9324afd
  7. the 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.

    DD277 · 0b55204
  8. a 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.

    DD276 · e174fcc