CONCEPT Cited by 1 source
No container image (Sprite design)¶
Definition¶
A VM-platform design decision: do not let users supply a
container image. Every instance boots from a single platform-
standard image; user workloads bring their state through a
different mechanism (durable filesystem, apt install, VCS
clone) after boot. The container image — with all of its
Dockerfile semantics, registry pulls, layer unpacking, and
per-image cache misses — is removed from the create path.
Canonical wiki statement¶
Fly.io Sprites, 2026-01-14:
"Sprites get rid of the user-facing container. Literally: problem solved. Sprites get to do this on easy mode. Now, today, under the hood, Sprites are still Fly Machines. But they all run from a standard container. Every physical worker knows exactly what container the next Sprite is going to start with, so it's easy for us to keep pools of 'empty' Sprites standing by. The result: a Sprite
createdoesn't have any heavy lifting to do; it's basically just doing the stuff we do when westarta Fly Machine."(Source: [[sources/2026-01-14-flyio-the-design- implementation-of-sprites]])
Why the container-image path is slow¶
Ptacek enumerates four costs that deleting the user-container eliminates:
- "Huge and fussy, they take forever to pull and unpack."
- Registry throughput — "A truly heartbreaking amount of engineering work has gone into just allowing our OCI registry to keep up with this system."
- Regional locality — "create a Fly Machine in São Paulo
on
gru-3838, and a create ongru-d795is no faster" — the image isn't present regionally, so every fresh region hits the global registry. - Per-image variance — since every user's image is different, no amount of per-host caching eliminates the pull on first create.
What replaces the container image¶
- Warm pool of Sprites on every worker — every physical
worker holds pre-created Sprites on the standard image;
createis pool-dequeue, not image-pull. See concepts/warm-sprite-pool and patterns/warm-pool-zero-create-path. - User state arrives after boot —
apt install, VCS clone, Claude/agent-driven provisioning, durable filesystem that persists across sessions. The sources/2026-01-09-flyio-code-and-let-live|2026-01-09 demo: "apt-get install ffmpeg" inside the Sprite after create. - Durable filesystem between uses — the
ffmpeginstalled today is still there tomorrow because storage survives outside the image path. Enabled by concepts/object-storage-as-disk-root.
Contrast with Fly Machines¶
Fly Machines are "approximately OCI containers repackaged as KVM micro-VMs" — the Dockerfile is load-bearing. The 2024 Making Machines Move retrospective carries the cost explicitly: "It took 3 years to get workload migration right with attached storage, and it's still not 'easy'." Most of that 3-year cost is the image + attached-storage-anchoring combination.
Ptacek's summary:
"We only murdered user containers because we wanted them dead. […] We love [Fly Machines] very much and they're clearly the wrong basis for a ball-point disposable cloud computer."
Trade-offs¶
- Image composition is no longer in user's contract. Users who need a specific base image or a pre-baked toolchain install it at first boot — slower first use, but only the first.
- Cold tooling on first boot. A blank Sprite with
apt installhas to pay the package-install latency the first time. Ameliorated by pre-installed defaults (Claude, Gemini, Codex in the 2026-01-09 post) and by checkpointing the post-install state ([[concepts/fast-checkpoint-via- metadata-shuffle]]). - Fit with CI/CD conventions. "For that matter, professional production apps ship out of CI/CD systems as OCI containers; that's a big part of what makes orchestrating Fly Machines so hard." — Sprites opt out of the CI/CD ecosystem that container images fit into, by design, at the cost of not being the right product for production-scale app shipping.
Not a universal prescription¶
The no-container-image decision is scoped to the Sprites product shape: durable per-user interactive VMs. It is not a claim about production-app orchestration. Ptacek:
"Sprites live alongside Fly Machines in our architecture. […] An automated workflow [prototype on Sprites, ship as Fly Machine] will happen."
Seen in¶
- [[sources/2026-01-14-flyio-the-design-implementation-of- sprites]] — canonical wiki statement.
Related¶
- concepts/warm-sprite-pool — the technique that replaces the image-pull cost.
- concepts/fast-vm-boot-dx — the DX promise this decision lets Sprites keep.
- patterns/warm-pool-zero-create-path
- systems/fly-sprites
- systems/fly-machines — contrast case.
- companies/flyio