devvm — отдельная виртуальная машина для каждого проекта
📂 Исходный код на GitHubOne VM for every project. Для каждой папки проекта devvm поднимает отдельную виртуальную машину на Lima с нужным тулчейном, сетевыми уровнями и поддержкой Claude Code, Codex и opencode.
Кодинг-агенты вроде 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
Что происходит дальше:
- Вы открываете папку проекта. Любую — devvm сам разберётся, что в ней нужно.
- Вы запускаете devvm. Он смотрит на файлы проекта и показывает, что получит новая виртуальная машина. Например, папка с
package.jsonполучит node. Можно согласиться на предложенное или настроить вручную: выбрать тулчейны, кодинг-агентов, слои, сетевой уровень и размер машины. - Вы запускаете агента. 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