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

aquaman v0.14.1

🔱 Единственный независимый прокси-сервер учётных данных для AI-агентов: изоляция по принципу «принеси свой собственный сейф» и политики запросов с минимальными привилегиями. Ваши ключи остаются там, где вы их уже храните, и никогда не попадают в память агента. Совместим с 1Password, keychain, keepassxc и многими другими.

Поделиться

🔱 Aquaman

CI codecov npm version npm downloads Security: process isolation TypeScript License: MIT

🔱 Единственный независимый прокси для учётных данных ИИ-агентов: изоляция «принеси своё хранилище» и политики запросов с минимальными привилегиями. Ваши ключи остаются там, где вы их уже храните, и никогда не попадают в память агента. Совместим с 1Password, keychain, keepassxc и многими другими.

Вы настраиваете Claude Code, OpenClaw или Hermes и теперь смотрите на файлы .env с вашими драгоценными ключами API в открытом виде. Вы читали статьи. Вы знаете, что происходит, когда агент подвергается инъекции через подсказки. Мы понимаем.

Aquaman решает эту проблему тремя уровнями защиты:

  1. Изоляция процессов: Ключи API живут в отдельном прокси-процессе. Агент никогда их не видит. Даже удалённое выполнение кода (RCE) в агенте не может добраться до учётных данных. Они находятся в другом адресном пространстве.
  2. Политики запросов: Правила для каждого сервиса определяют, какие конечные точки агент может вызывать. Блокируйте административные API, предотвращайте удаления, разрешайте черновики, но запрещайте отправку. Запрещённые запросы никогда не получают настоящих учётных данных.
  3. Защищённый от вмешательства аудит: Каждое использование учётных данных регистрируется с SHA-256 хеш-цепочками. Вы можете доказать, к чему был доступ, и обнаружить подделку после факта.

Выберите свой путь

Aquaman поставляется в виде четырёх согласованных пакетов, использующих одно хранилище + один демон. Установите только то, что вам нужно:

ПакетЧто делаетКогда устанавливать
aquaman-proxyЯдро: хранилище, демон, аудит, политики, CLI. То, что нужно всем.Всегда.
aquaman-pluginАдаптер для шлюза OpenClaw. Запускает прокси при старте шлюза; перехватывает трафик каналов; 25 встроенных сервисов для 5 режимов аутентификации.Если вы используете шлюз OpenClaw. Также доступен на https://clawhub.ai/plugins/aquaman-plugin
aquaman-coderАдаптер для ИИ-агентов разработки. Ссылки вида aquaman://service/key в рамках проекта разрешаются при каждом вызове инструмента Bash.Если вы используете Claude Code (сегодня) — Codex / OpenCode / Cursor запланированы.
aquaman-hermesПлагин для агент-хоста Hermes (Python, на PyPI). Направляет Hermes на опциональный прослушиватель с токен-контролем через его родные ANTHROPIC_BASE_URL/OPENAI_BASE_URL; добавляет команду /aquaman-status, инструмент и проверку работоспособности в сессии. Изоляция на стороне прокси; плагин не содержит учётных данных.Если вы используете агент-хост Hermes. pip install aquaman-hermes

Единый CLI aquaman предоставляет все четыре: команды верхнего уровня для хранилища и аудита, aquaman openclaw ... для интеграции с OpenClaw, aquaman coder ... для интеграции с агентом разработки (под капотом делегирует aquaman-coder), а также aquaman hermes ... для пакета Python Hermes.

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

aquaman help, aquaman doctor — ваши друзья.

1. Только хранилище (просто прокси + ваши секреты)

npm install -g aquaman-proxy
aquaman setup                                # мастер бэкенда + сохранение ключей
aquaman daemon &                             # запуск прокси
aquaman credentials list                     # проверка

Прокси слушает на ~/.aquaman/proxy.sock (UDS, chmod 0o600). Направьте любой инструмент на http://aquaman.local/<service>/<path>, и прокси вставит заголовки аутентификации для этого сервиса из выбранного бэкенда хранилища.

2. Шлюз OpenClaw

openclaw plugins install aquaman-plugin           # 1. установить плагин + прокси
openclaw aquaman setup                            # 2. бэкенд + ключи + настройка плагина
openclaw                                          # 3. готово — прокси запускается автоматически

Устранение неполадок: openclaw aquaman doctor.

Используете npm напрямую? npm install -g aquaman-proxy && aquaman openclaw setup делает то же самое — устанавливает CLI прокси, сохраняет ваши ключи, устанавливает плагин в ~/.openclaw/extensions/aquaman-plugin/ и настраивает учётные данные (ссылками SecretRef на OpenClaw ≥ 2026.6.5, резервным auth-profiles.json на старых версиях).

