Skip to content

feat(azure): support Windows desktop and WSL2 leases#81

Merged
steipete merged 2 commits into
openclaw:mainfrom
jwmoss:feat/azure-windows-parity
May 12, 2026
Merged

feat(azure): support Windows desktop and WSL2 leases#81
steipete merged 2 commits into
openclaw:mainfrom
jwmoss:feat/azure-windows-parity

Conversation

@jwmoss

@jwmoss jwmoss commented May 11, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds Azure parity for managed Windows targets:

  • Azure native Windows can now use --desktop / VNC through the shared post-SSH Windows desktop bootstrap.
  • Azure Windows WSL2 leases are accepted for POSIX sync/run and Actions hydration, matching the AWS WSL2 contract.
  • --target windows --windows-mode wsl2 --desktop is rejected for both AWS and Azure because WSL2 is a POSIX run target, not the managed VNC desktop target.
  • Docs now describe the shared support boundary: native Windows for desktop/VNC, WSL2 for Linux tooling on a Windows host.

Closes #80

Maintainer rewrite

Rebased onto current main, kept the Proxmox template helper changes intact, removed the legacy project-specific helper change from this PR, and added the 0.12.0 changelog entry with contributor credit.

Verification

Local:

go test ./internal/cli -run 'TestValidateRequestedCapabilities|TestValidateProviderTargetAllows|TestArtifactCollectNeedsDesktop|TestSCPBaseArgsUseLegacyProtocolForNativeWindows|TestAzureVMSizeCandidatesForTargetModeClass|TestAzureWindowsDesktopExtensionBootstrapLeavesRebootToSSHBootstrap|TestAWSUserDataWindowsProfile'
go test ./internal/providers/azure
npm test --prefix worker -- --run test/config.test.ts test/bootstrap.test.ts test/azure.test.ts
npm run docs:check
npm run check --prefix worker
npm run format:check --prefix worker
git diff --check main..HEAD
go test ./...

Live direct Azure, using a temporary config with broker env cleared:

CRABBOX_CONFIG=<tmp> CRABBOX_COORDINATOR= CRABBOX_COORDINATOR_TOKEN= ./bin/crabbox run \
  --provider azure --target windows --windows-mode wsl2 --class standard \
  --market on-demand --no-sync --preflight --timing-json -- \
  bash -lc 'echo CRABBOX_AZURE_WSL2_PR81_OK; uname -a; command -v rsync; command -v git; id'

Observed:

leased cbx_7517bebdf301 slug=harbor-barnacle provider=azure type=Standard_D2ads_v6
CRABBOX_AZURE_WSL2_PR81_OK
Linux ... microsoft-standard-WSL2 ... Ubuntu 24.04 LTS
/usr/bin/rsync
/usr/bin/git
uid=0(root) gid=0(root)
exit=0
released cbx_7517bebdf301
CRABBOX_CONFIG=<tmp> CRABBOX_COORDINATOR= CRABBOX_COORDINATOR_TOKEN= ./bin/crabbox run \
  --provider azure --target windows --windows-mode normal --desktop --class standard \
  --market on-demand --no-sync --timing-json --shell -- \
  'Write-Output "CRABBOX_AZURE_WINDOWS_DESKTOP_PR81_OK"; $result = Test-NetConnection -ComputerName 127.0.0.1 -Port 5900; Write-Output ("vncTcp=" + $result.TcpTestSucceeded); if (-not $result.TcpTestSucceeded) { exit 7 }'

Observed:

leased cbx_b60d5a9116d9 slug=quick-crayfish provider=azure type=Standard_D2ads_v6
Windows desktop VNC ready
CRABBOX_AZURE_WINDOWS_DESKTOP_PR81_OK
vncTcp=True
exit=0
released cbx_b60d5a9116d9

GitHub CI for fcb470942da3c4ea3c2217773e1ff45d0811165c is green.

@jwmoss jwmoss force-pushed the feat/azure-windows-parity branch from f524476 to 994df11 Compare May 11, 2026 16:41
@steipete steipete force-pushed the feat/azure-windows-parity branch from 994df11 to fcb4709 Compare May 11, 2026 17:17
@steipete steipete merged commit ab38b0c into openclaw:main May 12, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add Azure Windows desktop/VNC and WSL2 parity

2 participants