Add Azure as a managed provider for direct and brokered Crabbox leases. - provision Azure Linux VMs with cloud-init, spot fallback, shared network adoption, and per-lease cleanup - provision native Azure Windows VMs with VM Agent bootstrap and SSH/sync/run support - add Azure broker support in the Cloudflare Worker, provider config, docs, and tests - fix async Azure delete handling so successful 202 delete LROs do not refetch deleted resources - keep Go core coverage above the CI threshold Verified with CI plus live Azure Linux and native Windows leases. Co-authored-by: Jonathan Moss <2729151+jwmoss@users.noreply.github.com>
1.9 KiB
screenshot
crabbox screenshot captures a PNG from a desktop lease without opening a VNC
client.
crabbox warmup --desktop
crabbox screenshot --id blue-lobster
crabbox screenshot --id blue-lobster --network tailscale
crabbox screenshot --id blue-lobster --output desktop.png
The command resolves and touches the lease like crabbox ssh, verifies that the
lease has desktop=true, waits for the loopback desktop/VNC service, then
streams a PNG over SSH. Linux captures DISPLAY=:99. Windows creates a
one-shot scheduled task inside the logged-in crabbox console session, because
non-interactive SSH sessions cannot capture the visible desktop. macOS uses
screencapture.
For Windows, the screenshot reflects the active console session in the
Crabbox-created instance. Managed AWS Windows desktop leases enable auto-logon
for the generated crabbox user, store that password under
C:\ProgramData\crabbox, and use it only on the instance to run the scheduled
capture task.
If --output is omitted, Crabbox writes:
crabbox-<slug-or-id>-screenshot.png
Static macOS and Windows targets are existing host machines, not Crabbox-created
desktops, so screenshot rejects those targets instead of capturing your local
or home-host desktop by accident. Managed AWS Windows and AWS macOS desktop
leases are Crabbox-created boxes and can be captured by lease id or slug.
Flags:
--id <lease-id-or-slug>
--provider hetzner|aws|azure|ssh|daytona
--target linux|macos|windows
--windows-mode normal|wsl2
--static-host <host>
--static-user <user>
--static-port <port>
--static-work-root <path>
--network auto|tailscale|public
--output <path>
--reclaim
Related docs: