
Надлежащая изоляция для агентного кодирования и веб-серфинга
<p align="center"> <img src="https://assets.kitploit.com/production/public/readmes/12434/34941ab5b4f1bafbb04da6cb0f3c974b96fb7d4e24eed8262c7c52d88db550dc.png" width="128" height="128" alt="Bromure icon"> <img src="https://assets.kitploit.com/production/public/readmes/12434/bc6a2ba75157aec6eac22ffc30fe246e2731fb36148f1553060ad9cb39086139.png" width="128" height="128" alt="Bromure Agentic Coding icon"> </p> <h1 align="center">Bromure</h1> <p align="center"> Безопасные эфемерные вычисления в одноразовых Linux-виртуальных машинах на macOS. </p> <h2 align="center"> → Полные сведения, скриншоты и загрузки на <a href="https://bromure.io">bromure.io</a> </h2> --- В этом репозитории представлены два родственных приложения, оба построенные на [Virtualization.framework](https://developer.apple.com/documentation/virtualization) от Apple: - **Bromure** — каждый сеанс браузера выполняется в одноразовой Linux-виртуальной машине. Закройте окно — и виртуальная машина уничтожается. - **Bromure Agentic Coding** — изолированная среда для ИИ-агентов программирования (Claude Code, Codex, Grok, Kimi Code, Oh My Pi). MITM-прокси на стороне хоста подменяет фиктивные учётные данные на реальные прямо в трафике, поэтому секреты никогда не попадают в виртуальную машину; затем добавляются сканирование цепочки поставок, обнаружение внедрения промптов, защита PII, панель из нескольких моделей, локальный вывод и удалённый доступ — всё это обеспечивается на одной границе. <details> <summary><strong>Сравнение Bromure Agentic Coding</strong></summary> Изоляция, недопущение секретов к агенту, ограничение их использования, сканирование цепочки поставок, перехват внедрения промптов: большинство инструментов выбирают что-то одно. Bromure делает всё пять на одной границе, а затем добавляет то, что брокер секретов никогда не смог бы: панель моделей, локальный вывод и доступ откуда угодно. Ниже одна и та же модель угроз, прогнанная через инструменты, к которым обычно прибегают, и то, где каждый из них останавливается. Более подробная матрица функций доступна на [bromure.io/en/feature-matrix](https://bromure.io/en/feature-matrix). | Защита | Dev Container<br><sub>VS Code</sub> | nono<br><sub>kernel sandbox</sub> | agent-vault<br><sub>octokraft</sub> | Agent Vault<br><sub>Infisical</sub> | Docker Sandboxes<br><sub>microVM</sub> | Capsem<br><sub>air-gapped VM</sub> | **Bromure**<br><sub>Agentic Coding</sub> | | --- | --- | --- | --- | --- | --- | --- | --- | | **Безопасность** | | | | | | | | | **Граница изоляции**<br><sub>Где останавливается радиус поражения</sub> | 🟡 Тот же контейнер, общее ядро | 🟡 Списки разрешений ядра, без собственного ядра | ❌ Агент выполняется на месте | ❌ Только прокси; агент вне песочницы | ✅ microVM, собственное ядро | ✅ Аппаратная ВМ, собственное ядро | ✅ Аппаратная ВМ, собственное ядро | | **Недопущение секретов к агенту**<br><sub>Может ли он когда-либо прочитать реальные учётные данные?</sub> | ❌ Пробрасывает SSH-агент + git-учётные данные | 🟡 Блокирует файлы ключей; проксирует некоторые | ✅ Передаётся по каналу; нет пути чтения | ✅ Прокси присоединяет в трафике | ✅ Прокси хоста внедряет заголовки | ❌ Реальные API-ключи находятся в ВМ | ✅ Заглушка подменяется в трафике | | **Область действия и одобрение учётных данных**<br><sub>Лимиты на использование, только чтение, срок действия, согласие</sub> | ❌ Нет ограничения области на использование | 🟡 Процесс одобрения + фильтр исходящего трафика | 🟡 TTL на каждый секрет; блокирует оболочки | 🟡 Фильтр исходящего трафика на каждую конечную точку | 🟡 Список разрешённых доменов; код внутри ВМ всё ещё может их использовать | 🟡 Правила исходящего трафика по домену + методу/пути | ✅ Согласие на каждое назначение + TTL | | **Сканирование цепочки поставок**<br><sub>Перехват вредоносных / уязвимых пакетов</sub> | ❌ Нет сканирования реестра | ❌ Только подписи, без сканирования пакетов | ❌ Вне области | ❌ Вне области | ❌ Нет сканирования пакетов | ❌ Нет сканирования пакетов | ✅ Age-gate, OSV, socket.dev, Depi | | **Обнаружение внедрения промптов**<br><sub>Сканирование недоверенного контента и файлов правил</sub> | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ PromptGuard + ModernBERT | | **Защита PII**<br><sub>Недопущение персональных данных к провайдеру модели</sub> | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ Подмена на устройстве, восстановление в ответах | | **Журнал аудита**<br><sub>Запись того, что делал агент</sub> | ❌ Только логи контейнера | 🟡 Неизменяемый локальный аудит | ❌ | 🟡 Логирование запросов | 🟡 Логирование запросов | 🟡 Полные тела HTTP в SQLite | ✅ Полная трассировка сеанса, зашифрованная | | **Инвентаризация цепочки поставок** <sub>(Enterprise)</sub><br><sub>Запись каждого полученного пакета</sub> | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ Каждая зависимость + вердикт, с поиском | | **Продуктивность** | | | | | | | | | **Команды агентов**<br><sub>Много агентов над одной задачей, общающихся друг с другом</sub> | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ Комнаты, Switchboard, @-делегирование | | **Использование токенов** <sub>(Enterprise)</sub><br><sub>Какие файлы сжигают больше всего токенов</sub> | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ По файлу, репозиторию и модели | | **Мультимодельное объединение**<br><sub>Панель моделей, оценка и синтез</sub> | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ Панель + судья, в трафике | | **Автоматизации**<br><sub>Запуск агента по расписанию или по событиям GitHub / Linear</sub> | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ Расписание, GitHub, Linear, цепочки | | **Локальные модели**<br><sub>Любой провайдер или вывод на собственном железе</sub> | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ MLX на устройстве + любой провайдер | | **Локальный Kubernetes**<br><sub>Кластеры и реестры рядом с песочницей</sub> | 🟡 Своими силами через Docker-in-Docker | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ Кластеры k3s + приватный реестр | | **Агентный браузер**<br><sub>Браузер, которым агент управляет для проверки своей работы</sub> | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ Изолированный Chromium под управлением агента | | **Доступ откуда угодно**<br><sub>Подключение к песочнице удалённо</sub> | 🟡 Удалённый VS Code | ❌ | ❌ | ❌ | 🟡 docker exec, локально | ❌ | ✅ Mac, iPhone, iPad, CLI или SSH | ✅ Полностью — встроено, обеспечивается · 🟡 Частично — ограничено или опционально · ❌ Нет — не рассматривается > Скрыть токен — не то же самое, что управлять его использованием. Docker Sandboxes не допускает необработанное значение в ВМ — но его прокси всё равно прикрепляет эти учётные данные к любому исходящему запросу, который делает песочница, поэтому скомпрометированный пакет, установленный на стороне, может потратить их на домен из списка разрешённых, даже не увидев их. Только Bromure сканирует пакет перед запуском и ограничивает каждое использование — согласие, только чтение, TTL — обеспечивая все пять средств контроля на одной границе, которую агент не может обойти. На той же границе подключаются Fusion, локальный вывод и удалённый доступ. <sub>Составлено по публичной документации каждого проекта, июнь 2026. Здесь agent-vault относится к [octokraft/agent-vault](https://octokraft.github.io/agent-vault/) (внедрение секретов через канал), в отличие от Agent Vault от Infisical (прокси учётных данных HTTP). Docker Sandboxes — экспериментальный предварительный выпуск, чьи брокерские учётные данные остаются доступными для всего внутри ВМ. Инвентаризация пакетов по всему парку и сводки использования токенов в Bromure представлены в Bromure Enterprise Manager. Эти инструменты развиваются быстро — заметили что-то устаревшее? Откройте issue.</sub> </details> <details> <summary><strong>Сравнение Bromure Web</strong></summary> Каждый безопасный браузер контролирует веб. Bromure его изолирует. Talon и Island укрепляют Chromium на вашей машине. Menlo изолирует веб — в своём облаке. Bromure запускает каждый сеанс в одноразовой ВМ на вашем собственном Mac: настоящая изоляция, локально. Более подробная матрица функций доступна на [bromure.io/en/feature-matrix](https://bromure.io/en/feature-matrix). | Возможность | Talon<br><sub>Prisma Access Browser</sub> | Island<br><sub>Enterprise Browser</sub> | Menlo<br><sub>Remote isolation</sub> | **Bromure**<br><sub>Web</sub> | | --- | --- | --- | --- | --- | | **Изоляция и локализация** | | | | | | Изолирует недоверенный веб-код от вашей реальной ОС | ❌ | ❌ | ✅ | ✅ | | Хост остаётся в безопасности при эксплуатации браузера | 🟡 | ❌ | ✅ | ✅ | | Одноразовые сеансы, не оставляющие следов | 🟡 | ❌ | ✅ | ✅ | | Изоляция, работающая локально, а не в облаке вендора | ❌ | ❌ | ❌ | ✅ | | **Управление устройствами и данными** | | | | | | Реальные веб-камера и микрофон внутри защищённого сеанса | ✅ | 🟡 | 🟡 | ✅ | | Управление загрузкой и выгрузкой | ✅ | ✅ | ✅ | ✅ | | Сканирование загрузок на вредоносное ПО | ✅ | 🟡 | ✅ | ✅ | | Управление копированием-вставкой и скриншотами | 🟡 | ✅ | 🟡 | ✅ | | Блокирует утечку данных на локальные принтеры, NAS и USB | 🟡 | 🟡 | 🟡 | ✅ | | **Веб-защита** | | | | | | Обнаружение фишинга | ✅ | ✅ | ✅ | 🟡 | | Веб-фильтрация по URL и категориям | ✅ | ✅ | ✅ | 🟡 | | Встроенный VPN на сеанс и маскировка IP | 🟡 | ❌ | 🟡 | ✅ | | Управление расширениями браузера | ✅ | ✅ | 🟡 | 🟡 | | **Корпоративное управление** | | | | | | Центральная консоль и управляемые профили | ✅ | ✅ | ✅ | ✅ | | Логирование сеансов и полный журнал аудита | ✅ | ✅ | ✅ | ✅ | | Экспорт в SIEM и OpenTelemetry | ✅ | ✅ | ✅ | ✅ | | Принудительное использование через Okta, Workspace или Entra | ✅ | ✅ | ✅ | ✅ | | Автоматический отзыв доступа при отключении пользователя | 🟡 | ✅ | 🟡 | ✅ | | Контентно-зависимый DLP и очистка файлов | ✅ | ✅ | ✅ | 🟡 | | BYOD и неуправляемые устройства | ✅ | ✅ | ✅ | ✅ | | **Платформа и модель** | | | | | | Работает на всех основных платформах | ✅ | ✅ | ✅ | 🟡 | | Открытый исходный код и бесплатное использование | ❌ | ❌ | ❌ | ✅ | | Работает на устройстве без облака с оплатой за место | 🟡 | 🟡 | ❌ | ✅ | ✅ Встроено · 🟡 Частично или ограничено · ❌ Не предлагается > Talon и Island делают браузер лучше контролируемой входной дверью — но он всё ещё работает на вашей реальной ОС. Menlo добавляет настоящую изоляцию, а затем направляет каждую страницу через своё облако. Bromure — единственный, кто запечатывает каждый сеанс в одноразовой ВМ на вашей собственной машине: ничто не достигает вашего Mac, ничто не покидает ваше устройство, а закрытие окна стирает всё это. <sub>Составлено по публичной документации продуктов (Palo Alto Networks, Island, Menlo Security) в июне 2026. Частичные отметки означают возможности, которые ограничены, опциональны, зависят от лицензии или — для обнаружения фишинга в Bromure — всё ещё находятся в бета-версии.</sub> </details> ## Сборка ```bash ./build.sh # browser app ./build.sh bromure-ac # agentic-coding app swift test # tests ``` Результаты попадают в `.build/arm64-apple-macosx/release/`. ## Архитектура Три цели SPM: | Цель | Путь | Примечания | | --------------- | ------------------------- | --------------------------------------------------------------- | | `bromure` | `Sources/Browser/` | Приложение-браузер + SwiftUI + управление окнами AppKit | | `bromure-ac` | `Sources/AgentCoding/` | Приложение для агентного программирования + MITM-прокси + инфраструктура облачных учётных данных | | `SandboxEngine` | `Sources/SandboxEngine/` | Общий жизненный цикл ВМ, управление образами, мосты virtio | Оба приложения предварительно прогревают пул ВМ в фоне, чтобы новые сеансы открывались менее чем за секунду. Связь гость ↔ хост идёт через vsock (буфер обмена, передача файлов, MITM-прокси). ## Требования - macOS 14 (Sonoma) или новее - Apple Silicon (M1 или новее) — `Virtualization.framework` поддерживает гостевые ВМ ARM64 только на хостах Apple Silicon. ## Автор - [Renaud Deraison](https://www.linkedin.com/in/rderaison/) (промптинг) - [Claude + Opus 4.7](https://www.anthropic.com) (реализация)