OneCLI
- title
- OneCLI
- type
- toolbox
- summary
- Шлюз учётных данных, подменяющий плейсхолдер агента на настоящий секрет при исходящем запросе
- tags
- security, secrets, agentic-coding, rust, self-hosted, watchlist
- language
- Rust + TypeScript
- license
- Apache-2.0
- created
- 2026-07-29
- updated
- 2026-09-13
- lang
- ru
- translation_of
- onecli
- source_updated
- 2026-09-13
- translated
- 2026-09-14
- translator
- lllm/antigravity/gemini-3.7-flash-medium
OneCLI - это self-hosted шлюз, который находится между агентами и вызываемыми ими API, благодаря чему ни один процесс агента не хранит реальные учётные данные. Вы один раз сохраняете настоящие ключи в OneCLI и выдаёте каждому агенту плейсхолдер - в примере из README буквально используется FAKE_KEY. Когда агент выполняет обычный HTTP-запрос через шлюз, шлюз сопоставляет запрос с сохранёнными учётными данными по шаблону хоста и пути, расшифровывает настоящее значение, подставляет его в виде заголовка или query-параметра URL и пересылает запрос.
Составные части
Три компонента. Rust-шлюз на порту 10255 перехватывает исходящие запросы и внедряет учётные данные; агенты аутентифицируются в нём с помощью токена доступа в заголовке Proxy-Authorization. Дашборд на Next.js на порту 10254 управляет агентами, секретами и правами доступа, а также обслуживает API, к которому обращается шлюз, чтобы определить, какие учётные данные соответствуют данному запросу. Хранилище секретов держит данные в покое зашифрованными с помощью AES-256-GCM и расшифровывает их только в момент запроса. Хранение данных - PostgreSQL через Prisma. Каждый агент получает собственный токен с ограниченными правами, поэтому отзыв и аудит доступа каждого агента происходят в одном месте, а не по множеству .env-файлов.
Есть также интеграция с vault, подключающая Bitwarden или другой менеджер паролей для инъекции по требованию. Это позволяет вообще не хранить секреты на сервере OneCLI - режим более интересный, поскольку оставляет OneCLI только правила маршрутизации, а не сами секреты.
curl -fsSL https://onecli.sh/install | sh
Или склонировать и выполнить docker compose -f docker/docker-compose.yml up -d --wait. Быстрый старт запускается в локальном режиме: один пользователь, без входа, без необходимости настраивать .env или NEXTAUTH_SECRET. Многопользовательский режим требует задания NEXTAUTH_SECRET и учётных данных Google OAuth, причём Google - единственный провайдер идентификации, описанный в README.
Что он защищает, а что нет
Шлюз выполняет MITM-перехват для HTTPS, и на этот факт стоит обратить пристальное внимание. Чтобы подменить заголовок в исходящем TLS-запросе, он должен терминировать соединение, поэтому агент обязан доверять CA шлюза, а сам шлюз видит тело каждого запроса и ответа в открытом виде. Это делает его ценной целью для атаки, хранящей и учётные данные, и трафик, а в README не обсуждаются ни распространение CA, ни сбои при certificate pinning, ни судьба перехваченных тел запросов и ответов.
Более базовое ограничение - это область действия полномочий. Сокрытие ключа не уменьшает того, что этот ключ позволяет сделать: агент, имеющий доступ к шлюзу, обладает всеми правами каждого привязанного к нему секрета всё время, пока может отправлять запросы. Это действительно полезно против утечки стенограммы диалога, логирования переменных окружения или извлечения env через prompt injection - но совершенно бесполезно против агента, которому просто поручили деструктивно вызвать API. Сравните с ephemeral-credentials, где ротация заложена в структуру, поскольку срок действия учётных данных истекает сам по себе, и с credential-compartmentalization, где радиус поражения ограничен разделением секретов по специализированным хранилищам. OneCLI не относится ни к тому, ни к другому: это централизация плюс маскировка, где единственной границей служит разграничение прав на уровне агентов. Это укладывается в категорию HTTP-перехвата из sandboxing-ai-agents, применённую к учётным данным, а не к сетевой доступности, и наследует типичную слабость этой категории: всё держится на том, что у агента нет обходных путей наружу. pigeon дополняет эту схему: он сужает полномочия при каждом делегировании вместо того, чтобы прятать ключ.
Находится в watchlist, несмотря на число звёзд: фильтром здесь служит подход к безопасности, а не популярность. Инструмент терминирует TLS и хранит все секреты, не имея опубликованной модели угроз или аудита безопасности.
Репозиторий: https://github.com/onecli/onecli - 2 924 звезды, Apache-2.0, первый коммит в марте 2026 года. README представляет собой список возможностей без опубликованной модели угроз или аудита, и для компонента, чья единственная задача - хранить секреты и терминировать TLS, это серьёзный пробел.