← 开源
bostrot

wslmanager

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.

ApplicationsProductivityDart
在 GitHub 打开
增长势头
+024 小时新增 Star0.0%
4.03k
Star
180
Fork
+4
本周
13
贡献者
创建于 2021-09-17 · 更新于 2026-10-15 · 今日第 7719 名
主要开发者
bostrotxxnuoRedyAu

bostrot/wslmanager 排名第 7,719,有 4,029 个星标。

同类别比较

bostrot/wslmanager 排名第 7,719,此处有 8 个同类条目;minivision-ai/photo2cartoon 排名第 7,718。

同类别比较
名称排名指标
abhi1693/openclaw-mission-control7,697
语言:
TypeScript
星标数:
4,102
分叉数:
818
简介:
AI Agent Orchestration Dashboard - Manage AI agents, assign tasks, and coordinate multi-agent collaboration via OpenClaw Gateway.
zbirenbaum/copilot.lua7,699
语言:
Lua
星标数:
4,099
分叉数:
161
简介:
Fully featured & enhanced replacement for copilot.vim complete with API for interacting with Github Copilot
chartbrew/chartbrew7,711
语言:
JavaScript
星标数:
4,062
分叉数:
459
简介:
Open-source reporting platform to build and share live dashboards from APIs, SQL and NoSQL databases, with powerful AI assistant, scheduling, and embeddable charts 📈📊
minivision-ai/photo2cartoon7,718
语言:
Python
星标数:
4,032
分叉数:
768
简介:
人像卡通化探索项目 (photo-to-cartoon translation project)
TianyiDataScience/openclaw-control-center7,725
语言:
TypeScript
星标数:
4,002
分叉数:
615
简介:
Turn OpenClaw from a black box into a local control center you can see, trust, and control.
sourcebot-dev/sourcebot7,729
语言:
Python
星标数:
3,990
分叉数:
372
简介:
Sourcebot is a self-hosted tool that helps humans and agents understand your codebase.
OpenHealthForAll/open-health7,734
语言:
TypeScript
星标数:
3,961
分叉数:
431
简介:
OpenHealth, AI Health Assistant | Powered by Your Data
riffusion/riffusion-hobby7,752
语言:
Python
星标数:
3,900
分叉数:
476
简介:
Stable diffusion for real-time music generation
关键参数与规格
关键参数与规格
参数值
语言Dart
类别Applications
子类别Productivity
关键词Agent-ready APIs, Automation, DevOps, MCP
星标数4,029
分叉数180
贡献者13
创建日期2021-09-17
更新日期2026-10-15
1 天星标数0
7 天星标数4
排名7,719
上次排名4,918
排名变化-2,801
7 天星标排名5,930
上次 7 天星标排名6,649
7 天星标排名变化719
总星标排名3,433
上次总星标排名3,431
总星标排名变化-2
README 摘录

On a Mac the very same app manages virtual machines through Apple's Virtualization framework instead. 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. 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. 🤖 AI assistant & MCP *(Pro)* 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, …). The **Load model list** button fills an autocomplete from the provider's , and **Test connection** proves the credentials work before you open the chat. It is off until you answer: WSL Manager asks once

, on the first start after installing or updating, and nothing AI-related runs before that. One honest caveat: the sandbox itself has normal outbound internet access, like any distro or VM. 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. The assistant works through them with its tools and checks each off as it finishes; you can

keep adding tasks while it runs. Connecting external AI clients (MCP) Turn on **Settings → MCP Server** (Pro). It serves the MCP protocol at , loopback-only, guarded by a bearer token shown in the same panel. It writes the entry below into for you (needs Node. To reach it from another machine, enable the built-in **Cloudflare tunnel** toggle in the same panel and use the public URL it prints. 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, , disks, VM creation) through generated forms. It is the same tool set the AI assistant and the MCP server use. 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

常见问题

记录了多少星标和分叉?

bostrot/wslmanager 有 4,029 个星标和 180 个分叉。

仓库排名是多少?

bostrot/wslmanager 排名第 7,719。

记录的语言和类别是什么?

bostrot/wslmanager 有 4,029 个星标,语言为 Dart,类别为 Applications。

哪个仓库排名最接近?

bostrot/wslmanager 与 minivision-ai/photo2cartoon 比较,后者排名第 7,718,有 4,032 个星标。