Перехватчик HTTP в плагине перенаправляет только трафик для сервисов, указанных в его конфигурации services (по умолчанию Anthropic + OpenAI). Добавьте больше в конфигурации плагина в openclaw.json — поддерживаются каналы Slack, Discord, Telegram, MS Teams, Matrix, LINE, Twitch, Twilio, BlueBubbles, Mattermost, Nostr, Tlon, Feishu, Google Chat, ElevenLabs, xAI, Cloudflare AI Gateway, Mistral, Hugging Face и другие (всего 25).

3. ИИ-агенты разработки (на сегодня — Claude Code)

npm install -g aquaman-proxy aquaman-coder        # 1. установить демон + адаптер
aquaman setup                                      # 2. мастер хранилища
aquaman daemon &                                   # 3. запуск прокси

aquaman coder project add my-app --path ~/code/my-app \
  --env ANTHROPIC_API_KEY=aquaman://anthropic/api_key \
  --env GITHUB_TOKEN=aquaman://github/token         # 4. объявить проект
aquaman coder setup claude-code                    # 5. настроить хуки Claude Code
aquaman doctor                                     # 6. проверить — должно быть зелёным и для хранилища, и для coder

Убедитесь сами (30-секундное озарение): перезапустите Claude Code, откройте новую сессию внутри ~/code/my-app и попросите агента выполнить:

printenv | grep ANTHROPIC_API_KEY

Вы увидите в транскрипте:

ANTHROPIC_API_KEY=[REDACTED:injected-value]

⏺ ANTHROPIC_API_KEY установлен и доступен (внедрён через хранилище aquaman).

Дочерний процесс увидел настоящий ключ (ваши тесты, сборки, MCP-серверы, скрипты импорта — всё, что действительно нуждается в нём, работает). Агент — то, что решает, какой код запускать на вашей машине — никогда не видит значение, и, следовательно, его нет ни в истории разговора, ни в логах провайдера модели, ни у того, кто позже сделает скриншот вашего терминала.

Используйте это и в своём терминале. Тот же враппер работает и без агента. Просто перейдите в покрытый проект и добавьте префикс к команде:

cd ~/code/
aquaman-coder exec -- python app/scripts/import.py

Та же инъекция переменных окружения, то же редактирование в stdout/stderr. Вставляйте в цели Makefile, псевдонимы оболочки или CI-раннерах — везде, где иначе вы бы использовали файл .env.

Когда Claude Code выполняет инструмент Bash в ~/code/my-app, хук aquaman переписывает команду через updatedInput.command, оборачивая её под aquaman-coder exec. Этот враппер:

  • Разрешает каждую ссылку aquaman://service/key через брокер (POST /broker/resolve через UDS). Учётные данные материализуются для одной команды, а не на всё время жизни агента.
  • Пропускает stdout/stderr через редактор, который добавляет шаблон на основе значения для каждого разрешённого значения: любая строка, которая была внедрена, редактируется независимо от формы (токены Atlassian, секреты Notion, ключи внутренних API — ни один из них не должен соответствовать известному формату провайдера). Общие шаблоны на основе формы (sk-ant-, ghp_, sk_live_, AKIA…, JWT, PEM-блоки, ATATT3xF…) по-прежнему применяются как защита в глубину для секретов, которые дочерний процесс мог раскрыть, но которые мы НЕ внедряли.
  • Очищается после завершения команды.

4. Hermes (агент-хост)

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

npm install -g aquaman-proxy                       # 1. установить демон
aquaman setup                                      # 2. мастер хранилища
aquaman credentials add anthropic api_key sk-ant-... # 3. сохранить ключ провайдера

aquaman hermes setup                               # 4. включить loopback + записать ~/.hermes/.env
aquaman daemon &                                   # 5. запустить прокси (UDS + loopback)
aquaman hermes doctor                              # 6. проверить — прослушиватель + env + хранилище + Hermes

aquaman hermes setup включает прослушиватель loopback, генерирует уникальный токен для каждой установки и записывает управляемый aquaman блок в ~/.hermes/.env (учитывая HERMES_HOME): родные ANTHROPIC_BASE_URL/OPENAI_BASE_URL плюс фиктивный api_key, равный токену. Hermes отправляет токен как ключ провайдера; прокси удаляет его, вставляет ваши реальные учётные данные из хранилища и пересылает запрос дальше. Сегодня только провайдеры LLM (Anthropic, OpenAI).

