- Дата публикации
Jai: как запускать AI-агентов локально, не рискуя всей домашней директорией
Что появилось / что изменилось
Jai — это лёгкий инструмент для изоляции локальных AI-агентов и скриптов без Docker, образов и сложных конфигов. Его задача — дать защиту примерно посередине между «просто запустить в своём аккаунте» и полноценным контейнером или VM.
Ключевые возможности:
- Один бинарь, один запуск:
jai codex,jai claudeили простоjaiдля изолированного shell. - Нет Dockerfile, нет образов, нет десятков флагов bubblewrap — только одна команда поверх уже привычного рабочего процесса.
- Рабочая директория (CWD) остаётся с полным доступом на чтение/запись.
- Домашняя директория подключается как copy-on-write: все изменения идут в оверлей, оригинальные файлы не трогаются.
/tmpи/var/tmpстановятся приватными, остальные системные файлы доступны только на чтение.- Три готовых режима изоляции: Casual, Strict и Bare — с разным уровнем конфиденциальности и целостности.
- Поддержка NFS-домашних директорий в двух из трёх режимов (Casual и Bare).
- Проект распространяется как свободное ПО от Stanford Secure Computer Systems и Future of Digital Currency Initiative.
Как это работает
Jai запускает вашу команду в «джейле» с минимальной настройкой. Пользователь просто добавляет префикс jai перед нужным агентом или оболочкой. Под капотом инструмент собирает для процесса ограничённый вид файловой системы:
- Рабочая директория монтируется как обычная: полное чтение и запись, чтобы вы могли редактировать код, запускать локальные задачи и работать с текущим проектом.
- Домашняя директория накрывается copy-on-write-оверлеем. Процесс видит всё содержимое, но любые изменения уходят в отдельный слой. Оригиналы на диске не меняются.
- Временные каталоги
/tmpи/var/tmpстановятся приватными для процесса, чтобы другие приложения не пересекались с этим окружением. - Остальная файловая система доступна только для чтения.
Три режима изоляции задают, от какого пользователя идёт процесс и что происходит с домашней директорией:
-
Casual
- Процесс идёт от вашего пользователя.
- Домашняя директория — copy-on-write-оверлей.
- Конфиденциальность слабая: большинство файлов можно прочитать.
- Целостность выше за счёт оверлея, оригиналы защищены.
- Работает с NFS-домом.
-
Strict
- Процесс идёт от отдельного непривилегированного пользователя jai.
- Домашняя директория — пустая приватная.
- Конфиденциальность сильнее: другой UID, свои данные внутри песочницы.
- Целостность максимальная: полная изоляция.
- NFS-дом не поддерживается.
-
Bare
- Процесс снова от вашего пользователя.
- Домашняя директория — пустая приватная, фактический дом спрятан.
- Конфиденциальность средняя: UID ваш, но домашний каталог не видно.
- Целостность такая же, как в Strict: полная изоляция.
- Работает с NFS-домом.
Что это значит для вас
Jai нужен тем, кто регулярно запускает «чужой» код локально:
- AI-агенты (например, помощники для код-ревью или автогенерации скриптов), которым вы не хотите давать доступ ко всей домашней директории.
- Разовые скрипты установки в одну команду из README —
curl | sh, install-скрипты из GitHub. - Автоматически сгенерированные shell-команды от GPT-5, Claude 4 и других моделей, которые страшно пускать к реальному
$HOME. - Новые CLI-инструменты, которые вы только тестируете и не уверены в их аккуратности с файлами.
Практический сценарий: у вас есть проект в ~/projects/app. Вы запускаете локального агента или скрипт как jai codex из этой директории. Агент может читать и менять файлы проекта, но не может «случайно» удалить фотоархив из ~/Pictures или переименовать конфиги в корне домашнего каталога.
Когда это полезно:
- Быстрый sandbox вокруг уже установленного инструмента без Docker и VM.
- Если вы хотите попробовать один скрипт установки и не тратить время на создание отдельного контейнера.
- Когда важно защитить домашний каталог, но полный DevOps-стек с образами — перебор.
Когда лучше поискать что-то другое:
- Вам нужна полная воспроизводимость окружения с конкретными версиями библиотек и зависимостей — это зона Docker и Kubernetes.
- Вы и так работаете в изолированных контейнерах или VM и не чувствуете проблемы с безопасностью.
Про доступность: jai — локальный инструмент, не облачный сервис. Он не требует VPN сам по себе; достаточно иметь возможность скачать и собрать/установить программу под Linux.
Место на рынке
Jai не заменяет Docker и VM и не пытается стать ещё одной оркестрационной системой. Он закрывает узкий, но частый сценарий: «мне страшно запускать эту команду в моём $HOME, но поднимать контейнер лень».
Если сравнить с популярными решениями:
-
Docker
- Силен в воспроизводимых, образ-ориентированных окружениях.
- Требует сборки образа или написания Dockerfile.
- Не предлагает готового рабочего процесса «оверлей на домашнюю директорию» для ad-hoc задач.
-
bubblewrap (bwrap)
- Даёт тонкий контроль над namespace-ами и файловой системой.
- Требует вручную собирать картину файловой системы — часто это заканчивается длинным скриптом-обёрткой.
- Jai убирает этот слой трения: один префикс к команде вместо списка флагов.
-
chroot
- Не даёт полноценной безопасности: нет изоляции монтирования, PID namespace и разделения учётных данных.
- Linux прямо описывает chroot как механизм не для песочниц.
- Jai строится поверх более строгих механизмов, а не ограничивается сменой корня файловой системы.
Для разработчиков и продвинутых пользователей, которые часто работают с AI-ассистентами и установочными скриптами, jai даёт простую привычку: «сначала jai, потом команда», уменьшая риск повредить реальные файлы без перехода на тяжёлую инфраструктуру контейнеров.