Back to News
Advertisement
bbketelsen about 4 hours ago 42 commentsRead Article on frostyard.github.io

FR version is available. Content is displayed in original English for accuracy.

One of the things that Windows really got right is WSL2. I drive an atomic Linux distro for daily use, but wanted a way to develop with multiple different distros with that same WSL UX. NSL is my answer. It is a faithful reproduction of the developer experience, powered by a single VM that hosts one or more systemd-nspawn containers with your development instances. Host file edits and port sharing come along for the ride, just like WSL. Take a look and tell me what you think... It's yet another step in my long journey to keep my host installation free from all the changing and breaking dev dependencies that force a reinstall every few months.
Advertisement

⚡ Community Insights

Discussion Sentiment

85% Positive

Analyzed from 1089 words in the discussion.

Trending Topics

#systemd#wsl#containers#nspawn#linux#kernel#host#vms#windows#container

Discussion (42 Comments)Read Original on HackerNews

rao-v•about 2 hours ago
I have to say this is nice packaging. It is weirdly not obvious how nice it is to cleanly use a different “machine” inside your desktop.

I never thought I’d prefer WSL to even my MacBook for working with remote servers and dev but somehow I do.

I of course know the many ways to roll something like this for myself, yes dev containers are better for many things etc. but it’s wierd how good the ergonomics of a WSL like container are.

bketelsen•about 2 hours ago
Thanks for saying so! That's exactly why I wrote this. The UX of wsl2 is just right. There are a lot of other ways to accomplish this, but none touch that same experience.
teeskay•6 minutes ago
Just a recommendation that difference between docker container and nsl on homepage is worth it
0x457•about 2 hours ago
I'm confused why VM + systemd-nspawn? From my understaing WSL 2 runs a single VM + something like systemd-nspawn per "linux installation", but it runs a VM because it needs linux kernel. Why not just do systemd-nspawn if you alread on linux?
pkulak•about 1 hour ago
Way better isolation, is my guess. Plus, you can use a different kernel this way.

I used to poo-poo when people said that containers aren't a _real_ security boundary, at least for personal stuff, and not a multi-tenant server. But I bet even mid-tier LLMs can break out of LXC/Docker/nspawn at this point.

fhn•about 1 hour ago
can they not break out of a VM?
pkulak•about 1 hour ago
It's at least harder! Better chance it'll hit your 5-hour limit before it does. haha
esseph•30 minutes ago
Yes, and have.

---

"During a test conducted by Trail of Bits researcher Artem Dinaburg, a preview version of GPT 5.6-Cyber was tasked with breaking out of a Debian 12 virtual machine. Initially, the agent exploited a known Linux kernel vulnerability, CVE-2026-53359, by developing its own exploit. After the host was updated, the agent found another pathway through libslirp, chaining a known vulnerability (CVE-2026-9539) with a previously unassigned bug to gain arbitrary host memory access. Even after QEMU and libslirp were updated, the agent analyzed system components and constructed a new escape chain using three zero-day vulnerabilities and one KVM flaw that had not yet reached the distribution kernel.

These findings suggest that general-purpose VMs may not be adequate security boundaries for highly capable AI agents, especially in older systems with delayed security updates. Trail of Bits recommends using specialized isolation systems like Firecracker, restricting VM access, and implementing rapid patching to mitigate these risks."

---

https://www.scworld.com/brief/ai-agent-repeatedly-escapes-vi...

bketelsen•about 2 hours ago
you could, and if that's your preference https://nspawn.org is just right.
0x457•about 2 hours ago
Neat, I wasn't aware of this tool. I just either run nixosContainer in systemd-nspawn or OCI image in systemd-nspawn.
delusional•about 2 hours ago
Claude told him to do it this way.
nateb2022•about 2 hours ago
I'd trust OP to make good architectural decisions/provide guidance even if AI mostly wrote the docs and UI. Looking into their GitHub, seems they are an engineering manager at Microsoft and contribute semi regularly to uBlue and Project Bluefin. Should be better quality than some random vibeslopper.
28304283409234•11 minutes ago
Always looking for a successor to https://developer.hashicorp.com/vagrant. Is this it?
bita_nidir•13 minutes ago
I'll give this one a try, thanks for sharing!

FWIW, I'm currently using systemd-nspawn via mkosi: https://github.com/systemd/mkosi

It makes an image and runs it in separate namespace. It can start at bash or init. It's very fast but there seem to be a problem creating an Ubuntu image on Debian and vice versa.

bee_rider•about 1 hour ago
The name WSL has always struck me as a bit back area (LSW would seem to make more sense, since it is a Linux subsystem for Windows). I guess they mean it as a Windows Subsystem for Linuxing.