Опциональные «вкусности» внутри сессии — плагин Python добавляет команду /aquaman-status, инструмент aquaman_status и проверку работоспособности при старте сессии внутри Hermes (не содержит учётных данных):

pip install aquaman-hermes            # или: uv tool install aquaman-hermes
aquaman-hermes install                # помещает плагин в ~/.hermes/plugins/aquaman/
hermes plugins enable aquaman

Как это работает

Агент / OpenClaw / Агент разработки             Aquaman Прокси
┌──────────────────────┐                    ┌──────────────────────┐
│                      │                    │                      │
│  ANTHROPIC_BASE_URL  │═══ UDS / HTTP ════>│  Keychain / 1Pass /  │
│  = aquaman.local     │                    │  Vault / Encrypted   │
│                      │<══════════════════ │                      │
│  fetch() interceptor │═══ broker:resolve  │  + Политика применена│
│   (канальные API)    │                    │  + Аутентификация:   │
│                      │                    │    header / url-path │
│  Нет учётных данных. │  ~/.aquaman/       │    basic / oauth     │
│  Нет открытых портов.│  proxy.sock        │                      │
│  Нечего украсть.     │  (chmod 0o600)     │                      │
└──────────────────────┘                    └──┬─────────┬─────────┘
                                               │         │
                                               │         ▼
                                               │  ~/.aquaman/audit/
                                               │  (хеш-цепочки)
                                               ▼
                                     api.anthropic.com
                                     api.telegram.org
                                     slack.com/api …
  1. Хранение: Учётные данные живут в бэкенде хранилища, который вы уже используете — никакого собственного хранилища (Keychain, 1Password, HashiCorp Vault, Bitwarden, KeePassXC, systemd-creds, encrypted-file).
  2. Политика: Прокси проверяет правила для метода и пути до того, как коснётся учётных данных. Запрещённые запросы получают 403 и никогда не видят настоящих заголовков аутентификации.
  3. Вставка: Прокси находит учётные данные и добавляет заголовок аутентификации перед пересылкой. 25 встроенных сервисов, 4 режима вставки аутентификации (header, URL-path, HTTP Basic, OAuth); пятый (none) — только для хранения (прокси отклоняет трафик).
  4. Брокер (путь coder): POST /broker/resolve материализует учётные данные для каждого вызова инструмента, ограниченные одной переменной окружения команды, затем истекают.
  5. Аудит: Каждое использование учётных данных регистрируется с SHA-256 хеш-цепочками.

Агент видит только контрольное имя хоста (aquaman.local) или маркер-заполнитель (aquaman-proxy-managed). Он никогда не видит настоящий ключ, и ни один TCP-порт не открыт для зондирования другими процессами.

Модель безопасности

УровеньЧто делаетЧто предотвращает
Изоляция процессовУчётные данные в отдельном процессе, подключение через Unix domain socket (chmod 0o600)Скомпрометированный агент не может прочитать ключи — другое адресное пространство, нет TCP-порта для зондирования
Белый список сервисовproxiedServices определяет, какие API агент может достигатьАгент не может обращаться к сервисам, которые вы не разрешили
Политики запросовПравила для метода + пути для каждого сервиса, применяемые до вставки учётных данныхАгент может обращаться к Anthropic, но не к его административному API; может создавать черновики писем, но не отправлять их
Журнал аудитаSHA-256 хеш-цепочки для каждого использования учётных данныхКриминалистика после инцидента, обнаружение подделок, доказательства соответствия
Брокер для каждого вызова (coder)aquaman-coder exec материализует учётные данные для одной команды за разУчётные данные не распространяются по окружению оболочки агента
Редактирование вывода (coder)aquaman-coder exec пропускает stdout/stderr через редактор, который удаляет каждое значение, которое он только что вставил, — плюс общие шаблоны провайдеров как резервный вариантДаже произвольные, не имеющие формы учётные данные никогда не попадают в транскрипт агента

Подробная модель — особенности каждой интеграции (область перехвата HTTP, профили аутентификации, результаты сканера, примечание издателя ClawScan) — находится в packages/plugin/README.md и packages/coder/README.md.

Позиция по соответствию

Aquaman включает запускаемые тесты соответствия в test/compliance/, сопоставленные с:

  • MITRE ATLAS v5.4.0: техники AML.T0055, T0012, T0062, T0090, T0098 (test/compliance/atlas/)
  • NIST SP 800-53 Rev 5: IA-5, AC-3, AC-6, AU-2/9/10, SC-12/28, SI-10 (test/compliance/nist/)

