Что такое 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.

ℹ О памяти
Память эластична через virtio balloon — хост подтверждает только то, что реально использует гость, и остальное освобождает автоматически. Потоки vCPU спят в гипервизоре в режиме ожидания, поэтому избыточная подготовка имеет почти нулевую стоимость.

Сравнение с альтернативами

МетрикаsmolvmКонтейнерыFirecrackerQEMU
ИзоляцияVM на рабочую нагрузкуShared kernelSeparate VMSeparate VM
Время загрузки<200ms~100ms<125ms15–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 лицензией.