Repository navigation
feat(computer): boot Windows computers on modal_vm - #534
Merged
Merged
Conversation
…, as Linux disks do A composed Windows disk is pushed to the env's image store under its key and recorded pinned; a compose of the same inputs on any machine reuses it, and a deploy pulls it. A base is pushed under a tag of its recipe, with the key to its admin, so a machine without it pulls it to compose a layer instead of installing Windows, and fetches no ISO to find it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A thin disk is carried whole: its base, exported once for each base, its layer and its guest file, compressed and mounted beside each other; the launcher expands the base beside the disk. Windows gets a longer ready timeout. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…llback for a layer count docker always gives Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…local base the image store lacks Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
Author
E2E on ModalSet-up:
The base compresses poorly at |
…her than cache the disk without it Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Its work folder and container are named for the disk and cleared under its lock before it's exported again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
Author
More e2e and chaos on Modal
Fixed here: 36e6bac. An export's work folder ( |
…path, so two users' exports never clear each other's Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…dows names derived from a key in one place - pin_if_served beside pin_digest replaces the composer's _served and Registry's own copy of it; _image_store gets the env's store with its repository for _stored and the Windows compose alike. - base_names and disk_names name a base or disk from its key, here and in the store; compose takes the key rather than both names. - labels is imported as image_labels, no longer shadowed by compose's parameter and Registry's method. - The ISO label nothing read, and the sha256 helper only it used, are gone; Registry's store is an ImageStore. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Base automatically changed from
edgararakelyan/windows-images-in-the-image-store
to
main
November 8, 2026 00:44
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d beside the disk, under your own licence Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ne place, and a disk form's own ready timeout - _layout gives a disk's id and its base's first layer, for the machine image and the export alike. - _Cached names an export's files: the disk, its guest file, the file naming its base's export, its work folder. - modal_vm mounts the disk, base and guest file where a disk's own image holds them (DISK_FILE and its siblings). - A disk form says how long a boot of it may take to be ready (ready_timeout_s); windows-11 says 600 s, which replaces the os_type branch in boot.ready_timeout, now given the env and the form it boots. - The export tests share one fake Docker; _compressed no longer takes the image for its message. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…y boot measured stays well within Its ready wait takes about 40 s on modal_vm, whose export and upload come before it, and about 30 s on local Docker. Drops the disk form's ready_timeout_s, the windows-11 value and the ready_timeout signature change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this does
Part of FD-5321. Windows computers now boot on
modal_vm, as Linux disk computers do. It builds on #531, which keeps Windows disks in the image store.disk.img, about 750 MB) on its base (base.img, 11.6 GB).exported_disknow returns anExported, not aPath. Onlymodal_vmcalls it.Exportedholds up to three files, each exported from the image store and compressed into this machine's cache:modal_vmmounts the three files at/disk/disk.img.zst,/disk/base.img.zstand/disk/guest, the same paths as in the disk's own image, and passes the base's path asVM_BASE. Modal caches a mounted file by its content, so a base goes up once and each computer on it adds only its layer.VM_BASEbeside the expanded disk, as thebase.imgthe disk is backed by. It reads the guest file from beside the disk, as it already did.modal_vmlistswindows/amd64among the disk platforms it boots._layout).modal_vmand how its base is carried. The README adds a note: onmodal_vm, Windows runs in your own Modal workspace, under the evaluation's terms or a licence of your own.A Linux disk is one layer and is exported and mounted as before.
Windows keeps the default ready timeout (180 s). On
modal_vm, a whole deploy step, ready wait included, took 40–100 s across runs; the export and upload happen before the wait starts. On local Docker it took about 26 s.Tested
Unit tests:
modal_vmmounts andVM_BASE;Full unit tier: run on an EC2 box.
E2E on Modal, from an EC2 box with the composed disk in its image store:
Details are in the comments below.
🤖 Generated with Claude Code


Confidence Score: 5/5
The PR appears safe to merge; no new actionable issues were found.Summary
Windows disks can now boot on
modal_vm.Diagram
%%{init: {'theme': 'neutral'}}%% flowchart LR A[Disk image] --> B[Local export cache] B --> C[Compressed disk] B --> D[Shared compressed base] B --> E[Guest file] C --> F[Modal sandbox] D --> F E --> F F --> G[Launcher expands disk and base] G --> H[Windows boots]Reviews (10) · Last reviewed commit: "revert(computer): Windows keeps the defa..." · Reviewed by Greptile