← Features
The transport

The pipe

A Linux dockerd cannot create a Windows named pipe — that is a Win32 object. So something on the Windows side has to, or every shell and script you already have needs a DOCKER_HOST. FreeWilly is that something.

WINDOWS WSL2 · freewilly docker.exe docker compose the FreeWilly window \\.\pipe\ docker_engine the relay, in the tray's own process ACL: your account only wsl.exe stdio socat dockerd /var/run/docker.sock No forwarded TCP port anywhere on this path — the Engine API is equivalent to root on the machine, and a port every local process can reach cannot express “only me”.

The ACL is the reason it is not a port

The pipe is created for your account and nobody else. Full access to the Engine API is full access to the machine, and a TCP port every local process can reach cannot express “only me” — so the hop runs over wsl.exe's stdio to socat and on to the unix socket, with no forwarded port anywhere on the path.

Your existing tools, unchanged

It is the standard pipe name, so the CLI, Compose, Testcontainers and IDE plugins find the engine with no setting. The app itself talks HTTP over the pipe directly — a named-pipe stream handed to .NET's own handler, pinned to Engine API v1.43, with no NuGet dependency.