Секреты и токены
Велес хранит секреты отдельно от обычногоconfig.json. Конфигурация может содержать только ссылку на секрет (SecretRef) или пустое значение, а реальные токены загружаются во время работы и не отправляются в интерфейс Велеса или модель.
Главный ключ
Для локального зашифрованного хранилища нужен ключ:VELES_SECRETS_MASTER_KEY должен быть в окружении процесса сервера Велеса. Интерфейс Велеса не должен получать этот ключ.
Где лежат локальные секреты
Зашифрованное локальное хранилище пишет файлы в активный каталог служебных данных:<data_dir>/secrets/values.enc.json— обычные ключи API и секреты окружения навыков;<data_dir>/secrets/auth-profiles.enc.json— OAuth-профили, например OpenAI Codex.
version, alg, nonce, ciphertext, timestamps). Значения секретов не лежат там открытым текстом.
SecretRef
SecretRef говорит Велесу, откуда брать секрет:
local— зашифрованное локальное хранилище Велеса;env— переменная окружения процесса сервера;file— файл на машине сервера;exec— команда, которая возвращает секрет.
local: пользователь вводит значение один раз, Велес шифрует его и дальше возвращает только замаскированный статус.
Как интерфейс показывает секреты
В интерфейсе Велеса откройте «Рабочая область» → «Секреты». Интерфейс получает список целей так:GET /api/secrets;- внутренний вызов
secrets.catalog; - Велес строит каталог из провайдеров, инструментов, каналов, MCP-серверов и метаданных навыков.
MISSING или EMPTY, это не значит, что секрет находится в интерфейсе. Это только замаскированная цель: Велес знает, что такой секрет может понадобиться, но значение ещё не настроено.
Поле поиска в панели Секреты фильтрует уже загруженный список на стороне Nerve. Оно не делает дополнительных запросов к gateway и ищет по названию секрета, target id, пути конфигурации и источнику.
Секреты навыков
Навык может объявить нужный секрет окружения вSKILL.md:
skills.github.env.GH_TOKEN. Если значение сохранить в панели секретов, Велес будет подставлять GH_TOKEN только на время выполнения ответа. Значение не попадает в инструкцию модели и не записывается в config.json.
requires.env делает переменную обязательной: без неё навык считается недоступным. Для опциональных API-ключей используйте отдельный список секретов:
fda-database объявляет опциональный OPENFDA_API_KEY как skills.fda-database.env.OPENFDA_API_KEY: ключ повышает дневной лимит openFDA, но без него навык всё равно работает.
OpenAI Codex OAuth
OpenAI Codex использует OAuth, а не ключ API. Его токены хранятся в зашифрованном хранилище профилей:Что важно помнить
config.jsonне должен хранить новые секреты открытым текстом.- Интерфейс Велеса никогда не показывает сохранённое значение секрета.
- Без
VELES_SECRETS_MASTER_KEYчтение ссылокenv,fileиexecможет работать, но локальная запись зашифрованных секретов и OAuth-хранилище будут недоступны. - Для постоянного развёртывания нужно сохранять каталог
.velesи передавать главный ключ через менеджер секретов окружения.
