GUI for the Windows Subsystem for Linux — and native Linux/macOS VMs on Mac. Install, back up, move and configure distros without CLI flags; AI assistant with tools, MCP server for agents, remote WSL over SSH.




WSL Distro Manager is a free, open source GUI for the Windows Subsystem
for Linux — and, on macOS, for native Linux VMs. Install, copy, rename,
move, back up and delete WSL distros without memorising a singlewsl.exe
flag — plus templates, saved command snippets, disk mounting,.wslconfig
editing, remote WSL over SSH, and an MCP server that lets AI agents drive
your WSL environment. On a Mac the very same app manages virtual machines
through Apple's Virtualization framework instead.
Manage distros
Get instances running faster
.wsl file that installs on any machine (templates are deprecated in favour of these)Configure without editing files by hand
.wslconfigWork the way you already do
On macOS: native virtual machines (beta)
scripts/build_macos.sh — bundles the signed vmctl helperPro (one-time purchase: Microsoft Store on Windows, licence key from wslmanager.com/buy on macOS and for non-Store installs — never a subscription)
The AI features run on credentials you bring — your own OpenAI-compatible
API key. No AI service is hosted or included, there is no quota, and no
requests pass through anyone else's servers. Pro unlocks the features in the
app; it does not buy AI credits. See Free vs Pro.
Why is there a paid tier at all? WSL Manager has been a one-person,
spare-time project since 2021, and every feature above — the free ones
included — was built in evenings and weekends. Managing your distros and VMs
is free and stays free, and the whole app stays open source. Pro is the AI
layer on top, and what it earns is what lets maintenance and new features
become planned, regular work instead of whatever time is left over. Buy it
once, keep it forever, and you are directly funding the next release.
Everything in this section is part of Pro; the free app has none of it.
The AI assistant is an agent, not just a chat box: it is given the same tool
set the MCP server exposes, so when you ask "what distros do I have?" or "install
Ubuntu and set my default user" it calls real tools against your WSL rather than
guessing. Tool calls are shown inline as it works.
Set up the provider in Settings → Bring Your Own AI Key: any
OpenAI-compatible endpoint works (OpenAI, Azure, a LiteLLM proxy, Ollama, LM
Studio, …). Enter the base URL, key and model. The Load model list button
fills an autocomplete from the provider's /models, and Test connection
proves the credentials work before you open the chat.
Sandboxes (AI Workspace → Add sandbox distro) create a throwaway distro
from any catalog image (newest Ubuntu by default). Its chat is handed only thesandbox_* tools, which are locked to that one distro — the model can run
anything inside the sandbox and can never see your Windows host or any other
distro. One honest caveat: the sandbox distro itself has normal outbound
internet access, like any WSL distro. Sandbox chats use the same docked panel
as the assistant (task queue included), their transcripts persist, and the
history button in the chat header switches between the assistant and any
sandbox session.
Task queue — open the Tasks section at the top of the chat, add items, and
press ▶. The assistant works through them with its tools and checks each off as
it finishes; you can keep adding tasks while it runs.
Turn on Settings → MCP Server (Pro). It serves the MCP protocol athttp://127.0.0.1:59133/mcp, loopback-only, guarded by a bearer token shown in
the same panel. The tools cover the full lifecycle — create, import, configure,
run, package and (with a confirm flag) unregister distros, plus snippets, disk
mounting and persistent terminal sessions.
Claude Desktop — click Connect Claude Desktop in the MCP panel. It writes
the entry below into claude_desktop_config.json for you (needs Node.js);
restart Claude Desktop afterwards. To do it by hand, or for any other stdio MCP
client, bridge the HTTP endpoint with mcp-remote:
// claude_desktop_config.json (%APPDATA%\Claude\)
{
"mcpServers": {
"wsl-manager": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"http://127.0.0.1:59133/mcp",
"--header", "Authorization:${AUTH_HEADER}"
],
"env": { "AUTH_HEADER": "Bearer <TOKEN FROM THE MCP PANEL>" }
}
}
}Claude Code — same bridge, one command:
claude mcp add wsl-manager -- npx -y mcp-remote http://127.0.0.1:59133/mcp \
--header "Authorization: Bearer <TOKEN>"opencode — add it under mcp in your opencode.json (or ~/.config/opencode/opencode.json):
{
"mcp": {
"wsl-manager": {
"type": "local",
"command": ["npx", "-y", "mcp-remote", "http://127.0.0.1:59133/mcp",
"--header", "Authorization: Bearer <TOKEN>"]
}
}
}Any MCP client that speaks streamable HTTP can also point straight at the
endpoint with an Authorization: Bearer <TOKEN> header, skipping mcp-remote.
To reach it from another machine, enable the built-in Cloudflare tunnel
toggle in the same panel and use the public URL it prints.
Turn on Settings → Web Dashboard (Pro) and the app serves a browser
dashboard on port 59134 for every device on your network — Windows and macOS
alike. Scan the QR code the panel shows with your phone (or copy the link) and
you get the whole app in a browser: start, stop, duplicate and delete instances,
run commands, open persistent terminal sessions, run your saved snippets, and
drive every other tool (import, export, packaging, .wslconfig, disks, VM
creation) through generated forms. It is the same tool set the AI assistant
and the MCP server use.
Access is guarded by a token that is part of the link (?token=…), so a
scanned QR code is all a device needs — and regenerating the token in the
panel revokes every link handed out so far. The dashboard binds to all
interfaces on purpose; flip Publish via Cloudflare Tunnel in the same panel
to get a temporary public HTTPS link (the QR code switches to it) when you need
it away from home. Once published, the token is the only thing protecting a
surface that can run commands, so share that link with care.
This app is available on the Microsoft Store.
</details> <details> <summary>macOS via Homebrew</summary>brew tap bostrot/tap
brew install --cask wsl-managerApple silicon, macOS 11 or newer. The cask lives in bostrot/homebrew-tap; brew upgrade --cask wsl-manager picks up new releases.
You can get this app with a direct download from the Releases page. Windows ships as a setup .exe, an .msix and a portable .zip; macOS as a .dmg.
winget install Bostrot.WSLManager</details>
<details>
<summary>Install via Scoop</summary>
scoop install extras/wsl2-distro-manager</details>
<details>
<summary>Install via Chocolatey</summary>
This package is maintained by the community (@mikeee). It is not an official package.
choco install wsl2-distro-manager</details>
<details>
<summary>Install a nightly build</summary>
The latest nightly build is available as an artifact in the "releaser" workflow or via this link.
</details>Make sure flutter is installed:
flutter config --enable-windows-desktop
flutter upgrade
flutter build windows # build it
flutter run -d windows # run it👤 Eric Trenkel
👥 Contributors
Contributions, issues and feature requests are welcome!
Feel free to check the issues page.
You can also take a look at the contributing guide.
Give a ⭐️ if this project helped you!
Copyright © 2026 Eric Trenkel.
This project is GPL-3.0 licensed.
Not found what you were looking for? Check out the Wiki
bostrot/wsl2-distro-manager
September 17, 2021
September 7, 2026
Dart