devvm — отдельная виртуальная машина для каждого проекта

· 6 мин чтения
sandbox virtualization ai-agents security cli
📂 Исходный код на GitHub

One VM for every project. Для каждой папки проекта devvm поднимает отдельную виртуальную машину на Lima с нужным тулчейном, сетевыми уровнями и поддержкой Claude Code, Codex и opencode.

devvm — отдельная виртуальная машина для каждого проекта

Кодинг-агенты вроде Claude Code, Codex и opencode работают быстрее всего, когда у них есть полный доступ к системе: они ставят пакеты, правят файлы и запускают команды. Но давать такой доступ агенту на основном компьютере страшно: одна неверная команда — и пострадают ваши файлы, ключи или системные настройки.

devvm решает эту проблему просто: каждая папка проекта получает собственную виртуальную машину. Агент работает внутри неё и видит только этот проект.

Что такое devvm

devvm — открытый инструмент командной строки, написанный на Go. Лицензия — MIT. Внутри он использует Lima — лёгкий менеджер виртуальных машин для macOS и Linux.

Идея проекта сформулирована в одну строку: одна виртуальная машина для каждого проекта. Машина уже содержит нужный для проекта набор инструментов, и в ней сразу можно работать — самому или вместе с кодинг-агентом.

Установка

На macOS devvm ставится через Homebrew, вместе с ним ставится Lima:

brew install devvmhq/tap/devvm

На Linux (и тоже на macOS) работает установочный скрипт. Прежде чем ставить Lima, QEMU или доступ к /dev/kvm, он спросит разрешение:

curl -fsSL https://github.com/devvmhq/devvm/releases/latest/download/install.sh | bash

После установки запустите devvm doctor. Команда проверит, чего не хватает на вашей машине, и подскажет, как это добавить.

Каждый релиз подписан minisign-ключом devvm, и в документации показано, как проверить скрипт этой подписью перед запуском.

Требования: macOS 13 или новее, либо Linux, процессор arm64 или x86_64, Lima 2.2 или новее. Проект протестирован на Mac с Apple silicon и на Linux с arm64 и x86_64. На Intel-маках пока не проверялся.

Быстрый старт

cd ~/some-project
devvm

Что происходит дальше:

  1. Вы открываете папку проекта. Любую — devvm сам разберётся, что в ней нужно.
  2. Вы запускаете devvm. Он смотрит на файлы проекта и показывает, что получит новая виртуальная машина. Например, папка с package.json получит node. Можно согласиться на предложенное или настроить вручную: выбрать тулчейны, кодинг-агентов, слои, сетевой уровень и размер машины.
  3. Вы запускаете агента. devvm открывает shell внутри машины, причём путь совпадает с путём на вашем компьютере. Приглашение командной строки начинается с (devvm), чтобы вы всегда видели, где находитесь. Дальше просто запускаете claude.

Если снова запустить devvm в той же папке, он откроет ту же самую машину — новая не создаётся.

Первый запуск начинается с нескольких вопросов: они задают настройки по умолчанию для всех будущих машин — размер, набор агентов и дополнительные компоненты базового образа. Затем devvm один раз собирает базовый образ, на это уходит несколько минут. Все следующие машины создаются за секунды — они просто копируют готовый образ.

Для Claude Code нужен вход в аккаунт до первого запуска. Команда devvm agent login claude выполняет его прямо из машины, а данные входа остаются на вашем компьютере.

Что поддерживается

  • Тулчейны: node, python, rust, go и dotnet. devvm определяет их по файлам проекта сам — например, папка с package.json получит node.
  • Кодинг-агенты: в машине работают Claude Code, Codex и opencode — вместе с вашими настройками, скиллами и MCP-серверами. devvm хранит их настройки и данные входа в собственном хранилище, а команда devvm agent import переносит их из агента, который уже стоит на вашем компьютере.
  • Слои: встроенные слои docker, nix и desktop, плюс свои слои через devvm layer new.
  • Бэкенд: виртуальные машины работают на Lima.

Зачем это нужно

  • Изоляция. Каждая папка проекта получает свою машину, и машина видит только эту папку. Она смонтирована по тому же пути, что и на вашем компьютере, поэтому и вам, и агенту всё выглядит привычно.
  • Сетевые уровни. Новые машины по умолчанию получают уровень со списком разрешённых хостов: машина ходит только туда, куда вы разрешили.
  • Секреты остаются дома. На любом сетевом уровне ваши токены — GitHub, Claude Code и другие — остаются на компьютере и не попадают в машину.
  • Агент живёт в песочнице. Вы запускаете агента в shell машины, поэтому на основном компьютере он не устанавливается вообще.
  • Готово за секунды. Каждая машина — это копия базового образа, а тулчейны между машинами используются в режиме «только чтение».
  • Честная оговорка. Ни одна песочница не закрывает все риски. Авторы просят перед тем, как доверять машине проект, прочитать раздел Staying safe — там разобраны привычки, которые закрывают большую часть оставшихся дыр.

Работа над клоном

По умолчанию машина видит вашу папку проекта, поэтому агент и ваш редактор работают с одними и теми же файлами. Но есть другой режим. С флагом --clone машина получает собственный клон репозитория: агент не может тронуть вашу рабочую копию и каталог .git, а его работа попадает в репозиторий только когда вы сами заберёте изменения:

devvm --clone                 # create the VM with its own clone and open a shell in it
git fetch devvm               # later, on this machine, fetch the VM's work as devvm/<branch>
git log -p main..devvm/main   # review it before you merge it

Это удобный вариант для полностью автономных запусков: агент коммитит в свой клон, вы просматриваете diff и решаете, что принимать. Документация по безопасности отдельно описывает и защиту каталога .git, и векторы атак, которые остаются открытыми даже внутри песочницы.

Основные команды

Команда Что делает
devvm создаёт машину для папки или открывает уже существующую
devvm --clone то же самое, но с собственным клоном репозитория
devvm doctor проверяет, чего не хватает на вашем компьютере
devvm agent login claude выполняет вход в Claude Code прямо из машины
devvm agent import переносит настройки агента с вашего компьютера в машину
devvm layer new создаёт собственный слой для образов

Документация

Полная документация находится на devvm.dev. Полезные разделы:

  • Getting started — установка и первая виртуальная машина.
  • Using devvm — образы и инструменты, клоны, связи между машинами, порты и размер, SSH и редакторы.
  • Тулчейны — как devvm определяет инструменты проекта.
  • Кодинг-агенты — настройки агентов и перенос данных входа.
  • Сетевые уровни — как работает список разрешённых хостов.
  • Работа над клоном — режим --clone в деталях.
  • How it works — внутреннее устройство проекта: полезно, чтобы проверить заявления авторов или оценить защиту.
  • CLI reference — все команды с аргументами и флагами.

Сообщать об уязвимостях нужно по инструкции из SECURITY.md.

devvm — молодой проект, но идея понятная: держать агента в отдельной виртуальной машине с ограниченной сетью проще, чем потом разбираться с последствиями. Если вы запускаете Claude Code или Codex на серьёзных проектах, попробуйте: одна команда devvm в папке проекта — и агент работает в чистой машине, а ваша система остаётся нетронутой.

Источник: https://github.com/devvmhq/devvm