smolvm: песочница с VM для чужого Python и JavaScript от агента

Simon Willison прогнал smolvm 1.8.3 на сценарий, когда агент или пользователь отдаёт чужой Python или JavaScript для трансформации данных. Изоляция идёт через аппаратные VM, а не контейнеры на общем ядре: образы локальные и офлайн, сеть при запуске отключена.
Холодный старт занимает 0,6–1,5 секунды, повторный — около 50 мс. Willison проверил, что лимиты ресурсов и права на файлы держатся так, как заявлено.
Что сработало из коробки
- лимиты CPU и RAM;
- таймауты на стороне гостевой VM;
- квоты на хранилище;
- входные файлы только на чтение, выходные — на запись;
- флаг
--unprivilegedбез лишних привилегий.
Обход через GitHub Actions
Разбирать smolmachines поручили Claude Fable 5 в Claude Code for web. Среда там сама гость Firecracker — 4 vCPU, 15 ГБ RAM, но без /dev/kvm и флагов vmx/svm, поэтому вложенная виртуализация недоступна и smolvm machine run падает с «kvm not available».
Агент собрал план B: временный workflow на ubuntu-runner в GitHub Actions с доступом к KVM, установка smolvm на ветке, прогон тестов и сбор логов — workflow убрали в финальном коммите.
Источник: smolmachines / smolvm as a sandbox for untrusted Python & JavaScript.