smolvmでHNはcontainerとmicroVMの境界をまた議論した

smolvmは、softwareをisolation by defaultでship and runするCLIだ。READMEでは、macOSとLinuxでcustom Linux virtual machineをsub-second cold startで動かし、stateful VMを単一の.smolmachine fileとしてpackして再利用できると説明している。HNで伸びた理由は、containerとVMの境界をもう一度問い直す道具だったからだ。

特徴はかなり具体的だ。networkはdefault off、必要なhostだけegress許可、host filesystemやcredentialsはguestから分離される。さらにDocker Hubやghcr.ioなどのOCI imageをDocker daemonなしでpullし、Python 3.12 Alpineのようなimageをportable executableとしてpackできる。READMEの比較表では、workloadごとにVMを持ち、macOSではHypervisor.framework、LinuxではKVMを使う。

HN discussionで作者は、Docker container replacementを目指しつつ、Firecrackerの良い部分を取り込み、AWS向けの重さを減らしたhybridだと説明した。コメント欄ではすぐに実務の論点に移り、.smolmachineの署名、custom image、WSL、hot resize、Docker-in-VM、nested VMが話題になった。

agent時代にはこの話がさらに現実的になる。coding agent、eval runner、plugin sandboxは、知らないcodeを速く安全に動かしたい。containerは速いがshared kernelで、従来のVMは重い。smolvmはその間を狙い、host SSH agent forwardingなど開発者のworkflowを壊しにくい機能も入れている。

もちろん制約はある。networkはopt-in、volume mountはdirectoryのみ、macOSでは署名が必要で、GPU supportは作業中だ。それでもHNが見たポイントははっきりしている。agentが他人のcodeを動かす機会を増やすほど、軽いVMはまた基本部品として魅力を持つ。