Pane
Windows-native Linux environment platform, starting with Arch.
What Pane Is · Supported MVP · Quick Start · Roadmap · Arch MVP Guide · Vision · Product Contract · Native Runtime
Pane is a Windows-native app for creating, launching, and supporting real Linux environments on Windows. It is not just a WSL helper, a script packager, or a thin RDP wrapper. The product goal is simple: open Pane, get a real Linux environment with a real GUI desktop, customize it freely, and let Pane own the setup, launch, reconnect, repair, reset, file sharing, and support flows.
Today Pane is a pre-release Arch-first MVP on top of the completed Phase 1 foundation. It already provides a packaged pane.exe, a Windows-side Control Center, a managed pane-arch path, first-run onboarding for Arch user creation and WSL defaults, PaneShared storage, diagnostics, repair/update/reset flows, support bundles, and a real Linux GUI handoff through mstsc.exe. The product is already app-shaped and supportable, but it still uses XRDP under the hood and is not yet the final contained display architecture.
- a Windows-native Linux environment platform
- an app-shaped control surface for creating, launching, and supporting Linux environments
- Arch-first today, with Ubuntu LTS next and Debian later
- a product for real Linux use and real user customization, not a fake sandbox
- a managed integration layer that owns onboarding, launch, reconnect, repair, reset, updates, shared files, and support workflows
- not a broad distro picker with equal support for everything
- not a desktop-profile matrix full of half-supported options
- not an embedded display window yet
- not honest to market as zero-latency while
mstsc.exe+ XRDP still carry the visible session - not yet a bootable Pane-owned OS runtime, though Pane now owns the dedicated runtime storage/config contract and WHP native-runtime preflight path
The hard part of a real WSL desktop workflow is not drawing a window. It is making first-run setup, account creation, launch, reconnect, recovery, and support predictable enough that normal users do not need tribal knowledge. Pane narrows the current MVP to one supported distro and one desktop environment so the recovery and diagnostics can be explicit instead of aspirational. That discipline is what lets Pane grow into a real Linux-on-Windows product instead of a fragile pile of toggles.
Pane currently supports one blessed path only:
- Windows 10 or 11
- WSL2 installed and working
- Arch Linux as the target distro
- XFCE as the desktop environment
systemd=truein/etc/wsl.conf- a non-root default WSL user with a usable password
- PaneShared storage exposed inside Arch as
~/PaneShared, durable by default and scratchable when requested - RDP handoff through
mstsc.exewith a localhost-first path plus an automatic Pane relay fallback - a Windows-side Pane Control Center for launch, update, repair, reconnect, support, and recovery actions
Everything else is intentionally deferred until after the MVP. Ubuntu, Debian, Fedora, KDE, GNOME, Niri, embedded RDP, GPU tuning, and custom transports are not part of the current support boundary. The current XRDP path now prefers direct localhost and falls back to Pane relay when Windows loopback cannot reach WSL directly, but true zero-latency still depends on the later non-RDP transport phase described in docs/vision.md.
If you are using the packaged build, double-click pane.exe to open the Control Center. When sidecar scripts are missing, pane.exe hydrates the app entrypoint into %LOCALAPPDATA%\Pane\app first. You can also double-click Install Pane Shortcuts.cmd once, then launch Pane from the Desktop or Start Menu.
The control center is the intended app surface. It exposes initialization, user setup, launch, terminal access, update, repair, reconnect, logs, PaneShared access, support-bundle generation, reset, and shortcut installation without forcing users into the CLI.
Inspect the managed-environment roadmap first when you want the platform view:
cargo run -- environmentsInitialize and onboard Pane-managed Arch in one first-run flow. By default Pane provisions the official Arch WSL image into a managed pane-arch distro, creates the Arch login user, enables the required WSL settings, and verifies launch readiness:
"strong-password" | cargo run -- onboard --username archuser --password-stdinThe split lifecycle commands still exist when you want more control:
cargo run -- init"strong-password" | cargo run -- setup-user --username archuser --password-stdinOpen an interactive shell inside the managed Arch distro when you want to customize the environment, edit dotfiles, or change passwords later:
cargo run -- terminalUse --user root for package installation, repair work, or other admin tasks unless you configure sudo yourself inside Arch:
cargo run -- terminal --user rootIf you already have an Arch distro you want Pane to adopt instead:
cargo run -- init --existing-distro archlinuxAdvanced fallback: import a rootfs tar manually only when you do not want the online provisioning path:
cargo run -- init --rootfs-tar C:\path\to\archlinux.tarValidate the machine and the selected Arch distro from the operator view:
cargo run -- doctor --de xfceInspect the app-facing phase, next action, storage policy, and display-transport boundary:
cargo run -- app-status --jsonPrepare the dedicated Pane runtime space and create the app-owned user disk descriptor that will eventually hold package, account, and customization data:
cargo run -- runtime --prepare --create-user-disk --capacity-gib 8Probe whether the Windows host and Pane runtime artifacts are ready for the first Pane-owned WHP boot spike:
cargo run -- native-preflight --jsonPreview the first WHP partition/vCPU smoke step. This is plan-only by default; add --execute only when you intentionally want Pane to create and tear down a temporary WHP partition:
cargo run -- native-boot-spike --jsonRegister a local Arch base OS image into Pane's runtime image store. Pass the expected SHA-256 whenever you have it; without that digest Pane records the image but keeps it untrusted:
cargo run -- runtime --register-base-image C:\path\to\arch-base.img --expected-sha256 <64-char-sha256>Preview the Pane-owned runtime launch path without invoking WSL, mstsc.exe, or XRDP:
cargo run -- launch --runtime pane-owned --dry-runRun a side-effect-free diagnostic pass before creating any Pane workspace state:
cargo run -- doctor --de xfce --no-write --no-connectPreview the generated assets without touching WSL services:
cargo run -- launch --dry-run --de xfceRun the real bootstrap and open the Windows RDP client:
cargo run -- launch --de xfceOpen or print PaneShared, the Windows-side storage that appears inside Arch as ~/PaneShared:
cargo run -- share --print-onlyPaneShared is durable user storage by default and survives pane reset. Use scratch storage for disposable sessions:
cargo run -- launch --de xfce --shared-storage scratchCheck whether an already-bootstrapped distro is actually reconnect-ready:
cargo run -- doctor --de xfce --skip-bootstrapThat reconnect view now verifies both the Pane-managed session assets and the default user's XFCE home/config layout, so it catches the exact blank-desktop and stale-session failures Pane now repairs automatically.
If bootstrap or reconnect still fails, package the diagnostics before asking for help:
cargo run -- bundlepane initprovisions the official Arch WSL image by default, adopts an existing Arch distro with--existing-distro, or imports a rootfs tar with--rootfs-taras an advanced fallback.pane onboardis the preferred first-run path: it initializes or reuses the managed Arch distro, configures the Arch login user, and verifies launch readiness in one command.pane environmentsprints Pane's managed Linux environment roadmap and support tiers.pane app-statusreports the Control Center lifecycle phase, recommended next action, PaneShared policy, and current-vs-planned display transport.pane runtimeinspects or prepares dedicated Pane-owned runtime storage, config, native-runtime manifest, verified base-image metadata, and the user-disk descriptor for the future contained OS engine. This is separate from PaneShared and does not boot the OS yet.pane native-preflightchecks the Windows Hypervisor Platform host boundary plus runtime artifacts for the future Pane-owned boot-to-serial spike. It is side-effect-free and does not claim the OS is bootable.pane native-boot-spikeis the first executable WHP host milestone. By default it prints the partition/vCPU smoke plan; with--executeit creates one temporary WHP partition and vCPU, then tears them down.pane doctorvalidates the supported MVP path and prints actionable fixes before launch or reconnect. Use--no-write --no-connectfor support diagnostics that must not create the Pane workspace or PaneShared.pane setup-usercreates or repairs the Arch login user, writes the default-user/systemd WSL config, and can restart WSL so the change takes effect immediately when you do not need the full onboarding flow. It does not grant passwordless sudo or edit/etc/sudoers.pane launchwrites the bootstrap script,.rdpprofile, persisted launch state, and optionally executes the Arch bootstrap.--shared-storage durableis the default;--shared-storage scratchscopes PaneShared to the disposable session workspace.--runtime pane-owned --dry-runexercises the native runtime contract without touching WSL/RDP.pane updaterefreshes Arch packages and reapplies the Pane-managed integration without openingmstsc.exe.pane repairreapplies the Pane-managed Arch bootstrap and session wiring without openingmstsc.exe.pane connectreopens the saved.rdpprofile after readiness checks pass.pane shareopens or prints PaneShared storage for the active session.pane terminalopens an interactive shell inside the resolved Arch distro, with--user rootavailable for first-run repair or password work.pane stopstops XRDP inside the selected distro.pane resetremoves Pane-managed local session assets while preserving durable PaneShared storage by default. Use--purge-sharedonly when that user data should be deleted too.pane reset --release-managed-environmentdetaches Pane from the managed distro without deleting it.pane reset --factory-resetunregisters a Pane-provisioned distro from WSL, removes its install root, and clears Pane ownership.pane reset --dry-runprints the reset plan without changing WSL, workspaces, or Pane state.pane logsprints the saved bootstrap transcript and the live XRDP logs from WSL when available.pane bundlewrites a zip archive with status, doctor output, state, workspace assets, and live XRDP logs when they can be collected.pane statusreports WSL inventory, MVP support status, readiness state, and the last generated Pane workspace.
Build a Windows package directory and zip archive with:
powershell -ExecutionPolicy Bypass -File scripts/package.ps1The script builds pane.exe, copies the core docs, and ships these app-like entrypoints in the package root:
pane.exe, which opens the Control Center when launched without CLI arguments and can hydrate the bundled app scripts when run alonePane Control Center.cmdandPane Control Center.ps1Launch Pane Arch.cmdandLaunch Pane Arch.ps1Open Pane Arch Terminal.cmdandOpen Pane Arch Terminal.ps1Open Pane Shared Folder.cmdandOpen Pane Shared Folder.ps1Collect Pane Support Bundle.cmdandCollect Pane Support Bundle.ps1Install Pane Shortcuts.cmdandInstall Pane Shortcuts.ps1certify-fresh-machine.ps1
You can smoke-test the packaged bundle itself with:
powershell -ExecutionPolicy Bypass -File scripts/certify-fresh-machine.ps1 -PackagePath .\dist\pane-windows-x86_64 -Mode PackageOnlyUse the stronger live Arch gate only on a machine where the managed Arch session is expected to work:
powershell -ExecutionPolicy Bypass -File scripts/certify-fresh-machine.ps1 -PackagePath .\dist\pane-windows-x86_64 -Mode LiveArchSessionPackageOnly validates package contents, standalone pane.exe hydration, Control Center self-test, native-runtime preflight reporting, dry-run onboarding, dry-run launch asset generation, shortcut creation, and the latency-oriented RDP profile without requiring a live Arch session. LiveArchSession also runs the full Arch package validator and verifies the generated support zip. The standalone guides are in docs/clean-machine-validation.md, docs/vision.md, and docs/native-runtime-architecture.md.
If you regenerate the app icon, install the Python development dependency first with pip install -r requirements-dev.txt.
cargo fmt
cargo clippy -- -D warnings
cargo test
cargo run -- status --json
cargo run -- app-status --json
cargo run -- runtime --json --prepare --create-user-disk --capacity-gib 8
cargo run -- native-preflight --json
cargo run -- native-boot-spike --json
cargo run -- doctor --json --distro pane-arch --de xfce --no-write --no-connect
cargo run -- doctor --json --distro pane-arch --de xfce
cargo run -- doctor --json --distro pane-arch --de xfce --skip-bootstrap| Environment | Role | Status |
|---|---|---|
| Arch Linux | Flagship first-class managed environment | Current |
| Ubuntu LTS | Second first-class managed environment | Next |
| Debian | Curated preview managed environment | Later |
Kali, Fedora, and other distros are intentionally not in the first support wave. Pane is trying to become the place where Windows users can use Linux without hassle, but it has to earn breadth slowly enough that support quality stays real.
| Stage | Focus | Why it matters |
|---|---|---|
| Now | Finish the Pane-owned Arch path: managed pane-arch, onboarding, account setup, repair/reset/update, support bundles, PaneShared storage, 8 GiB runtime-space reservation, base-image registration, user-disk descriptor creation, native-runtime preflight, and the Windows control surface. |
Make first-run, recovery, and data boundaries boring enough to trust. |
| Next | Move from verified runtime artifacts and WHP preflight to a Pane-owned boot-to-serial engine, starting with partition/vCPU smoke and then guest-memory/serial execution. | Make Pane behave more like an app-owned Linux appliance instead of a WSL helper. |
| Later | Embed the display into a Pane-owned window, then add Ubuntu LTS, Debian, and curated desktop profiles only when their lifecycle, reconnect, repair, and support path are real. | Expand honestly instead of cosmetically. |
| Final Architecture | Replace the XRDP handoff with a Pane-owned runtime/display transport. | Make the contained app and near-native responsiveness vision real. |
cargo check
cargo test
cargo run -- launch --dry-run --print-script --distro pane-arch --de xfceSee docs/mvp-arch.md for the operator guide, docs/product-contract.md for the long-term product contract, docs/native-runtime-architecture.md for the WHP runtime path, and docs/phase-1-audit.md for the closure checklist that marked the Phase 1 foundation complete.
See CONTRIBUTING.md.