You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Windows: create a warm/golden AMI from the imported one to skip Sysprep first-boot on every launch #98
The AMI produced by spawn image import (EC2 Image Builder import-disk-image)
pays the full Windows Sysprep Specialize + OOBE first-boot cost on EVERY
launch — observed ~20 min on t3.large and still several+ min on m7i.xlarge
("Getting ready" splash). The bottleneck is the OOBE/specialize work, not just
instance CPU, so it can't be fixed by sizing up. Every spawn launch of the
imported AMI is therefore slow.
Idea (golden/warm AMI)
Launch the imported AMI once, let it finish first-boot setup (+ SSM agent +
spored + AWS drivers all settled), then create a NEW AMI from that running
instance. The second ("warm") AMI skips the import/OOBE tax and boots like a
normal AMI.
spawn already has the building block: spawn ami create <instance> (sibling
of the ami delete/ami snapshots added in #83). So the flow becomes: image import (one-time, slow) → launch → spawn ami create → launch the warm
AMI thereafter (fast).
Design question: generalize or not?
Non-generalized warm AMI boots straight to ready (fastest), but all
instances share one machine SID — fine for spawn's ephemeral throwaway
workers, not for domain-join/fleets.
Sysprep-generalized warm AMI re-specializes on launch (still much faster
than import, safe for fleets).
Probably: default to non-generalized for spawn's single-ephemeral model, with an
option to generalize. Possibly fold a --warm/post-import step into the import
flow so spawn image import can optionally produce the warm AMI automatically
(launch → wait-ready → ami create → terminate the seed).
Acceptance
A documented (ideally one-command) path from the imported AMI to a warm AMI.
Launching the warm AMI reaches usable state in ~normal Windows boot time, not
import-OOBE time.
Decision (with maintainer): the warm-AMI step should be baked into the spawn
Windows flow, not just documented. Live test confirmed the need — an imported
AMI took ~35 min to first-boot (Sysprep Specialize) before SSM registered, even
on m7i.xlarge; the OOBE tax is per-launch on the imported image.
Proposed: spawn image import for Windows automatically produces the fast warm
AMI as a final stage — import (slow, one-time) → launch a seed instance →
wait until ready (password available / SSM Online, i.e. first boot + EC2Launch
user-data done) → spawn ami create the warm AMI → terminate the seed. The warm
AMI is what users launch thereafter (normal boot time). Default to
non-generalized for spawn's ephemeral model; --generalize option for fleets.
A flag (e.g. --no-warm) can opt out for the raw import.
This pairs with #95 (the connect work just verified): on a warm AMI, SSM/spored
are already installed + running, so connect is fast and reliable from boot.
Activity
scttfrdmn commentedon Jun 11, 2026
Decision (with maintainer): the warm-AMI step should be baked into the spawn
Windows flow, not just documented. Live test confirmed the need — an imported
AMI took ~35 min to first-boot (Sysprep Specialize) before SSM registered, even
on m7i.xlarge; the OOBE tax is per-launch on the imported image.
Proposed:
spawn image importfor Windows automatically produces the fast warmAMI as a final stage — import (slow, one-time) → launch a seed instance →
wait until ready (password available / SSM Online, i.e. first boot + EC2Launch
user-data done) →
spawn ami createthe warm AMI → terminate the seed. The warmAMI is what users launch thereafter (normal boot time). Default to
non-generalized for spawn's ephemeral model;
--generalizeoption for fleets.A flag (e.g.
--no-warm) can opt out for the raw import.This pairs with #95 (the connect work just verified): on a warm AMI, SSM/spored
are already installed + running, so connect is fast and reliable from boot.
fix(windows): raise warm-seed SSM wait to 75m + make it configurable (#…
feat(windows): gate warm AMI on password-ready, not a hard SSM timeout (
docs(windows): document the warm-AMI stage + ~4min-vs-~28min payoff (#98
feat(windows): bake a warm/fast-boot AMI into the import flow (#98) (#…
feat(connect): Windows --ssh + Windows beta guide rewrite & capabilit…
fix: re-arm EC2Launch before warm-AMI imaging so password is retrieva…
fix(image): warm seed needs SSM instance profile; tell dead from slow (…
chore(deps): bump substrate to v0.71.0; re-enable SSM dead-path e2e t…
chore(release): v0.53.0 (#183)
fix: set Windows Administrator password over SSM instead of GetPasswo…