
Ваш агент — это угроза безопасности, поэтому относитесь к нему соответственно. yoloAI правильно реализует песочницу для ИИ-агентов.
# yoloAI
**Песочница для ИИ-агентов программирования. Никакой усталости от разрешений, никаких учётных данных внутри песочницы, никаких изменений в вашем проекте, пока вы их не одобрите.**
[](https://github.com/kstenerud/yoloai/actions/workflows/ci.yml)
[](https://github.com/kstenerud/yoloai/actions/workflows/audit.yml)
[](https://github.com/kstenerud/yoloai/releases/latest)
[](https://pkg.go.dev/github.com/kstenerud/yoloai)
[](LICENSE)
ИИ-агенты программирования работают лучше всего без ограничений, и это ужасный способ запускать их на вашей реальной машине. yoloAI предоставляет агенту одноразовую песочницу, где он может редактировать что угодно и запускать что угодно, без присмотра. Ваш проект, ваши учётные данные и ваша сеть остаются под вашим контролем. Когда агент закончит работу, просмотрите diff и примените то, что хотите сохранить.
```text
Вы Песочница Ваш проект
│ │ │
├─ yoloai new fix-bug . ├─ копия проекта в песочнице │
│ │ │
├─ << ваши промпты >> ├─ агент работает свободно │
│ │ (без запросов разрешений) │
│ │ │
├─ yoloai diff fix-bug ├─ показывает, что изменилось │
│ │ │
├─ yoloai apply fix-bug │ ├─ применены патчи
│ (вы выбираете, какие) │ │
│ │ │
├─ yoloai destroy fix-bug ├─ уничтожает песочницу │
```
## Зачем?
Запросы разрешений существуют, потому что агенты ошибаются. После сотого одобрить/отклонить вы перестаёте их читать, а `--dangerously-skip-permissions` — это один запутавшийся агент от очень плохого дня. yoloAI уменьшает радиус поражения до тех пор, пока запросы не станут ненужными:
- **Ваши файлы в безопасности.** Агент работает с изолированной копией вашего проекта. `diff` показывает точно, что изменилось, `apply` применяет патчи к вашему реальному проекту, сохраняя отдельные коммиты, и ваши оригиналы не меняются, пока вы не примените изменения.
- **Ваши секреты в безопасности.** Песочница запускается из минимального, локально собранного окружения; переменные окружения хоста остаются на хосте. Учётные данные поступают как монтируемые файлы только для чтения, никогда — как переменные окружения. Там, где применяется брокеринг учётных данных (Claude, Gemini и Codex сегодня, включён по умолчанию), API-ключ полностью остаётся на стороне хоста: локальный прокси-сервер внедряет его по пути к провайдеру, так что даже полностью скомпрометированный агент не сможет ничего выкрасть.
- **Ваша сеть принадлежит вам.** `--network-isolated` ограничивает исходящий трафик только API-эндпоинтами агента и разрешёнными вами доменами. `--network-none` полностью убирает сеть.
- **Ваша машина изолирована.** Выбирайте уровень комфорта: от namespace'ов Linux через gVisor до аппаратных ВМ.
См. [Безопасность](https://github.com/kstenerud/yoloai/blob/main/docs/GUIDE.md#security) для полной модели, включая честное описание ограничений.
## Установка
### Готовый бинарный файл (рекомендуется)
Скачайте архив для вашей платформы со [страницы последнего релиза](https://github.com/kstenerud/yoloai/releases/latest), извлеките бинарный файл `yoloai` и поместите его в `PATH`:
```bash
# Linux x86-64 (при необходимости замените на linux_arm64 / darwin_amd64 / darwin_arm64).
# Установите VERSION на тег, указанный на странице последнего релиза по ссылке выше, без
# ведущей "v" — например, VERSION=1.2.3 для тега v1.2.3.
VERSION=X.Y.Z
curl -fsSL "https://github.com/kstenerud/yoloai/releases/download/v${VERSION}/yoloai_${VERSION}_linux_amd64.tar.gz" \
| tar -xz yoloai
sudo install yoloai /usr/local/bin/
```
Каждый архив также содержит автодополнение для оболочки, `LICENSE` и журнал изменений. Релизы подписаны с помощью cosign (`checksums.txt`) и имеют подтверждение происхождения сборки GitHub (`gh attestation verify yoloai_… --repo kstenerud/yoloai`). К каждому релизу также прилагаются пакеты Debian/RPM.
### Homebrew (macOS / Linux)
```bash
brew install --cask kstenerud/tap/yoloai
```
### Использование `go install`
```bash
# Последний релиз
go install github.com/kstenerud/yoloai/cmd/yoloai@latest
# Последняя версия для разработки (нестабильная)
go install github.com/kstenerud/yoloai/cmd/yoloai@main
```
Требуется Go 1.26+. Бинарный файл размещается в `$GOPATH/bin` (обычно `~/go/bin`).
### Из исходного кода
```bash
git clone https://github.com/kstenerud/yoloai.git
cd yoloai
git checkout "$(git describe --tags --abbrev=0)" # тег последнего релиза; или оставайтесь на main для версии для разработки
make build
sudo install yoloai /usr/local/bin/
```
Это один бинарный файл Go без зависимостей времени выполнения, кроме выбранного вами бэкенда. При первом запуске yoloAI собирает свой базовый образ и создаёт `~/.yoloai/` (или любой каталог, указанный через `--data-dir`).
## Быстрый старт
### Неинтерактивный режим
```bash
# Аутентификация (yoloAI автоматически подхватывает существующие учётные данные)
export ANTHROPIC_API_KEY=sk-ant-... # Claude Code
export GEMINI_API_KEY=... # Gemini CLI
# Или просто позвольте ему подхватить вашу уже аутентифицированную сессию
# 1. Запустите песочницу. Агент начинает работать немедленно, если вы указали промпт
yoloai new fix-bug ./my-project --prompt "исправь падающие тесты"
# 2. Посмотрите, что изменил агент
yoloai diff fix-bug
# 3. Примените нужные части к вашему реальному проекту
yoloai apply fix-bug
# 4. Удалите песочницу
yoloai destroy fix-bug
```
### Интерактивный режим
```bash
yoloai new exploration ./my-project -a
# Вы внутри агента, работающего в tmux в песочнице.
# Ctrl-B, D для отсоединения.
# yoloai attach exploration для повторного подключения.
```
### Итеративная работа
Для длительных сессий работайте в цикле: скажите агенту коммитить по мере работы и запускайте `yoloai apply` из другого терминала, когда захотите перенести готовые коммиты в ваш реальный проект. Каждое применение переносит только новые коммиты с момента последнего. Когда результат вас устраивает, отправьте изменения как обычно и уничтожьте песочницу. См. [Руководство по использованию](https://github.com/kstenerud/yoloai/blob/main/docs/GUIDE.md) для полного рабочего процесса.
## Демонстрация
Создание песочницы, отправка промпта агенту и применение результатов:
https://github.com/user-attachments/assets/9d6740b4-a34e-4253-82ec-cb0e4c7a8bd9
## Возможности
**Песочница**
- Шесть бэкендов: Docker, Podman, containerd (Kata), Apple Container, Tart и Seatbelt. Работает на Linux, macOS и Windows (WSL2).
- Выбираемая сила изоляции для каждой песочницы: от runc через gVisor до ВМ Kata (QEMU или Firecracker).
- Сетевая политика для каждой песочницы: открытая, белый список или отсутствие сети.
- Минимальное окружение внутри песочницы. Всё с хоста — явное согласие (`--env`, `--dir`).
- Ограничения ресурсов (`--cpus`, `--memory`) и проброс портов (`--port`).
- Дешёвые копии рабочего каталога: клонирование всего дерева на macOS (APFS `clonefile`), reflink для каждого файла на файловых системах Linux, которые их поддерживают (btrfs, XFS). Файловые системы без reflink (ext4) получают обычную копию.
- Учитывается `.gitignore`: всё, что игнорируется, **НЕ** копируется в песочницу (практика безопасности для учётных данных разработчика на диске).
**Учётные данные**
- Автоматически подхватывает существующие логины агентов: API-ключи, учётные данные подписки, связку ключей macOS.
- Брокеринг учётных данных оставляет API-ключ на стороне хоста (Claude, Gemini и Codex сегодня); учётные данные Aider и OpenCode доставляются как монтируемые файлы только для чтения.
**Рабочий процесс**
- Копирование/diff/apply с git, работающим на стороне песочницы, поэтому репозитории с фильтрами и хуками ведут себя корректно.
- Применяйте по-своему: воспроизведение коммитов (по умолчанию), сжатие в один патч, экспорт файлов `.patch`, выбор коммитов по ref или сначала `--dry-run`.
- Полный жизненный цикл: создание, подключение, остановка, перезапуск, ожидание, клонирование, сброс, уничтожение. Состояние агента переживает остановки и перезапуски.
- Безголовые одноразовые запуски для скриптов и CI: `yoloai run --prompt ... --rm`, с выводом `--json` для каждой команды.
- Когда агент завершает работу, его панель tmux переходит в оболочку, чтобы вы могли осмотреть песочницу.
**Интеграция**
- Встроены Claude Code, Codex, Gemini CLI, Aider и OpenCode, плюс режим `shell` для всего остального.
- VS Code: подключение к контейнеру или открытие Remote Tunnel изнутри песочницы (`--vscode-tunnel`).
- MCP в обоих направлениях: `yoloai mcp serve` позволяет внешнему агенту управлять песочницами как инструментами; `yoloai mcp proxy` запускает MCP-серверы внутри песочницы.
- Профили: образы и настройки по умолчанию для каждого проекта (Dockerfile + конфигурация, с наследованием).
- Расширения: добавляйте свои подкоманды как shell-скрипты в YAML-обёртке (`yoloai x`).
- Встраиваемость: CLI — это тонкий слой поверх публичного [Go API](https://pkg.go.dev/github.com/kstenerud/yoloai).
- Один статический бинарный файл. Состояние хранится в `~/.yoloai/` (перемещается с помощью `--data-dir`).
## Поддерживаемая инфраструктура
### Бэкенды песочниц
| Бэкенд | Поддерживаемые хосты | Зависимости |
|------------|------------------------------|--------------------------------------------------------------------|
| docker | Linux, macOS, Windows (WSL2) | [Docker Engine](https://docs.docker.com/engine/install), [Docker Desktop](https://docs.docker.com/get-docker) или [OrbStack](https://orbstack.dev) |
| podman | Linux, macOS | [Podman](https://podman.io/get-started) (`brew install podman` на macOS) |
| containerd | Linux | [Kata Containers](https://katacontainers.io) |
| apple | macOS (Apple Silicon) | [Apple Container](https://github.com/apple/container) |
| tart | macOS (Apple Silicon) | [Tart](https://github.com/cirruslabs/tart) (`brew install cirruslabs/cli/tart`) |
| seatbelt | macOS (любой) | Нет (использует встроенный `sandbox-exec`) |
**Примечание**: Tart предоставляет полноценную ВМ macOS, что позволяет запускать симуляторы внутри песочницы.
### Режимы изоляции
При желании можно обновить OCI-runtime для более сильной изоляции. Режимы gVisor доступны на docker и podman; режимы ВМ поставляются с бэкендом containerd.
| Режим | Описание |
|------|-------------|
| `container` | По умолчанию `runc`: стандартные namespace'ы и cgroups Linux |
| `container-enhanced` | Пользовательское ядро (gVisor/runsc): перехват системных вызовов, KVM не требуется |
| `container-privileged` | Все capabilities, seccomp/AppArmor без ограничений. Используйте для Docker-in-Docker и Compose |
| `vm` | Kata Containers (QEMU): аппаратная изоляция ВМ |
| `vm-enhanced` | Kata + Firecracker microVM: лёгкая изоляция ВМ |
```bash
# Использовать gVisor для всех новых песочниц
yoloai config set isolation container-enhanced
# Или для конкретной песочницы
yoloai new task . --isolation container-enhanced
```
### Агенты
| Режим | Описание |
|------------|-------------|
| `claude` | Запускает [Claude Code](https://github.com/anthropics/claude-code) через API-ключ или учётные данные подписки (по умолчанию) |
| `codex` | Запускает [Codex](https://github.com/openai/codex) через API-ключ или учётные данные подписки |
| `gemini` | Запускает [Gemini CLI](https://github.com/google-gemini/gemini-cli) через API-ключ или учётные данные подписки |
| `aider` | Запускает [Aider](https://github.com/Aider-AI/aider) (ваша конфигурация копируется внутрь) |
| `opencode` | Запускает [OpenCode](https://github.com/anomalyco/opencode) (ваша конфигурация копируется внутрь) |
| `shell` | Запускает оболочку tmux со всеми учётными данными агентов |
| `idle` | Запускает процесс ожидания для поддержки MCP-проксирования |
Используйте `yoloai system agents` для вывода списка доступных агентов.
## Узнать больше
- **[Руководство по использованию](https://github.com/kstenerud/yoloai/blob/main/docs/GUIDE.md)**: команды, флаги, режимы рабочего каталога, конфигурация, безопасность
- **[Дорожная карта](https://github.com/kstenerud/yoloai/blob/main/docs/ROADMAP.md)**: предстоящие возможности
- **[Архитектура](https://github.com/kstenerud/yoloai/blob/main/docs/contributors/architecture/README.md)**: навигация по коду для контрибьюторов
## Статус
Публичная бета. Основной рабочий процесс стабилен и используется ежедневно; интерфейсы могут меняться между релизами 0.x, и каждое критическое изменение задокументировано в [BREAKING-CHANGES](https://github.com/kstenerud/yoloai/blob/main/docs/BREAKING-CHANGES.md). [Отзывы приветствуются.](https://github.com/kstenerud/yoloai/issues)
## Лицензия
[MIT](https://github.com/kstenerud/yoloai/blob/main/LICENSE)