README

Welcome to WSL Manager 👋

English | [简体中文](./readme/README_zh.md) | [繁體中文](./readme/README_zh_tw.md) | [Deutsch](./readme/README_de.md) | [Español](./readme/README_es.md) | [日本語](./readme/README_ja.md) | [Magyar](./readme/README_hu.md) | [Português](./readme/README_pt.md) | [Türkçe](./readme/README_tr.md)

Shown on Windows · the same app runs native VMs on macOS — expand See it on macOS below

Preview with light theme (Windows)

🍎 See it on macOS — native Linux and macOS virtual machines through Apple's Virtualization framework (beta)

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 single wsl.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.

🚀 Features

Manage distros

  • [x] Install from a built-in catalogue, or bring your own rootfs
  • [x] Copy, rename, move to another drive, back up and delete instances
  • [x] Back every instance up to one folder — with a list of what is in it — and restore them all on another PC
  • [x] Compact virtual disks to reclaim space WSL never gives back
  • [x] Watch what an instance is using right now — processor time, memory and swap, with a live graph
  • [x] Supports Ubuntu, Debian, Alpine, Kali Linux, openSUSE, SLES and anything else WSL accepts

Get instances running faster

  • [x] Use any Docker image as a distro — Docker itself is not required
  • [x] Package a configured distro as a portable .wsl file that installs on any machine (templates are deprecated in favour of these)
  • [x] Turnkey Linux and other LXC containers (experimental)
  • [x] Snippets: keep your setup commands in the app and run them on any instance
  • [x] Point the app at your own repository of rootfs images
  • [x] Browse a distro's files and copy the ones you pick into another instance — no share, no mount, no Explorer needed

Configure without editing files by hand

  • [x] systemd, automount, default user, start command and start path per distro
  • [x] Memory, processors, swap, networking mode, DNS and the rest of .wslconfig
  • [x] Mount a physical disk or a VHD into WSL, with partition and filesystem control
  • [x] Share host folders into a distro or VM at a mount point you pick, read-only if you like — the AI Workspace included

Work the way you already do

  • [x] Open Windows Terminal, VS Code or Explorer straight inside a distro
  • [x] Every instance in the Windows Terminal dropdown, kept current while the app runs — contributed as a fragment of its own, so your Terminal settings are never edited
  • [x] Manage WSL on a different Windows machine over SSH
  • [x] Sync a distro between two machines on your network
  • [x] Reach an instance by name: its hostname is kept in your hosts file, so ssh ubuntu.wsl keeps working after a reboot
  • [x] Keeps itself up to date: the website and GitHub builds download and install new releases themselves (Store installs are updated by the Store)
  • [x] Dark and light themes, available in nine languages

On macOS: native virtual machines (beta)

  • [x] The same app manages VMs through Apple's Virtualization framework instead of WSL
  • [x] Create Linux VMs from an installer ISO, a cloud image or an exported template
  • [x] Create macOS guest VMs from a restore image (Apple Silicon)
  • [x] Start, stop, clone, export/import and template VMs like distros
  • [x] Run commands inside VMs over auto-provisioned SSH (cloud-init), from the GUI, the AI chat or MCP clients
  • [x] A terminal on any VM from its row: an SSH session on a Linux or macOS guest, the serial console where Linux has nothing to SSH to
  • [x] Your own ~/.ssh key is authorized in every Linux VM (and created if you have none), so plain ssh user@vm-ip works too
  • [x] Every VM gets a login password you can read back from its row, for signing in at the VM's own screen
  • [x] Set the account every SSH path signs in as from the same row — a macOS guest's name is typed into Setup Assistant, where the app cannot see it
  • [x] Build with scripts/build_macos.sh — bundles the signed vmctl helper

