Skip to content
Windows · Desktop app

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

Latest release
v2.0.0
released 2026-10-30

Install

What comes next

From the product's own docs/ROADMAP.md at 091121f.

Block A

The Windows engine (Docker without Docker Desktop)

  • DesignedThe engine refuses clients below API 1.40 and FreeHarbor offers no way to admit them
Block F

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
Block G

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
Block H

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
Block I

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

    DD293 · 7336ced
  2. read 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.

    DD287 · 38c6989
  3. read 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.

    DD286 · c31b053
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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