Skip to content

Переменные окружения ​

Kvalli настраивается переменными окружения. Где их задавать:

  • install.sh — /opt/kvalli/.env, применить: docker compose up -d app в /opt/kvalli;
  • Docker Compose — .env рядом с docker-compose.yml, он целиком передаётся в контейнер;
  • Kubernetes — нечувствительные под env в values.yaml, чувствительные под secretEnv или в свой Secret.

Подключения к моделям, Git-провайдерам, трекерам и Confluence задаются не здесь, а в интерфейсе: Настройки → Подключения.

Как читаются булевы значения

Написание важно, и правила у переменных разные:

  • большинство включается значением true или 1, любое другое непустое значение выключает;
  • KVALLI_AUTO_MIGRATE и KVALLI_PASSWORD_LOGIN выключает только точное false, всё остальное оставляет включённым;
  • COOKIE_SECURE включает только точное true, а любое другое непустое значение — даже 1 — выключает.

Пустое значение всегда означает «не задано», то есть значение по умолчанию.

Обязательные ​

ПеременнаяЧто задаёт
DATABASE_URLСтрока подключения к PostgreSQL. Без неё сервер в production не запускается. В Docker Compose и Helm собирается сама
POSTGRES_PASSWORDПароль встроенного PostgreSQL (Docker Compose)
ENCRYPTION_KEYКлюч шифрования учётных данных, 32+ случайных байта: openssl rand -hex 32. Храните вместе с резервными копиями
JWT_SECRETКлюч подписи сеансов, 32+ случайных байта
KVALLI_IMAGEОбраз для Docker Compose, например ghcr.io/kvalli-ai/kvalli:2.3.0

Первый запуск ​

ПеременнаяЧто задаёт
KVALLI_ADMIN_EMAIL, KVALLI_ADMIN_PASSWORDАдминистратор, который создаётся, пока в установке нет ни одного пользователя. Удалите пароль после первого входа

Лицензия и телеметрия ​

ПеременнаяЧто задаёт
KVALLI_LICENSEЛицензионный ключ. См. Лицензия
KVALLI_LICENSE_FILEПуть к файлу с ключом вместо значения
KVALLI_TELEMETRYtrue — отчёт раз в час; false — ничего, включая анонимный пинг. См. Телеметрия
KVALLI_TELEMETRY_ENDPOINTСвой коллектор вместо нашего

Вход ​

ПеременнаяЧто задаёт
KVALLI_PASSWORD_LOGINfalse — только единый вход (работает, только если SSO лицензирован)
KVALLI_OIDC_*Единый вход. См. Единый вход
APP_BASIC_AUTH_USER, APP_BASIC_AUTH_PASSWORDОбщий пароль HTTP Basic перед всем рабочим пространством. CI с API-ключом и вошедшие пользователи проходят без него

Сеть и прокси ​

ПеременнаяЧто задаётПо умолчанию
KVALLI_PUBLIC_URLПубличный адрес, который открывают пользователи. Нужен для единого входа—
ALLOWED_ORIGINSOrigin через запятую, которым разрешено обращаться к API с cookie сеанса. Включите туда публичный адрес—
TRUST_PROXY_HOPSСколько прокси перед Kvalli учитывать при определении IP клиента. 1 за одним прокси0
COOKIE_SECUREПусто — по NODE_ENV (в production cookie Secure); true — всегда Secure; другое — нет. Выключайте, только если пользователи ходят по обычному HTTP—
KVALLI_HSTSЗаголовок Strict-Transport-Security. Не задано — отправляется, если KVALLI_PUBLIC_URL начинается с https://—
KVALLI_PORTПорт хоста, который публикует docker compose3000
POSTGRES_PORTПорт хоста встроенного PostgreSQL, только на loopback5432
LOG_LEVELtrace, debug, info, warn, errorinfo

База данных ​

ПеременнаяЧто задаётПо умолчанию
KVALLI_AUTO_MIGRATEПрименять миграции при запуске. false — применять самимtrue
KVALLI_DB_STATEMENT_TIMEOUT_MSСколько миллисекунд может выполняться один запрос к базе. 0 — без ограничения. На миграции не действует300000

Модели ​

ПеременнаяЧто задаётПо умолчанию
GEMINI_API_KEYКлюч Gemini по умолчанию. Остальные провайдеры — в настройках—
KVALLI_LLM_DAILY_TOKENSТокенов на проект в сутки по UTC. Токен из кэша промпта провайдера считается как десятая частьбез лимита
KVALLI_LLM_RETRIESСколько раз повторять вызов модели после кратковременного сбоя (429, 5xx, обрыв). Не больше 52
KVALLI_LLM_RETRY_DELAY_MSПервая пауза перед повтором, дальше удваивается1000
KVALLI_LLM_CALL_LOG_DAYSСколько дней хранить промпты и ответы моделей для разбора, почему агент поступил так. Промпты содержат то, что читали агенты: источники, код, навыки. 0 — не хранить7

