Переменные окружения
Бэкенд настраивается через единственный файл .env. В автоматической установке он находится в /root/copula/.env (права 0600); при ручной установке это .env, который вы создаёте по готовому шаблону со страницы Ручная установка.
Основные
| Переменная | По умолчанию | Описание |
|---|---|---|
BACKEND_PORT | 8080 | Порт, который бэкенд слушает внутри контейнера. Compose-стеки публикуют на него порт хоста 8901. |
LOG_LEVEL | — | Детализация логирования. |
CORS_ALLOWED_ORIGINS | * | Разрешённые CORS-источники. |
JWT_SECRET | — | Обязательная. Секрет подписи JWT; ровно 128 hex-символов. |
ENCRYPTION_KEY | — | Обязательная. Ключ шифрования AES-256; 32 символа. |
LICENSE_TOKEN | — | Обязательная. Лицензионный токен из кабинета; также bearer-токен для LLM-роутера кабинета. |
CABINET_URL | https://api.copul4.com | Endpoint API кабинета. |
ADMIN_USER / ADMIN_PASS | — | Начальные учётные данные администратора; бэкенд автоматически создаёт из них аккаунт администратора. |
База данных
| Переменная | По умолчанию | Описание |
|---|---|---|
POSTGRES_HOST | postgres | Хост PostgreSQL. |
POSTGRES_PORT | 5432 | Порт PostgreSQL. |
POSTGRES_USER | agent | Пользователь базы данных. |
POSTGRES_PASSWORD | (пусто) | Пароль базы данных. |
POSTGRES_DB | agentdb | Имя базы данных. |
Провайдер моделей
| Переменная | По умолчанию | Описание |
|---|---|---|
MODEL_PROVIDER | openrouter | openrouter, custom или copula. Пустое значение означает openrouter; неизвестное значение логирует fatal-сообщение и откатывается к openrouter. |
MODEL_BASE_URL | https://openrouter.ai/api/v1 | Базовый URL OpenAI-совместимого API. |
MODEL_API_KEY | — | API-ключ провайдера (для copula не нужен — учётные данные это лицензионный токен). |
MODEL_NAME | — | Имя модели. В новых установках через мастер по умолчанию copula-base. |
MODEL_MAX_TOKENS | 25000 | Максимум токенов в ответе модели. |
Профили Smart / Basic
SMART_MODEL_* и BASIC_MODEL_* переопределяют значения MODEL_* для каждого профиля. Разрешение каждого значения идёт по цепочке fallback SMART_* → BASIC_* → MODEL_*.
| Группа переменных | Назначение |
|---|---|
SMART_MODEL_PROVIDER / SMART_MODEL_BASE_URL / SMART_MODEL_API_KEY / SMART_MODEL_NAME / SMART_MODEL_MAX_TOKENS | Переопределения для smart-профиля (тяжёлый). |
BASIC_MODEL_PROVIDER / BASIC_MODEL_BASE_URL / BASIC_MODEL_API_KEY / BASIC_MODEL_NAME / BASIC_MODEL_MAX_TOKENS | Переопределения для basic-профиля (лёгкий). |
Также распознаются устаревшие ключи провайдеров OPENROUTER_API_KEY и MINIMAX_API_KEY.
Пресет моделей Copula
MODEL_PRESET определяет, какие встроенные агенты наследуют smart-профиль, а какие — basic-профиль, когда бэкенд заполняет настройки агентов. Мастер установки записывает эту переменную из пресета, выбранного на шаге Env.
| Переменная | По умолчанию | Описание |
|---|---|---|
MODEL_PRESET | balanced | economy, balanced или performance. Пустое или неизвестное значение откатывается к balanced с предупреждением в логе. |
| Пресет | Smart-профиль | Basic-профиль |
|---|---|---|
economy | — | product, rnd, developer, qa, devops, e2e, chronicler |
balanced | product, rnd, devops | developer, qa, chronicler, e2e |
performance | product, rnd, developer, qa, devops, e2e, chronicler | — |
Пресет применяется один раз, при первом запуске: заполнение затрагивает только отсутствующие настройки агентов, поэтому последующее изменение MODEL_PRESET не влияет на существующие настройки агентов — меняйте профили вручную в настройках агентов.
Профиль smart-fast
SMART_FAST_MODEL_* — дополняющий третий бандл профиля, следующий тому же паттерну именования, что SMART_MODEL_* / BASIC_MODEL_*. Каждое значение разрешается по цепочке fallback SMART_FAST_* → SMART_* → BASIC_* → MODEL_*.
| Группа переменных | Назначение |
|---|---|
SMART_FAST_MODEL_PROVIDER / SMART_FAST_MODEL_BASE_URL / SMART_FAST_MODEL_API_KEY / SMART_FAST_MODEL_NAME / SMART_FAST_MODEL_MAX_TOKENS | Переопределения для профиля smart-fast. |
SMART_FAST_MODEL_CONTEXT_LIMIT | Переопределение лимита контекста профиля smart-fast; откатывается к AGENT_CONTEXT_TOKEN_LIMIT, затем к 450000. |
Если разрешённый провайдер профиля smart-fast — copula и ни одна из SMART_FAST_MODEL_NAME, SMART_MODEL_NAME, BASIC_MODEL_NAME явно не задана, имя модели по умолчанию — copula-smart-fast.
Профиль smart-fast сидится только если отсутствует, под тем же общим гейтом, что профили smart/basic. На существующих инстансах профиль появляется аддитивно при следующем запуске; инстансы без новых переменных не меняют поведение (профиль копирует значения, разрешённые по цепочке fallback).
Существующие имена MODEL_*, SMART_MODEL_* и BASIC_MODEL_* не изменены и остаются полностью поддерживаемыми — они не deprecated. MODEL_PRESET и карты наследования пресетов выше также не изменены: smart-fast не входит ни в один пресет.
copula-smart-fast требует тариф PRO — см. Получение лицензии.
Агенты и рантайм
| Переменная | По умолчанию | Описание |
|---|---|---|
AGENT_WORKSPACE | — | Путь к рабочей директории репозиториев агентов. |
AGENT_CONTEXT_TOKEN_LIMIT | 120000 | Лимит токенов контекста агента. |
MAX_REPO_WORKERS | 20 | Максимум одновременных воркеров репозиториев. |
SESSION_STORAGE_TYPE | — | database или file. |
SESSION_FILE_PATH | — | Путь для файлового хранилища сессий. |
FILE_STORAGE_PATH | ./uploads | Куда сохраняются загруженные файлы. |
MAX_FILE_SIZE_MB | 50 | Максимальный размер загрузки. |
Интеграции и обновления
| Переменная | По умолчанию | Описание |
|---|---|---|
SP_DISTRIBUTOR_URL | https://get.copul4.com | Endpoint дистрибьютора. |
SELF_UPDATE_IMAGE | — | Опциональное переопределение ссылки на образ, используемой при проверках доступности self-update. |
COCOINDEX_CODE_IMAGE | cocoindex/cocoindex-code:full | Переопределение образа поиска по коду (уровень compose). |
LLM-роутер кабинета (для операторов)
LLM-роутер кабинета (endpoint провайдера copula за CABINET_URL) — централизованно управляемая установка. Его конфигурация роль-ориентирована, чтобы апстрим-провайдера можно было заменить без переименования конфигурации:
| Переменная | По умолчанию | Описание |
|---|---|---|
PROVIDER_BASE_API_KEY | (пусто) | API-ключ base-апстрима; также ключ search-эндпоинта. |
PROVIDER_BASE_BASE_URL | https://api.minimax.io/v1 | Базовый URL base-апстрима. |
PROVIDER_BASE_MODEL | MiniMax-M3 | Переопределение апстрим-модели для copula-base. |
PROVIDER_SMART_API_KEY | (пусто) | API-ключ smart-апстрима. |
PROVIDER_SMART_BASE_URL | (пусто) | Базовый URL smart-апстрима; пока пуст, copula-smart / copula-smart-long отвечают 502. |
PROVIDER_SMART_MODEL | kimi-k3 | Переопределение апстрим-модели для copula-smart. |
PROVIDER_SMART_MODEL_LONG | kimi-k3-1m | Переопределение апстрим-модели для copula-smart-long. |
PROVIDER_SMART_PROXY_URL | (пусто) | Опциональный прокси для smart-апстрима; fail-fast валидация при запуске. |
PROVIDER_SMART_FAST_API_KEY | (пусто) | API-ключ smart-fast-апстрима. |
PROVIDER_SMART_FAST_BASE_URL | (пусто) | Базовый URL smart-fast-апстрима; пока пуст, copula-smart-fast отвечает 502. |
PROVIDER_SMART_FAST_MODEL | kimi-k3 | Переопределение апстрим-модели для copula-smart-fast (placeholder-дефолт). |
PROVIDER_SMART_FAST_PROXY_URL | (пусто) | Опциональный прокси для smart-fast-апстрима; та же fail-fast валидация. |
Старые имена роутера кабинета MINIMAX_* / MODAL_* удалены без слоя совместимости — кабинет является централизованной установкой, и оператор обновляет env при деплое. Замена касается только роутера кабинета; имена env бэкенда выше не изменены.
Переопределения апстрим-моделей ключуются wire-кодом модели. Wire-модели: copula-base (множитель ×1), copula-smart (×10), copula-smart-long (×20) и copula-smart-fast (×20, только тариф PRO). У copula-smart-fast нет context-fallback и страховочного ретрая.