
Безопасная* среда выполнения для автономных ИИ-агентов. Политика на основе конституций на простом английском языке. (*https://ironcurtain.dev)
Безопасная* среда выполнения для автономных ИИ-агентов, в которой политика безопасности выводится из понятной человеку конституции.
*Когда кто-то пишет «безопасный», вы должны немедленно отнестись к этому скептически. Что мы подразумеваем под безопасностью?
[!WARNING] Исследовательский прототип. IronCurtain — это ранний исследовательский проект, изучающий, как сделать ИИ-агентов достаточно безопасными, чтобы они были по-настоящему полезными. API, форматы конфигурации и архитектура могут меняться. Вклад и обратная связь приветствуются.
Агента просят клонировать репозиторий и отправить изменения. И git_clone, и git_push эскалируются движком политик, но авто-одобряющий модуль одобряет их автоматически — доверенный ввод пользователя из командного режима (Ctrl-A) обеспечил ясное намерение, поэтому ручное /approve не потребовалось.
Автономные ИИ-агенты могут управлять файлами, выполнять команды git, отправлять сообщения и взаимодействовать с API от вашего имени. Но современные фреймворки для агентов дают агенту те же привилегии, что и у пользователя, — например, полный доступ к файловой системе, учётным данным и сети. Исследователи в области безопасности называют это окружающим полномочием (ambient authority), и это означает, что одна инъекция в промпт или многошаговый дрейф могут заставить агента удалить файлы, похитить данные или отправить вредоносный код.
Обычный ответ — либо ограничить агентов узкой песочницей (снижая их полезность), либо просить пользователя одобрять каждое действие (снижая их автономность). Ни то, ни другое не является удовлетворительным.
IronCurtain идёт другим путём: выразите своё намерение в области безопасности на простом английском, а система сама разберётся с его применением.
Вы пишете конституцию — короткий документ, описывающий, что вашему агенту разрешено, а что нет. IronCurtain компилирует её в детерминированную политику безопасности с помощью конвейера на основе LLM, проверяет скомпилированные правила на сгенерированных тестовых сценариях, а затем применяет политику во время выполнения при каждом вызове инструмента. В результате получается агент, способный работать автономно в границах, которые вы определяете на естественном языке.
Ключевые идеи:
IronCurtain поддерживает два режима сессий с разными моделями доверия:
Встроенный агент (режим кода) — собственный LLM-агент IronCurtain пишет фрагменты кода на TypeScript, которые выполняются в песочнице V8. IronCurtain контролирует агента, песочницу и движок политик. Каждый вызов инструмента покидает песочницу в виде структурированного запроса MCP, проходит через движок политик (разрешить / запретить / эскалировать) и только затем достигает реального сервера MCP.
Режим Docker-агента — внешний агент (Claude Code, Goose, Codex) работает внутри контейнера без прямого доступа к публичной сети. IronCurtain опосредует внешние эффекты: вызовы API LLM проходят через MITM-прокси с завершением TLS (список разрешённых хостов, подмена фиктивного ключа на реальный), вызовы инструментов MCP проходят через тот же движок политик, а поддерживаемые установки пакетов идут через проверяющие прокси пакетов.
Опциональный вложенный Docker даёт сессиям разработчика приватный, эфемерный
демон без раскрытия сокета Docker хоста. Реализованные профили охватывают Apple Container и Docker
Desktop на macOS, а также WSL2 с Docker Desktop на amd64. Его режимы offline, images и packages
разделяют локальное использование образов, опосредованную загрузку публичных образов и поддерживаемые сборки пакетов. Нативный Linux Engine
не допускается для вложенности; см. справочник по конфигурации для предварительных требований и ограничений.
В обоих режимах агент не является доверенным. Безопасность не зависит от того, следует ли модель инструкциям, — она обеспечивается на границе.
См. SANDBOXING.md для полной архитектуры с диаграммами, послойным анализом доверия и заметками по платформе macOS.
isolated-vm. Node 25 не поддерживается и не тестируется.container работает как альтернативный бэкенд (VM на контейнер; используется автоматически, когда его службы запущены — см. containerRuntime в ironcurtain config)Как глобальный инструмент CLI (для конечных пользователей):
npm install -g @provos/ironcurtain
Из исходного кода (разработка):
git clone https://github.com/provos/ironcurtain.git
cd ironcurtain
npm install
1. Установите ваш API-ключ:
export ANTHROPIC_API_KEY=sk-ant-...
Вы также можете разместить ключи в файле .env в корне проекта (загружается автоматически через dotenv) или добавить их в ~/.ironcurtain/config.json с помощью ironcurtain config. Переменные окружения имеют приоритет над значениями из файла конфигурации. Поддерживаются: ANTHROPIC_API_KEY, GOOGLE_GENERATIVE_AI_API_KEY, OPENAI_API_KEY.
2. Запустите мастер первого запуска (запустите его явно перед использованием рекомендуемого пути mux; он также запускается автоматически при первом не-mux ironcurtain start):
ironcurtain setup
Проводит вас через настройку токена GitHub, провайдера веб-поиска, выбор модели и другие параметры. Создаёт ~/.ironcurtain/config.json с вашими настройками.