Docker on Windows.
Less RAM. Less disk. No WSL.
hyperbutler is a lightweight, Docker‑compatible engine. It boots a minimal Linux
VM through the Windows Host Compute Service, runs dockerd inside it, and lets the
stock docker CLI talk to it.
PS C:\Users\you> hyperbutler start
hyperbutler is running: the Docker API answered after 1.5 s (engine pid 7412).
PS C:\Users\you> docker run --rm hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
PS C:\Users\you>
Benchmarks
Lighter where it counts.
hyperbutler against Docker Desktop 4.97 (WSL 2), on one laptop, each with its default settings. Shorter bars are better.
Idle memory, VM running
Docker Desktop varied over the first 6 minutes; the faded part of its bar is that range.
Disk, 5 min after deleting ~5 GB of images
Download
The faded part is the WSL download, needed if WSL is missing.
Bind mount: read 2000 small files from C:\
Measured on one laptop (Windows 11 Home, Core Ultra 7 155H, 32 GB), one engine at a time, same script. Docker Desktop’s Resource Saver stops its VM after about 7 idle minutes; its processes then use 404 MiB. One machine is not a general result. Method and raw data
Features
Works well by default.
No tuning, no extra subsystem to keep updated. Install it, start it, run containers.
-
No WSL
The VM runs directly on the Windows Host Compute Service, the same API WSL 2 uses. WSL is not required, can stay disabled, and its updates do not affect hyperbutler.
3 resident processes at idle
-
Works on Windows 11 Home
Home is first-class; Pro and Enterprise work too. You need an x64 PC with virtualization enabled in the firmware.
-
Disk space given back automatically
Delete images and the data disk shrinks on its own. No manual compaction, no admin step.
-
Fast bind mounts from C:\
Mount a Windows folder with
-v C:\src:/src. Reading 2000 small files took 0.4 s; large files move at about 500 MB/s written and 900 MB/s read. -
Stock docker CLI + Compose
The
dockerCLI and the compose plugin are bundled and set up through ahyperbutlerdocker context. Compose builds, healthchecks, service names, volumes and bind mounts are tested. -
No telemetry
hyperbutler sends no usage data. The app only checks GitHub for updates once a day, and you can turn that off.
-
Open source, Apache-2.0
The source is on GitHub. Free to use at any company size.
New in v0.2.0
A sandbox for AI coding agents.
hyperbutler sandbox run gives a coding agent, or any command, a Linux VM of
its own with a copy of your project. Nothing it does reaches your files until you read
the changes and apply them.
# a shell in the copy: start your agent there
> hyperbutler sandbox run --name work C:\src\myapp
# every change, against your files now
> hyperbutler sandbox diff work
# only then do they reach C:\src\myapp
> hyperbutler sandbox apply work --all
-
Your files stay yours
The agent sees none of your disk. A change that could run code later, such as a
Makefile, a CI workflow or a package manifest, is never applied without you naming it. Files named like secrets stay out of the copy. -
A network you choose
devreaches package registries, git hosts and model providers' APIs by exact name;lockedonly what you allow;openeverything.sandbox blockedlists what it asked for and did not get. -
Browsers work
Headless Chromium runs in a session, so an agent can drive it with Playwright. Ctrl+] leaves the terminal and the agent keeps going;
sandbox attachcomes back.
The session image is a separate download of about 270 MB, on first use. How the sandbox works · v0.2.0
How it works
Three small parts, no WSL in between.
Your tools talk to a process of your own, which talks to a small Linux VM over Hyper‑V sockets. A tiny Windows service is the only privileged part: it starts and stops that VM, and nothing else.
Your tools
docker CLI · Compose · SDKs
Unchanged. They use a hyperbutler docker context.
Runs as you, no admin
hyperbutler engine
- Docker API relay
- User-mode network: NAT, DNS, published ports
- Fast file server for bind mounts from
C:\ - Disk-space guard, status, the window
Linux VM on HCS
dockerd + containerd
- Minimal Alpine, read-only system disk pinned by hash
- Data disk gives freed space back to Windows
- Answers only your engine, with a per-VM secret
Windows service since v0.1.0
hyperbutler broker
The only part that calls the Host Compute Service. Seven short, typed requests (start, stop, status…) over a pipe only you can open, a fixed VM template, and no paths or command lines from the caller. So you need neither admin rights nor the Hyper‑V Administrators group.
Design decisions, threat model and review results: Architecture in the README
Install
Three steps to hello-world.
You need Windows 11 (Home, Pro or Enterprise) on x64, with virtualization enabled in the firmware.
-
Run the MSI
Download it from the latest release. One UAC prompt, then it:
- adds hyperbutler and its
dockerCLI to the PATH; - installs the broker service, the small privileged part that starts your VM, so daily use needs no admin rights;
- turns on Virtual Machine Platform if it is missing.
- adds hyperbutler and its
-
Restart if asked
Only when Virtual Machine Platform was just turned on. Otherwise open a new terminal so it sees the new PATH.
-
Run a container
> hyperbutler start > docker run hello-world
Unsigned builds
Builds are not code-signed yet, so SmartScreen says “Windows protected your
PC”: choose More info, then Run anyway.
Check the file against SHA256SUMS from the release first:
Get-FileHash .\hyperbutler-*-windows-amd64.msi -Algorithm SHA256
Prefer no installer?
The zip works without installing anything, but it has no broker service, so your account needs Hyper-V Administrators membership. That group lets every program you run control the Hyper-V VMs on this PC: treat it as close to admin rights. See the install guide.
v0.2.0
Released. Still early.
v0.2.0 adds the agent sandbox, BuildKit builds and ports published on 127.0.0.1. Its release candidate ran a 24-hour soak (283,947 docker commands, none failed), and the one slow leak it found is fixed. It works end to end on Windows 11 Home. Some things are still open. Among them:
- The installer has not run on a clean PC yet, and sleep and resume are tested in unit tests only.
- Bind mounts from Windows paths work, but are not yet fast for write-heavy trees: use a named volume for
node_modules. - Builds are not code-signed, and the installer is English only.