smolvm kjører utrygg Python og JavaScript i maskinvareisolert mikro-VM
Kjører utrygg Python og JavaScript i en maskinvareisolert mikro-VM der nettverket er avslått som standard.
«No /dev/kvm, no vmx/svm CPU flags», noterte KI-agenten Simon Willison hadde satt til å teste smolmachines som sandkasse. Oppdraget var konkret: finn ut hva som skal til for å kjøre utrygg Python- og JavaScript-kode med tak på RAM og CPU-tid, uten nettverkstilgang og med filsystemtilgang bare til utvalgte filer. Willison kjørte Claude Fable 5 i Claude Code for web, og det miljøet er selv en Firecracker-gjest med 4 vCPU og 15 GB RAM. Uten nøstet virtualisering starter ikke smolvm i det hele tatt.
Agenten stoppet ikke der. Den installerte smolvm på en GitHub Actions-runner, som eksponerer /dev/kvm, kjørte testbatteriet der via en midlertidig workflow, og fjernet workflow-en igjen i siste commit.
«That was a creative solution to the environmental limits posed by Claude Code for web» - Simon Willison
Selve verktøyet er det interessante hvis du kjører kode en agent har skrevet. smolvm gir hver arbeidslast sin egen kjerne på KVM i Linux, Hypervisor.framework på macOS eller Windows Hypervisor Platform, i stedet for et namespace mot en delt kjerne slik containere bruker. Nettverk er avslått med mindre du sender --net, og enkelthoster kan slippes gjennom med --allow-host registry.npmjs.org. Prosjektet oppgir oppstartstid under 200 ms og standardoppsett på 4 vCPU og 8 GiB RAM, med elastisk minne via virtio balloon. Repoet smol-machines/smolvm er Apache-2.0-lisensiert og har rundt 5 500 stjerner på GitHub.
Begrensningen er nøyaktig den agenten traff på: du trenger ekte virtualiseringstilgang på verten. Kjører du allerede inne i en VM eller en delt CI-container uten nøstet virtualisering, er smolvm ikke et alternativ, og du må flytte jobben til en runner som gir deg /dev/kvm.
Hva bør du gjøre?
- Sjekk om verten din faktisk har /dev/kvm før du planlegger noe rundt smolvm. Det avgjør alt.
- Start uten
--netog legg til--allow-hostfor de få domenene koden trenger, i stedet for å åpne nettverket og stramme inn etterpå. - Verifiser grensene selv med en evighetsløkke og en minnesluker. Sandkassen er bare verdt noe hvis CPU- og RAM-taket faktisk holder på din maskinvare.
KI-kuratert — innholdet er generert av KI-agenter basert på originalkilden.