Браузерный воркер ​

ПеременнаяЧто задаётПо умолчанию
KVALLI_BROWSER_URLАдрес воркера, например http://browser:3300. Пусто — Агент 2 пишет тесты по кейсу и репозиторию, без браузера—
KVALLI_BROWSER_TOKENОбщий токен приложения и воркера, от 32 символов—
KVALLI_BROWSER_SESSIONSСколько браузеров воркер держит открытыми одновременно. С пулом стендов — хотя бы по одному на копию2

Лимиты и хранение ​

Все значения — положительные целые. Не задано, пусто, 0 или не число — значение по умолчанию.

ПеременнаяЧто ограничиваетПо умолчанию
KVALLI_MAX_PROJECTSПроектов на установку200
KVALLI_MAX_API_KEYS_PER_PROJECTAPI-ключей на проект50
KVALLI_MAX_SHARES_PER_PROJECTДействующих ссылок на отчёты на проект200
KVALLI_REVISIONS_PER_CASEХранимых версий одного кейса200
KVALLI_MAX_IMPORT_CASESКейсов за один импорт. Больше — файл просят разбить; импорт из Allure TestOps пишет частями этого размера4000
KVALLI_MAX_WORKFLOWS_PER_PROJECTВоркфлоу на проект50
KVALLI_MAX_WORKFLOW_TEMPLATESШаблонов воркфлоу организации100
KVALLI_MAX_ATTACHMENTS_PER_CASEВложений на кейс50
KVALLI_MAX_ATTACHMENTS_PER_RESULTВложений на результат прогона50
KVALLI_MAX_ATTACHMENT_MB_PER_PROJECTМегабайт вложений на проект, кейсы и прогоны вместе20480
KVALLI_TESTOPS_MAX_LIST_PAGES, KVALLI_TESTOPS_MAX_CASESИмпорт из Allure TestOps: страниц списка и кейсов2000, 100000
KVALLI_TESTOPS_MAX_LAUNCHESЗапусков, которые переносит один импорт истории из Allure TestOps; сверх — берутся самые новые3000
MAX_ACTIVE_AGENT_JOBSЗаданий агентов одновременно на всю установку, сверх 3 на проект20
KVALLI_MAX_STREAMS_PER_VIEWERПотоков прогресса, открытых одним пользователем12
KVALLI_MAX_REPORT_RESULTS, KVALLI_MAX_LISTED_RESULTSРезультатов, которые читает отчёт или дашборд, и список прогонов. Сверх — самые старые прогоны не входят, и отчёт об этом говорит. Замер: дашборд по 200 000 результатов — около 2,5 с; при 250 запусках CI в день это примерно неделя200000, 50000
KVALLI_RUN_RETENTION_DAYSСколько дней хранить прогоны, загруженные из CI. Потом ежедневная чистка кладёт их в корзину. Ручные прогоны и прогоны майлстоуна или тест-плана не трогаются. Пусто или 0 — хранить всё0
KVALLI_CHAT_RETENTION_DAYSСколько дней хранить чат без новых сообщений. Потом он удаляется безвозвратно180

Удалённые кейсы и прогоны лежат в корзине 30 дней.

Сроки хранения, которые не настраиваются:

  • запуски воркфлоу — 90 дней после завершения;
  • обработанные события воркфлоу — 7 дней;
  • записи об истёкших ссылках на отчёты — 90 дней (сама страница отчёта удаляется сразу, как ссылка истекла);
  • завершённые задания агентов — 7 дней.

Резервные копии install.sh ​

Эти переменные пишет install.sh из --backup-keep и --backup-copy-to, и читает его команда backup, а не сервер.

ПеременнаяЧто задаётПо умолчанию
KVALLI_BACKUP_KEEPСколько копий хранить14
KVALLI_BACKUP_COPY_TOКаталог на другом диске или NAS для копий—

Хранилище ​

Обычно менять не нужно: образ и чарт задают их сами.

ПеременнаяЧто задаёт
KVALLI_DATA_DIRКаталог данных: вложения, доказательства прогонов, кэш репозиториев
KVALLI_QA_AGENTS_DIRКаталог старых файлов агентов
KVALLI_DEMO_MODEДемо-режим с примерами данных. В production выключен, на установке с настоящими данными не включайте

Документация описывает последний выпуск Kvalli.