Ubuntu 24.04 Is Now Available on NumaVM
NumaVM now lets you choose between Alpine Linux and Ubuntu 24.04 LTS when creating a VM. Pick the distro that fits your workload — Alpine for speed, Ubuntu for full compatibility.
You can now create Ubuntu 24.04 LTS VMs on NumaVM. Pick your distro when you create a VM — Alpine stays the default, Ubuntu is there when you need it.
Why we added Ubuntu
Alpine is our default for a reason — it’s tiny, it boots fastest, and for most development workflows it’s exactly what you want. Write a web app, run agents, spin up a quick sandbox. Alpine handles all of that well.
But Ubuntu is the most popular Linux distribution in the world — over 60% of cloud Linux instances run it, GitHub Actions defaults to it, and most developers already know their way around apt. If you want a NumaVM environment that feels like every other Linux box you’ve ever worked on, Ubuntu is the obvious choice.
It also solves a real compatibility gap. Alpine uses musl (a lightweight C library), and some workloads need glibc (the standard C library). If you’re installing npm packages with native bindings (sharp, bcrypt, anything using node-gyp), the prebuilt binaries target glibc. Same with Python wheels — pip install numpy or pip install cryptography on Alpine falls back to compiling from source, which is slower and requires extra system dependencies.
Ubuntu 24.04 uses glibc — the same C library running on CI servers, cloud VMs, and developer laptops everywhere. If your project depends on packages that assume glibc, Ubuntu removes that friction. If it works on your CI server, it works on your NumaVM Ubuntu VM.
What Ubuntu 24.04 LTS ships with
Ubuntu 24.04 is the current long-term support release — supported through April 2029 with standard updates, April 2034 with Ubuntu Pro. It ships with Linux 6.8, which includes improved syscall performance and the low-latency kernel features merged into the default kernel (no separate -lowlatency package needed).
The developer toolchain is current: GCC 14, Python 3.12, Go 1.22, Rust 1.75, .NET 8, OpenJDK 21. The apt package repository has over 30,000 packages — roughly 3x what Alpine’s apk offers.
GitHub Actions defaults to Ubuntu. CircleCI’s base images are built on Ubuntu. When documentation says “run this on Linux,” they tested it on Ubuntu. Choosing Ubuntu for your development VM means one less variable between your local environment and everywhere else your code runs.
What each distro offers on NumaVM
| Alpine | Ubuntu 24.04 LTS | |
|---|---|---|
| C library | musl | glibc |
| Boot speed | Faster | Slightly slower |
| Image size | Smaller | Larger |
| Node.js | v22 (Alpine edge) | v22 (NodeSource) |
| Pre-installed | bash, git, tmux, Python 3, build tools, SSH | bash, git, tmux, Python 3, build-essential, SSH, curl, wget, jq |
| Best for | Lightweight tasks, fast iteration | Full compatibility, packages that need glibc |
Both come with Claude Code, Codex, and OpenCode pre-installed. Both snapshot and resume the same way.
How to use it
If you’re on numavm.com, select Ubuntu in the image dropdown when creating a VM. That’s it.
If you’re self-hosting, build the Ubuntu rootfs:
./vm/build-rootfs.sh ubuntu
The build system was refactored into a pluggable framework — each distro is a shell profile in oss/vm/distros/. Built images are tracked in a manifest with versioning and SHA256 checksums. The control plane picks them up automatically. No config changes needed.
The API also supports it directly: POST /vms accepts an optional image field. GET /images returns available distros. Existing VMs are unaffected — they default to Alpine.
When to pick which
Alpine (default) is the fastest option — smallest image, quickest boot, lowest overhead. It handles web development, agent workflows, and most day-to-day coding without issue. If you don’t have a specific reason to pick Ubuntu, Alpine is the right choice.
Ubuntu is for developers who want a familiar environment — the same apt, the same glibc, the same everything they already know. It’s also the right pick when your workload needs glibc compatibility: native npm modules, Python packages with C extensions, or tools built and tested against the Ubuntu/Debian ecosystem. Larger image, slightly slower boot, but the full apt repository with over 30,000 packages and zero compatibility surprises.
Adding more distros
The framework is extensible. Adding a new distro — Debian, Fedora, whatever — means dropping a shell profile into distros/ that defines bootstrap, package install, Node.js setup, and cleanup functions. No control plane or dashboard changes required. The manifest picks it up, the API exposes it, the dashboard shows it.
We started with the two that cover the vast majority of use cases. If there’s a distro you want to see, let us know.