Также нарративы соответствия для CISA/Five-Eyes «Careful Adoption of Agentic AI Services» (апрель 2026), CSA MAESTRO и OWASP Top 10 for Agentic Applications. Тесты запускаются как часть npm test. См. docs/compliance/ для соответствий.

Политики запросов

Области OAuth не могут отличить «создать черновик письма» от «отправить письмо». Оба — gmail.send. Политики запросов заполняют этот пробел.

# ~/.aquaman/config.yaml
policy:
  anthropic:
    defaultAction: allow
    rules:
      - method: "*"
        path: "/v1/organizations/**"
        action: deny          # блокировать административный/биллинговый API
  openai:
    defaultAction: allow
    rules:
      - method: "*"
        path: "/v1/organization/**"
        action: deny
      - method: DELETE
        path: "/v1/**"
        action: deny          # никаких удалений
  slack:
    defaultAction: allow
    rules:
      - method: "*"
        path: "/admin.*"
        action: deny
  gmail:
    defaultAction: allow
    rules:
      - method: POST
        path: "/v1/users/*/messages/send"
        action: deny          # черновики ок, отправка заблокирована
  • Нет политики = разрешить всё (обратная совместимость)
  • Первое совпадение побеждает: правила оцениваются сверху вниз, несовпавшие запросы попадают на defaultAction
  • Отказ до аутентификации: заблокированные запросы никогда не получают настоящих учётных данных
  • Глобусы пути: * соответствует в пределах сегмента, ** — нулю или более сегментов
  • aquaman setup применяет безопасные значения по умолчанию для сохранённых сервисов (anthropic, openai, slack, gmail).
  • aquaman policy list / aquaman policy test <svc> <method> <path> для проверки / сухих прогонов.

Бэкенды учётных данных

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

БэкендДля чего лучше всего подходитНастройка
keychainЛокальная разработка на macOS (по умолчанию)Работает «из коробки»
encrypted-fileLinux, WSL2, CI/CDAES-256-GCM, защищён паролем
keepassxcСуществующие пользователи KeePassУстановите AQUAMAN_KEEPASS_PASSWORD или используйте файл ключа
1passwordСовместное использование учётных данных в командеbrew install 1password-cli && op signin — для автоматических агентов используйте сервисный аккаунт (OP_SERVICE_ACCOUNT_TOKEN)
vaultКорпоративное управление секретамиУстановите VAULT_ADDR + VAULT_TOKEN
systemd-credsLinux с systemd ≥ 256Защищено TPM2, не требует прав root
bitwardenПользователи Bitwardenbw login && export BW_SESSION=$(bw unlock --raw)

aquaman setup автоматически определяет разумное значение по умолчанию (macOS → keychain; Linux → keychain, если libsecret, или systemd-creds, если systemd ≥ 256, иначе encrypted-file).

encrypted-file — это крайнее средство для безголовых Linux/CI-сред без родного кольца ключей. Для лучшей безопасности на Linux установите libsecret-1-dev (кольцо ключей GNOME), используйте systemd-creds (привязка TPM2) или 1Password/Vault.

Кэширование учётных данных (v0.13.1+)

Бэкенды с затратами на каждый доступ — 1password (биометрический запрос при каждом чтении в режиме десктопного приложения), bitwarden (~1-2 с запуск CLI), vault (HTTP-ответ) — кэшируются в памяти демона на 15 минут по умолчанию, чтобы активная сессия агента разблокировала хранилище один раз за окно, а не один раз за запрос. Остальные бэкенды уже быстры или кэшируют внутри себя, поэтому кэширование для них по умолчанию отключено. Настройте с помощью credentials.cacheTtlSeconds в ~/.aquaman/config.yaml (или AQUAMAN_CACHE_TTL); 0 отключает.

Честный компромисс: биометрический запрос при каждом доступе — это проверка присутствия пользователя, и кэш убирает такую проверку на время TTL. Для автоматических агентов этот запрос никогда не будет отвечен — они были бы вынуждены abandon хранилище в пользу открытого текстового .env, что строго хуже. Кэш не перемещает границу изоляции: значения живут только в процессе прокси (где они уже проходят при каждом запросе), никогда не записываются на диск и немедленно сбрасываются при смене через aquaman credentials add. Запись всегда идёт в ваше хранилище. Протестировано на соответствие в test/compliance/cache-residency.test.ts. Для нулевых запросов с 1Password используйте сервисный аккаунт, ограниченный хранилищем aquamanaquaman doctor укажет вам туда.

Лицензия

MIT — см. LICENSE.

Категории