Pro (one-time purchase: a licence key from wslmanager.com/buy, on Windows and macOS alike — never a subscription)

  • [x] AI Workspace — run Hermes Agent, OpenClaw, Open WebUI and OpenCode in a dedicated, isolated WSL distro
  • [x] One model and endpoint for every AI tool — the assistant's API endpoint, key and model from Settings are what OpenCode, OpenClaw and Hermes use too; set them once, and a tool installed later gets them as well
  • [x] AI assistant with tools — the built-in chat can actually operate your WSL: it lists and inspects distros, runs commands, edits config, creates snippets, mounts disks and packages distros through the same tools the MCP server exposes
  • [x] Every AI run that changes an instance is saved as a snippet — the commands it ran and what each tool reported, linked from the chat, so you can review it, run it again on a fresh instance or share it
  • [x] Sandboxed AI — spin up a throwaway Ubuntu distro and give an AI chat access to only the inside of that sandbox
  • [x] Task queue — hand the assistant a checklist and let it work through it, ticking items off as it goes
  • [x] MCP server — expose WSL to Claude Desktop, Claude Code, opencode and other MCP clients
  • [x] Web dashboard — manage everything from your phone or another computer: scan a QR code, get the whole app in a browser, optionally published beyond your network through a Cloudflare tunnel

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.

🤖 AI assistant & MCP (Pro)

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.

Don't want any of it? Settings → Bring Your Own AI Key → AI features switches the assistant, the error diagnosis and the AI Workspace off — nothing AI-related is shown, and no workspace environment is set up for you. It is off until you answer: WSL Manager asks once, on the first start after installing or updating, and nothing AI-related runs before that.

Sandboxes (AI Workspace → Add sandbox distro) create a throwaway instance from any catalog image (newest Ubuntu by default) — a WSL distro on Windows, a Linux VM seeded from a cloud image on macOS, which is created and booted for you. Its chat is handed only the sandbox_* tools, which are locked to that one instance — the model can run anything inside the sandbox and can never see your host or any other instance. One honest caveat: the sandbox itself has normal outbound internet access, like any distro or VM. 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.

Connecting external AI clients (MCP)

Turn on Settings → MCP Server (Pro). It serves the MCP protocol at http://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 " }
    }
  }
}

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 "

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 "]
    }
  }
}

Any MCP client that speaks streamable HTTP can also point straight at the endpoint with an Authorization: Bearer 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.

📱 Web dashboard (Pro)

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.

📦 Install

Microsoft Store

This app is available on the Microsoft Store.

macOS via Homebrew

brew install --cask wsl-manager

Apple silicon, macOS 11 or newer. The cask ships with Homebrew itself, so no tap is needed; brew upgrade --cask wsl-manager picks up new releases.

Direct download

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.

Install via Winget

winget install Bostrot.WSLManager

Install via Scoop

scoop install extras/wsl2-distro-manager

Install via Chocolatey

This package is maintained by the community (@mikeee). It is not an official package.

choco install wsl2-distro-manager

Install a nightly build

The latest nightly build is available as an artifact in the "releaser" workflow or via this link.

⚙️ Build

Make sure flutter is installed.

Windows

flutter config --enable-windows-desktop
flutter upgrade

flutter build windows # build it
flutter run -d windows # run it

macOS

VMs are created by vmctl, a small Swift helper that drives Virtualization.framework — not by the Flutter app itself. The framework only answers processes carrying the com.apple.security.virtualization entitlement, and swift build does not add it, so the helper must be built and signed before the app can start a VM:

flutter config --enable-macos-desktop

# Build + sign vmctl and install it for dev runs. Re-run after any change
# under macos/vmctl/ — `flutter run` never rebuilds the helper.
VMCTL_ONLY=1 scripts/build_macos.sh

flutter run -d macos

Skip that step and the app launches fine, but starting a VM fails with:

VM failed to start: Error Domain=VZErrorDomain Code=2 "The process doesn't
have the "com.apple.security.virtualization" entitlement."

That is the helper missing the entitlement, not the app — Runner's own entitlements are already correct. The signed helper is installed to ~/Library/Application Support/WSLManager/bin/vmctl, which is where debug runs look for it; without it they fall back to the unsigned swift build output under macos/vmctl/.build/, which is what produces the error above.

scripts/build_macos.sh without VMCTL_ONLY does the same signing and then builds the release app, bundling the signed helper into the bundle's Contents/Resources/. Building the app itself needs full Xcode.

Author

👤 Eric Trenkel

👥 Contributors

🤝 Contributing

Contributions, issues and feature requests are welcome!
Feel free to check the issues page. You can also take a look at the contributing guide.

Show your support

Give a ⭐️ if this project helped you!

📝 License

Copyright © 2026 Eric Trenkel.
This project is GPL-3.0 licensed.


Not found what you were looking for? Check out the Wiki

排名相邻
同类项目