Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.velesagent.com/llms.txt

Use this file to discover all available pages before exploring further.

Секреты и токены

Veles/Nanobot хранит секреты отдельно от обычного config.json. Конфиг может содержать только ссылку на секрет (SecretRef) или пустое значение, а реальные токены загружаются в runtime и не отправляются в Nerve UI или LLM.

Master key

Для локального encrypted-хранилища нужен ключ:
uv run nanobot secrets generate-key
$env:NANOBOT_SECRETS_MASTER_KEY="PASTE_GENERATED_KEY"
uv run nanobot gateway
NANOBOT_SECRETS_MASTER_KEY должен быть в окружении процесса Nanobot gateway. Nerve не должен получать этот ключ.

Где лежат локальные секреты

Encrypted local store пишет файлы в активный data dir:
  • <data_dir>/secrets/values.enc.json — обычные API keys и skill env secrets
  • <data_dir>/secrets/auth-profiles.enc.json — OAuth-профили, например OpenAI Codex
Файлы содержат AES-GCM envelope (version, alg, nonce, ciphertext, timestamps). Значения секретов не лежат там в plaintext.

SecretRef

SecretRef говорит Nanobot, откуда брать секрет:
  • local — зашифрованное локальное хранилище Nanobot
  • env — переменная окружения процесса gateway
  • file — файл на машине gateway
  • exec — команда, которая возвращает секрет
Nerve v1 в основном управляет local: пользователь вводит значение один раз, Nanobot шифрует его и дальше возвращает только redacted status.

Как Nerve показывает секреты

В Nerve откройте Workspace → Secrets. UI получает список целей через:
  1. Nerve GET /api/secrets
  2. Gateway RPC secrets.catalog
  3. Nanobot строит catalog из provider registry, tool targets, channels, MCP servers и skill metadata
Если строка показывает MISSING / EMPTY, это не значит, что секрет находится в Nerve. Это только redacted target: Nanobot знает, что такой секрет может понадобиться, но значение еще не настроено.

Skill secrets

Skill может объявить нужный env secret в SKILL.md:
metadata: {"nanobot":{"requires":{"env":["GH_TOKEN"]}}}
Тогда Nanobot создаст target вроде skills.github.env.GH_TOKEN. Если значение сохранить в Nerve Secrets panel, Nanobot будет подставлять GH_TOKEN только вокруг выполнения agent turn. Значение не попадает в prompt и не записывается в config.json.

OpenAI Codex OAuth

OpenAI Codex использует OAuth, а не API key. Его tokens хранятся в encrypted auth profile store:
<data_dir>/secrets/auth-profiles.enc.json
Подключить или отключить Codex можно через Nerve Workspace → Secrets. Browser получает только URL/статус OAuth-flow; access/refresh tokens остаются внутри Nanobot.

Что важно помнить

  • config.json не должен хранить новые plaintext-секреты.
  • Nerve никогда не показывает сохраненное значение секрета.
  • Без NANOBOT_SECRETS_MASTER_KEY чтение env/file/exec refs может работать, но encrypted local writes и encrypted OAuth storage будут недоступны.
  • Для deployment нужно сохранять .nanobot data dir и передавать master key через secret manager окружения.