Назад к обновлениям
New releaseSep 21, 2026

ironcurtain memory-mcp-server/v0.2.1

Безопасная* среда выполнения для автономных ИИ-агентов. Политика на основе конституций на простом английском языке. (*https://ironcurtain.dev)

Поделиться

IronCurtain

CI npm License Website

Безопасная* среда выполнения для автономных ИИ-агентов, в которой политика безопасности выводится из понятной человеку конституции.

*Когда кто-то пишет «безопасный», вы должны немедленно отнестись к этому скептически. Что мы подразумеваем под безопасностью?

[!WARNING] Исследовательский прототип. IronCurtain — это ранний исследовательский проект, изучающий, как сделать ИИ-агентов достаточно безопасными, чтобы они были по-настоящему полезными. API, форматы конфигурации и архитектура могут меняться. Вклад и обратная связь приветствуются.

Демонстрация

IronCurtain mux demo: trusted input from command mode enables auto-approval of git clone and git push

Агента просят клонировать репозиторий и отправить изменения. И git_clone, и git_push эскалируются движком политик, но авто-одобряющий модуль одобряет их автоматически — доверенный ввод пользователя из командного режима (Ctrl-A) обеспечил ясное намерение, поэтому ручное /approve не потребовалось.

Проблема

Автономные ИИ-агенты могут управлять файлами, выполнять команды git, отправлять сообщения и взаимодействовать с API от вашего имени. Но современные фреймворки для агентов дают агенту те же привилегии, что и у пользователя, — например, полный доступ к файловой системе, учётным данным и сети. Исследователи в области безопасности называют это окружающим полномочием (ambient authority), и это означает, что одна инъекция в промпт или многошаговый дрейф могут заставить агента удалить файлы, похитить данные или отправить вредоносный код.

Обычный ответ — либо ограничить агентов узкой песочницей (снижая их полезность), либо просить пользователя одобрять каждое действие (снижая их автономность). Ни то, ни другое не является удовлетворительным.

Подход

IronCurtain идёт другим путём: выразите своё намерение в области безопасности на простом английском, а система сама разберётся с его применением.

Вы пишете конституцию — короткий документ, описывающий, что вашему агенту разрешено, а что нет. IronCurtain компилирует её в детерминированную политику безопасности с помощью конвейера на основе LLM, проверяет скомпилированные правила на сгенерированных тестовых сценариях, а затем применяет политику во время выполнения при каждом вызове инструмента. В результате получается агент, способный работать автономно в границах, которые вы определяете на естественном языке.

Ключевые идеи:

  • Агент не является доверенным. IronCurtain исходит из того, что LLM может быть скомпрометирована инъекцией в промпт или дрейфом. Безопасность не зависит от того, «хорошо ли ведёт себя» модель.
  • На входе английский, на выходе — применение. Вы пишете намерение («никаких разрушительных операций git без одобрения»); система компилирует его в детерминированные правила, которые применяются во время выполнения без дальнейшего участия LLM.
  • Семантическая интерпозиция. Вместо предоставления агенту прямого доступа к системе все взаимодействия проходят через серверы MCP (файловая система, git и т. д.). Каждый вызов инструмента проходит через движок политик, который может разрешить, запретить или эскалировать к пользователю для одобрения.
  • Эшелонированная защита. Код агента выполняется в изоляте V8 без прямого доступа к хосту. Единственный выход — через семантически осмысленные вызовы инструментов MCP, и каждый из них проверяется на соответствие политике.

Архитектура

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.

Быстрый старт

Предварительные требования

  • Node.js 24 или 26 — чётные мажорные линии, которые тестирует IronCurtain. Обе устанавливают предсобранные бинарники isolated-vm. Node 25 не поддерживается и не тестируется.
  • Docker — не обязателен, но настоятельно рекомендуется для режима Docker-агента, который обеспечивает наиболее сильную изоляцию. На macOS 26+ (Apple silicon) Apple container работает как альтернативный бэкенд (VM на контейнер; используется автоматически, когда его службы запущены — см. containerRuntime в ironcurtain config)
  • API-ключ хотя бы для одного провайдера LLM (Anthropic, Google или OpenAI)

Установка

Как глобальный инструмент 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 с вашими настройками.

Запуск IronCurtain

Категории