Anyway, should this be called LSL or WSLL? Or maybe LSWSL.

bityard•2 minutes ago
The naming is a bit awkward now, but an original design goal of the Windows NT kernel was the ability to host different types of OS "personalities" (userspace, essentially) on top of the Windows kernel, and these are called "subsystems." Win32 is one such subsystem, although there was no need to formally call it "Windows Subsystem for Win32" because everyone understood that it was just Win32 ported to NT.

The NT kernel designers came from VMS, and during development MS made various half-hearted promises that NT would be able to run VMS software as well but never actually followed through. If they had, there would likely have been a Windows Subsystem for VMS.

dspillett•39 minutes ago
It is continuing a historic naming "accident", the precedent having been set by Windows Services for UNIX and similar in the 90s/00s.
thayne•about 2 hours ago
How does this compare to distrobox?
bketelsen•about 2 hours ago
Distrobox mounts $HOME in the container at $HOME by default. WSL and NSL do not, and that's my preference. This means you can install tools that change your default path, change your dotfiles, etc, without affecting the host. The other obvious difference is that distrobox is powered by podman or docker, while NSL uses a VM that runs systemd-nspawn containers.
michaelastreiko•about 1 hour ago
Nice flip of the WSL idea the other way — simple interop like this keeps a one-person stack from turning into a VM zoo.
rpcope1•about 2 hours ago
So you've just basically reimplemented LXC?
pkulak•about 2 hours ago
Nope. This is a VM, with containers inside. And the containers weren't "re-implemented", it uses existing systemd containers. That's what I was able to learn by skimming the site for 30 seconds. Did you not even do that? And why even be so condescending to someone else's project?
ktm5j•about 2 hours ago
Because it does seem like we already have tools that skin this particular cat, it's valid to wonder what value this project provides over existing solutions.. even if they chose the wrong example to compare it to. Why do you think that's condescending?
nurettin•about 2 hours ago
LXC is a jail and qemu is an extra layer of emulation. Why pay that extra cost? Just because it serves a wsl image isn't really an answer. How is that worth the extra layer?
pkulak•about 2 hours ago
EDIT to not be a dick about it: I think the key detail here is the difference in isolation between containers and VMs, and where emulation comes in.
graemep•about 2 hours ago
This is most useful to people who run Linux as their daily driver so rather than saying its like WSL can you explain what it offers that existing Linux containers do not?

Its also sounds different from WSL which I thought is a VM rather than a container.

> It's yet another step in my long journey to keep my host installation free from all the changing and breaking dev dependencies that force a reinstall every few months.

Something that also require a bit of explanation. What do you do that makes this such a common problem.

bketelsen•about 2 hours ago
WSL2 uses a shared VM that does host integration (networking, shared files, permanent storage for each instance). NSL uses the same model but with Linux native technical implementations.

As for keeping my host clean - it's the developer's curse that always gets me. Install libWhatever3.2-dev because you need it to compile something, then don't realize until next time you open Chrome that it broke your system in some subtle way. There are dozens of ways to solve this like devcontainers, docker, incus, fully separate or remote vms. I like the WSL2 model so I wanted that same UX.

graemep•5 minutes ago
So a single VM with multiple containers within it? Interesting, but I think you should make it immediately clear on your site. Persistence is not the USP because there are lots of ways that you can get persistent VMs or sandboxes.
dingaling911•about 2 hours ago
Looks very cool.

Now all you have to do is run NSL under WSL.

bketelsen•about 2 hours ago
challenge accepted!
Advertisement
codr1•11 minutes ago
This is very cool. GG.
bezko•44 minutes ago
someone has to ask the question: can you run lsl in wsl?
varispeed•about 2 hours ago
The project is cool, but please use human written text.

The website's Claudisms are unbearable.

RandomGerm4n•about 2 hours ago
There's already Distrobox, which does exactly the same thing but isn't slop.
KyleGospo•about 1 hour ago
This handles use cases Distrobox can't, they both have a place.
the_real_cher•about 2 hours ago
IS it LXC containers or docker? Or are you running a custom chroot namespace setup?
mhitza•about 2 hours ago
Haven't checked the actual project but he does state he uses systemd-nspawn. Which is it's own kind of container runtime.
bketelsen•about 2 hours ago
none of the above. a single vm started by systemd-vmspawn which then starts one or more containers for your instances using systemd-nspawn. It ends up being fast and lightweight.
smw•about 2 hours ago
He runs a systemd-nspawnd container in a "small vm", so neither really?