OneCLI, шлюз с открытым кодом, который прячет API-ключи от ИИ-агентов

OneCLI, шлюз с открытым кодом, который прячет API-ключи от ИИ-агентов

Пользователь Jonathanfishner представил на Hacker News, в разделе Show HN (там разработчики показывают собственные проекты), инструмент OneCLI, шлюз с открытым кодом, который встаёт между ИИ-агентами и внешними API-сервисами, к которым те обращаются. Пост набрал 91 голос и 29 комментариев. Проблема, которую решает инструмент: современным агентам нужно вызывать десятки разных API, а выдавать каждому агенту настоящие ключи доступа, риск для безопасности.

Схема работы такая: реальные учётные данные (API-ключи) один раз сохраняются в OneCLI, а самим агентам выдаются ключи-заглушки (в примере разработчиков, FAKE_KEY). Когда агент делает HTTP-запрос через шлюз, OneCLI сопоставляет запрос с нужным набором учётных данных по совпадению хоста и пути запроса, расшифровывает настоящий ключ и на лету подставляет его в исходящий запрос, в заголовок или в параметр URL. Секреты хранятся в базе в зашифрованном виде (AES-256-GCM) и расшифровываются только в момент самого запроса. В итоге агент выполняет обычные HTTP-вызовы и ни разу не видит настоящий секрет.

Технически проект состоит из двух частей. Быстрый шлюз на Rust перехватывает исходящий трафик агента (в том числе HTTPS, через MITM-перехват) и подставляет учётные данные; агенты аутентифицируются в шлюзе токенами доступа через заголовок Proxy-Authorization, и у каждого агента свой токен со своими правами (поддержка нескольких агентов). Веб-дэшборд на Next.js отвечает за управление агентами, секретами и правами доступа и отдаёт шлюзу API, который определяет, какие учётные данные подставлять под конкретный запрос. Есть два режима входа: локальный однопользовательский без логина, для разработки на своей машине, и вход через Google OAuth, для команд из нескольких человек. Отдельная возможность, интеграция с менеджерами паролей вроде Bitwarden: секреты можно подставлять по запросу, не храня их постоянно на сервере OneCLI.

Технологический стек, монорепозиторий: apps/web (веб-дэшборд и API на Next.js, порт 10254), apps/gateway (шлюз на Rust, порт 10255), packages/db (Prisma ORM и миграции), packages/ui (общие UI-компоненты на базе shadcn/ui); хранилище данных, PostgreSQL. Установить OneCLI можно одной командой, curl-скрипт с сайта onecli.sh, который поднимает всё приложение через Docker, либо вручную: клонировать репозиторий и запустить docker compose. После установки дэшборд открывается на localhost:10254 (там заводят агента и добавляют секреты), а HTTP-клиент агента направляют на адрес шлюза localhost:10255. Для быстрого локального старта переменные окружения не нужны; NEXTAUTH_SECRET и данные приложения Google требуются, только если включают вход через OAuth для нескольких пользователей.

Ключевые факты

  • Реальные API-ключи хранятся только в OneCLI; агентам выдают ключи-заглушки (например, FAKE_KEY), а шлюз на лету подменяет их настоящими секретами при каждом запросе.
  • Секреты шифруются по алгоритму AES-256-GCM и расшифровываются только в момент запроса; подстановка идёт по совпадению хоста и пути, в заголовок или в параметр URL.
  • Архитектура из двух частей: шлюз на Rust (порт 10255) перехватывает трафик агента, включая HTTPS через MITM, а веб-дэшборд на Next.js (порт 10254) управляет агентами, секретами и правами.
  • У каждого агента свой токен доступа со своими правами; есть локальный режим без логина и вход через Google OAuth для команд.
  • Поддерживается интеграция с менеджерами паролей вроде Bitwarden для подстановки секретов по запросу; установка, одна curl-команда либо ручной запуск через Docker Compose.

Почему это важно

Сам источник формулирует проблему прямо: ИИ-агентам приходится вызывать десятки разных API, а выдавать каждому агенту настоящие ключи доступа, риск для безопасности. Это узкое место общее для всей нынешней волны агентных ИИ-инструментов: чем больше сервисов агент вызывает сам, тем больше секретов физически оказывается у него на руках. OneCLI убирает эту проблему на уровне архитектуры: ключ никогда не оказывается в руках самого агента, подстановку делает отдельный сетевой шлюз, а агент работает только с токеном-заглушкой.

Кому это важно

В первую очередь, разработчикам, которые строят ИИ-агентов и автоматизации, обращающиеся к внешним API, и командам, у которых таких агентов много: по словам авторов, OneCLI даёт «одно место», откуда управляют доступом, ротируют ключи и видят, что именно делает каждый агент. Полезен и тем, кто в принципе не хочет держать боевые ключи в конфигах или переменных окружения агента.

Как это применить

Самый быстрый способ, одна команда (curl-скрипт с onecli.sh), которая поднимает всё приложение через Docker; для ручной установки нужно клонировать репозиторий и запустить docker compose. Дальше в веб-дэшборде на localhost:10254 заводят агента и добавляют секреты, а HTTP-клиент самого агента направляют на адрес шлюза localhost:10255, дальше он просто делает обычные запросы, а подмену ключей берёт на себя шлюз. Проект бесплатный, с открытым кодом и разворачивается у себя; учётная запись Google нужна, только если включают режим для нескольких пользователей.

Можно ли доверять

Источник здесь, собственный пост разработчиков на Hacker News (в разделе Show HN) и описание проекта на GitHub, то есть это самопрезентация, а не независимый обзор: подтвердить заявленные возможности (шифрование, изоляцию ключей) можно только чтением кода, благо он открыт. Внешний сигнал пока один, реакция сообщества: 91 голос и 29 комментариев на Hacker News на момент публикации поста; независимого аудита безопасности источник не упоминает.

Риски и подводные камни

Инструмент централизует секреты: все настоящие API-ключи в расшифрованном виде проходят через один шлюз и хранятся в одной базе, так что безопасность самого OneCLI (сервера, дэшборда, базы данных) становится критичной точкой отказа, компрометация шлюза потенциально раскрывает сразу все ключи всех агентов. Перехват HTTPS-трафика агента устроен через MITM, а это подразумевает отдельную настройку доверенного сертификата на стороне агента, шаг, к которому стоит отнестись внимательно. Наконец, это совсем свежий проект (пост на Hacker News), у которого пока нет долгой истории эксплуатации.

«Хранилище секретов для ИИ-агентов. Сохрани один раз. Подставляй где угодно. Агенты никогда не видят ключи.»

— слоган проекта OneCLI в README на GitHub