Это контракт env-переменных эталонного развёртывания. Переменные с пометкой required обязательны — без них сервис не стартует.
Никогда не коммитьте реальные секреты в публичный репозиторий. Используйте Kubernetes secrets или secret manager. В сниппетах ниже — имена, не значения.
Общие (все сервисы)
| Переменная | Required | Заметки |
|---|
NODE_ENV | да | В развёртываниях — production. |
LOG_LEVEL | нет | По умолчанию info; debug для verbose. |
INTERNAL_TOKEN | да | Shared-secret для вызовов /internal/* между соседними сервисами. |
agentflow-api
| Переменная | Required | Заметки |
|---|
DATABASE_URL | да | Postgres connection string. |
JWT_SECRET | да | HS256-секрет для cookie af_session. |
SIWE_DOMAIN | да | Домен для SIWE-сообщений (agentflow.website или ваш). |
COOKIE_DOMAIN | да | Домен для cookie af_session (.your-domain). |
S3_ENDPOINT | да | URL object storage. |
S3_BUCKET | да | Имя бакета под скриншоты и артефакты. |
S3_ACCESS_KEY | да | |
S3_SECRET_KEY | да | |
CRYPTOBOT_API_TOKEN | optional | Включает рельс CryptoBot. |
PLATEGA_MERCHANT_ID | optional | Включает рельс Platega. |
PLATEGA_SECRET | optional | HMAC-секрет для вебхуков Platega. |
BSC_RPC_URL | optional | RPC-эндпоинт для опроса USDT BEP20. |
BSC_DEPOSIT_ADDRESS | optional | Hot-wallet, принимающий депозиты. |
BSC_INDEXER_FROM_BLOCK | optional | Стартовый блок индексации при первом запуске. |
agentflow-agents
| Переменная | Required | Заметки |
|---|
API_BASE_URL | да | Внутренний URL agentflow-api. |
INTERNAL_TOKEN | да | Тот же shared-secret, что в API. |
OPENROUTER_API_KEY | optional | Доступ к OpenRouter. Либо он, либо Anthropic. |
ANTHROPIC_API_KEY | optional | Доступ к Anthropic через OAuth-proxy. |
CLAUDE_OAUTH_PROXY_URL | да | Внутренний URL claude-oauth-proxy. |
agentflow-runtime
| Переменная | Required | Заметки |
|---|
RUNTIME_SANDBOX_IMAGE | да | Контейнерный образ для спавна per-session sandbox’ов. |
MAX_CONCURRENT_SESSIONS | нет | По умолчанию 50. Увеличивайте по ёмкости кластера. |
claude-oauth-proxy
| Переменная | Required | Заметки |
|---|
CLAUDE_CLIENT_ID | да | OAuth-клиент Anthropic / Claude API. |
CLAUDE_CLIENT_SECRET | да | |
OPENROUTER_API_KEY | optional | Если маршрутизация идёт и через OpenRouter. |
agentflow-bot
| Переменная | Required | Заметки |
|---|
TELEGRAM_BOT_TOKEN | да | От @BotFather. |
API_BASE_URL | да | Внутренний URL agentflow-api. |
INTERNAL_TOKEN | да | |
Генерация секретов
Безопасный способ сгенерировать JWT_SECRET и INTERNAL_TOKEN:
Применить в Kubernetes:
kubectl -n agentflow create secret generic agentflow-secrets \
--from-literal=JWT_SECRET=$(openssl rand -hex 32) \
--from-literal=INTERNAL_TOKEN=$(openssl rand -hex 32)
Сошлитесь на secret из каждого Deployment через envFrom: [{ secretRef: { name: agentflow-secrets } }].
INTERNAL_TOKEN должен быть одинаковым во всех сервисах, общающихся с /internal/*. Ротируйте поэтапно: сначала соседние сервисы, API в последнюю очередь; новый токен добавляется до удаления старого.