Build1 publisher3 min readPublished
Firecracker's sub-200ms boot is real, but it only counts on a host you are already paying for by the hour, which is why an experimental GitHub Actions runner project stands or falls on its author's scheduler.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
The per-vCPU arithmetic carries the argument. Fill all 64 vCPUs and that host works out at about 3.4 cents per vCPU-hour [1]. Run a single 2-vCPU job on it and you are paying $1.09 per vCPU-hour for the same machine, 32 times the packed rate [2]. Closing that gap is the packer's entire job [9], and it is also the size of the penalty when placement goes wrong.
The boot numbers push the same direction. A microVM comes up in under 200ms [5]; the EC2 host underneath it takes 30 to 60 seconds, which is 150 to 300 times longer [4]. Booting a host per job pays for the full 64 vCPUs on a 2-vCPU workload and eats that cold start as well [8]. The fast boot is therefore a property of warm hosts only [9], and a warm host bills about $52 a day, roughly $1,570 a month, empty or not [3]. A packer that regularly leaves hosts warm and idle is one instance per job with extra steps and a worse invoice.
Firecracker's own contract is narrow. Three things per microVM: the binary, a kernel image, and a rootfs carrying the job's tools [18]. That rootfs has to be on the worker's own filesystem before Firecracker will hand it over, arriving from S3 at boot or pre-baked into the AMI [10], and every microVM that boots takes a private copy of it so concurrent VMs do not collide on writes [11]. Placement computed from CPU and memory [17] does not see those copies, and it does not see the S3 pull a fresh worker performs at boot [12]. Both bind hardest during exactly the burst the packer exists to absorb.
What the post reports going wrong is consistent with that. Its author lists a surprise AWS bill and a bug in his own code that was working against itself [14], without saying in this excerpt what either was. Those sit in the layer he wrote: the queue, the placement decision, the rootfs distribution.
The assumption underneath the design is the part worth watching. Firecracker needs direct KVM access, and the build assumed a .metal instance is the only way to get it on AWS [6]. AWS has since added a NestedVirtualization CPU option to c8i, m8i, r8i and their flex variants, with no bare metal host required [15]. If that exposes a KVM device Firecracker can use cleanly, the author writes, you could keep smaller and cheaper instances warm instead [16]. The post does not show that tested. Until someone tests it, the fixed hourly floor that justifies bin packing rests on a constraint AWS has already published a way around, and the case for microVMs over the Kubernetes pods that ARC already packs [13] comes down to whether a per-job kernel and disk [3] is worth a scheduler you maintain yourself.
Ranked by verification strength, evidence, and original report placement.
terraform-aws-github-runner spins up an EC2 instance for a single job, runs the job, then destroys the instance so nothing sits idle.
The author's project, BurstGrid, which he calls still very experimental, has a scheduler that receives GitHub workflow_job webhooks and holds a queue, while bare metal worker hosts run a pile of Firecracker microVMs and the scheduler dispatches jobs to whichever worker has room.
Each job gets its own microVM, its own kernel and its own disk, destroyed the second the job finishes.
Firecracker is a lightweight virtual machine monitor made by AWS, and it is what runs code under Lambda and Fargate.
A microVM boots in under 200ms instead of the usual 30 to 60 seconds for a normal VM.
A c6g.metal costs about $2.18/hr for 64 vCPUs whether it is running 1 microVM or 40.
Follow any of these and your For You feed starts watching them — no settings page required.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
One builder's notebook, arithmetic we can check
Everything rests on a single dev.to account by the person who built the thing, so the architecture, the $2.18/hr rate and the 40-microVM packing figure all travel on his word. That word is worth something here: he is describing a system he operated, and he volunteers the failures rather than the wins. But the claim doing the most work in the design, that only a .metal instance gives you KVM on AWS, is one the author himself downgrades to an assumption before the piece ends, and the AWS documentation he leans on is not in our coverage. The unit costs are ours, derived from his one hourly number.
One experimental project, author only
The only deployment on the record is the author's own, described as still very experimental, with no other operators, no job volumes and no runtime figures. The two established alternatives get named as precedent rather than measured, and the AWS instance option that would change the economics reaches us secondhand with nobody in the story having run it.
Undersold, with one over-firm line
The author files this as fun and learning, which sells the finding short: the cost structure he stumbled into generalises to anyone putting hardware-isolated runners on rented hosts, and the point that fast microVM boot only pays off on a host you are already renting by the hour is the kind of thing usually discovered after the invoice. The single place the language runs ahead of the evidence is the bare-metal-only framing, which he walks back himself once nested virtualization comes up.
Personal build log, nothing on sale
No sponsor, no product and no vendor relationship shows anywhere in the piece. The author's stake is reputational at most: he is publishing a project under his own name and inviting corrections in the comments, and he leads with the bill and the bug rather than a benchmark. AWS is simultaneously the source of the cost complaint and of the possible fix, and nothing suggests the post is positioned for or against it.
Trust the shape, not the numbers
The mechanics are internally consistent and match how Firecracker is generally known to work, so we are reasonably confident about the architecture and the reason packing matters. Confidence in the quantities is lower: one hourly rate, one packing figure, no independent confirmation, and a platform capability that may already have moved the constraint the story is built around.
build
Firecracker won't run on a Mac, so Encore rebuilt the Linux image toolchain to match1 publisher
build
The middle tier for Postgres: own kernel, no public IP, and you own the backups1 publisher
build
SageMaker v3 drops the framework estimators, and your training code is the migration1 publisher
build
Four concurrent MPS processes fill the L40S that one ASR request leaves 80% idle1 publisher
Publishers with included, body-backed reporting in this cluster.
1 article · September 7, 2026