
Smolvm: виртуальные машины с холодным стартом менее 200мс
Новый CLI-инструмент для запуска изолированных Linux VM с временем запуска <200мс. Поддерживает macOS, Linux, портативные .smolmachine артефакты.
Что такое smolvm
Smolvm позволяет упаковать виртуальную машину со статусом в один файл (.smolmachine) и возобновить её работу на любой поддерживаемой платформе. Это CLI-инструмент, который совмещает преимущества containerов с защитой полнофункциональных виртуальных машин. Каждая рабочая нагрузка получает настоящую аппаратную изоляцию — собственное ядро на Hypervisor.framework (macOS) или KVM (Linux).
Ключевые возможности
Блистательная скорость запуска
Все зависимости заранее упакованы — нет шага установки и загрузок во время выполнения, загружается менее чем за 200 миллисекунд. Это критично для workflow’ов, где время имеет значение: CI/CD, serverless, обработка данных.
Безопасность по умолчанию
Сеть отключена по умолчанию — ненадёжный код не может выйти в интернет. Хост-файловая система, сеть и учётные данные отделены границей гипервизора. Разработчики могут разрешить доступ только к конкретным хостам:
smolvm machine run --net --image alpine --allow-host registry.npmjs.org -- wget https://registry.npmjs.org
--allow-host для ограничения исходящих соединений. Это блокирует попытки утечки данных, даже если код скомпрометирован.Портативные артефакты
Упакуйте в .smolmachine и она будет работать на любой платформе, где совпадает архитектура хоста, без зависимостей. Python, Node.js, Java — всё работает без установки pyenv/venv/conda:
smolvm pack create --image python:3.12-alpine -o ./python312
./python312 run -- python3 --version
Безопасное использование SSH-ключей
Проксируйте SSH-агент хоста в VM. Приватные ключи никогда не попадают на гостевую машину — гипервизор это обеспечивает. Идеально для агентов AI и CI-систем.
Как это устроено
graph LR
A[Смолвм CLI] -->|libkrun| B[KVM/HVF]
B -->|Пользовательское ядро| C[libkrunfw]
C -->|Минимальные устройства| D[VM изолирована]
D -->|Virtio Balloon| E[Эластичная память]
Smolvm использует libkrun — VMM с пользовательским ядром libkrunfw. Libkrun — это библиотека, которая позволяет программам легко запускать процессы в частично изолированной среде с использованием KVM на Linux и HVF на macOS/ARM64.
Сравнение с альтернативами
| Метрика | smolvm | Контейнеры | Firecracker | QEMU |
|---|---|---|---|---|
| Изоляция | VM на рабочую нагрузку | Shared kernel | Separate VM | Separate VM |
| Время загрузки | <200ms | ~100ms | <125ms | 15–30s |
| macOS native | Да | Через Docker VM | Нет | Да |
| Портативные артефакты | .smolmachine | Требуется daemon | Нет | Нет |
Используются в реальности
Конфигурация окружения через файл Smolfile в формате TOML — воспроизводимая конфигурация VM:
image = "python:3.12-alpine"
net = true
[network]
allow_hosts = ["api.stripe.com", "db.example.com"]
[dev]
init = ["pip install -r requirements.txt"]
volumes = ["./src:/app"]
[auth]
ssh_agent = true
Это особенно полезно для:
- AI агентов — безопасная песочница для выполнения кода
- CI/CD систем — детерминированная репродукция окружения
- Разработки — изолированные среды без конфликтов зависимостей
- Deployment — один файл = работает везде
Почему это важно
МирVM-технология (микро-виртуальные машины) уже давно используется AWS Lambda, но была либо сложной в использовании, либо недоступной для локальной разработки. Smolvm демократизирует эту мощь. Вы получаете:
- Безопасность как default (изоляция железа, а не kernel namespaces)
- Скорость контейнеров (субсекундный запуск)
- Переносимость (единый исполняемый файл вместо образа + runtime)
Это мост между простотой контейнеров и мощью VMs, оптимизированный для современных workflow’ов.
Ограничения
Сеть включается опционально. Поддерживаются только TCP/UDP, без ICMP. Монтирование томов работает только для директорий, не отдельных файлов. На macOS бинарный файл должен быть подписан с правами Hypervisor.framework.
Начало работы
# Установка
curl -sSL https://smolmachines.com/install.sh | bash
# Первый запуск
smolvm machine run --net --image alpine -- sh -c "echo 'Hello from microVM'"
Smolvm демонстрирует, как современные разработчики ожидают работать с изоляцией — просто, быстро, с минимумом конфигурации. Проект доступен на GitHub под Apache 2.0 лицензией.