FreeHarbor
Docker Desktop charges a licence fee for what is, underneath, an open engine. FreeHarbor 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
Install
What comes next
From the product's own docs/ROADMAP.md at 091121f.
The Windows engine (Docker without Docker Desktop)
- DesignedThe engine refuses clients below API 1.40 and FreeHarbor offers no way to admit them
Installer and distribution (free, Apache 2.0)
- Designedwinget install alegauss.FreeHarbor finds nothing while the first winget-pkgs pull request waits for moderators
- DesignedEvery first download meets a SmartScreen warning, because the installer is not signed
The agent surface (an agent operates this, and pays in tokens)
- Designedread health and read context show the engine API version but not its minimum, so a refused old client goes unexplained
The public surface (the site a reader and an agent both read)
- DesignedThe README and the site open on the licence, which Rancher and Podman also offer, not on installing without admin
The site on the design system
- PartialThe site keeps its own copy of the template that eight product sites share
Recently shipped
All 283 entries →- DD293 · 7336cedThe product ships as FreeWilly, a name and an orca mark with a copyright problem
Projects, exe, distro, root, AppId, winget id and site base are FreeHarbor, as a hard cut with no migration, and a ship-and-waves mark from build/logo.mjs replaces the orca.
- DD287 · 38c6989read logs --since refuses a relative window like 1m, so following a restart needs an extra read to scrape a t: cursor
read logs --since takes a window back from now, as 30s, 5m or 2h, beside a t: cursor, so following a restart needs no read first to scrape one.
- DD286 · c31b053read ps and read verify never show a container's health (starting, healthy, unhealthy), and the inspect verb is denied
read ps prints each container's health beside its state, as running (healthy), (unhealthy) or (starting), off the list's own status; read verify already had a health row.
- 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.