Справочник

Конфигурация, CLI и коды ошибок

CLI, конфигурация, переменные окружения, коды ошибок и лимиты.

Справочник для быстрого поиска значений. На него ссылаются другие страницы документации. Только факты и значения по умолчанию, без обучающего текста.

На какие вопросы отвечает раздел: Как называется эта команда/переменная? Что значит этот код ошибки? Какое значение по умолчанию?

Контракты HTTP API: автогенерируемый Swagger на /api (Basic-auth).

CLI и команды

Основные команды репозитория ядра (on-prem разработка и эксплуатация):

КомандаНазначение
npm run docker:dev / docker:dev:buildЛокальный dev-стек в Docker
npm run start:api / start:engine / start:control-plane / start:executor / start:schedulerЗапуск отдельных сервисов
npm run sc:m / sc:gМиграции Drizzle (apply / generate)
npm run studioDrizzle Studio для просмотра БД
npm run lint / formatESLint и Prettier
npm run test / test:e2e / release-readinessТесты и проверка перед релизом
npx ts-node scripts/audit-retention.tsPurge журнала аудита старше AUDIT_RETENTION_DAYS

Demo на Hub: docker run. Подробнее в Быстром старте и Cookbook → Deploy.

Конфигурация и переменные окружения

Полный шаблон on-prem лежит в репозитории ядра (файл .env.example). Для demo Compose с плагинами используйте compose.env.example. Ниже сгруппированный справочник наиболее значимых переменных.

Общая инфраструктура

ПеременнаяНазначениеПо умолчанию
DATABASE_URLПодключение Drizzle к Postgrespostgresql://postgres:postgres@postgres:5432/postgres
POSTGRES_HOST / POSTGRES_PORT / POSTGRES_USER / POSTGRES_PASSWORD / POSTGRES_DBПараметры Postgrespostgres / 5432 / postgres / postgres / postgres
REDIS_HOST / REDIS_PORTRedis (BullMQ)redis / 6379
VAULT_ADDR / VAULT_TOKENАдрес и токен Vaulthttp://vault:8200 / —
VAULT_MOUNT / VAULT_TRANSIT_MOUNT / VAULT_TRANSIT_KEY_NAMEKV-mount, Transit-mount, имя ключаsecret / transit / autokey
QDRANT_URL / QDRANT_HOST / QDRANT_PORTQdrant (опц., для search)http://qdrant:6333
NEO4J_HOST / NEO4J_USER / NEO4J_PASSWORD / NEO4J_BOLT_PORTNeo4j (опц.)neo4j / neo4j / neo4j-local / 7687
OLLAMA_BASE_URL / OLLAMA_HOST / OLLAMA_PORTOllama для LLM/embeddingshttp://host.docker.internal:11434
LOG_LEVEL / LOG_FORMATЛоги Pino/Nestinfo / json
AUDIT_RETENTION_DAYSХранение записей аудита, дней365

api

ПеременнаяНазначениеПо умолчанию
API_HTTP_LISTEN / API_PATHАдрес прослушивания и префикс REST0.0.0.0:3000 / api
JWT_SECRETПодпись JWT access/refresh
ORIGIN_REGEXPAllowlist Origin (CORS)
SWAGGER_USER / SWAGGER_PASSWORDBasic-auth Swagger UI
PAYLOAD_LIMITЛимит тела запроса50mb
AUTH_SERVICE_BASE_URL, SECRETS_TCP_CONNECT, PRESET_TCP_CONNECT, SCHEDULER_TCP_CONNECT, FILE_SERVICE_BASE_URL, FLOW_AGENT_TCP_CONNECT, SEARCH_SERVICE_TCP_CONNECTАдреса микросервисов<service>:3000
FLOW_AGENT_ENABLED / AGENT_CHAT_ENABLEDКлиент flow-agent и чат-APIfalse / false
API_SENSITIVE_ROUTE_CIDRS / API_TRUST_PROXY_HOPSЗащита маршрутов за прокси— / 0

auth-service

ПеременнаяНазначениеПо умолчанию
AUTH_SERVICE_HTTP_LISTENАдрес прослушивания0.0.0.0:3000
JWT_ACCESS_TTL / JWT_REFRESH_TTLTTL токенов15m / 7d
WEBAUTHN_RP_ID / WEBAUTHN_RP_NAME / WEBAUTHN_ORIGINПараметры WebAuthn (passkeys)localhost / Conveyor / https://localhost:3000
SMTP_HOST / SMTP_PORT / SMTP_FROM / SMTP_SECUREИсходящая почтаmailcatcher / 1025 / noreply@flowforge.local / false

runtime-engine и runtime-control-plane

ПеременнаяНазначениеПо умолчанию
RUNTIME_ENGINE_RPC_TCP_PORTTCP RPC движка в контейнере3000
CONTROL_PLANE_TCP_CONNECTengine → control-plane TCPruntime-control-plane:3001
RUNTIME_CONTROL_PLANE_HTTP_PORT / RUNTIME_CONTROL_PLANE_TCP_PORTHTTP и TCP control-plane3000 / 3001
RUNTIME_ENGINE_TCP_HOSTcontrol-plane → engine RPC hostnameruntime-engine
RUNTIME_INTERNAL_BASE_URLbase-URL control-plane для SDK исполнителяhttp://runtime-control-plane:3000
PLUGIN_CONTROL_PLANE_KEYКлюч внутренних маршрутов
PLUGIN_CONTROL_PLANE_ALLOW_CIDRSAllowlist исполнителей/плагинов0.0.0.0/0
DISPATCH_MAX_ATTEMPTS / DISPATCH_RETRY_BASE_MSРетраи диспетчеризации5 / 300

plugin-manager

ПеременнаяНазначениеПо умолчанию
PLUGIN_MANAGER_TCP_PORT / PLUGIN_MANAGER_HEALTH_PORTTCP приёма SDK и HTTP health3000 / 3001
PLUGIN_MANAGER_INGRESS_TOKENТокен в TCP-payload плагиновdev-plugin-ingress
PLUGIN_MANAGER_ALLOW_CIDRSAllowlist TCP-подключений плагинов0.0.0.0/0
PLUGIN_MANAGER_FILE_SERVICE_URLfile-service для блобовhttp://file-service:3000
PLUGIN_MANAGER_STARTUP_RECONCILEReconcile при стартеtrue
PLUGIN_MANAGER_PLUGIN_HEALTH_INTERVAL_MSПериодический TCP-опрос pull-endpoint плагинов (мс); 0 или <15000 — выключено0 (on-prem); demo Compose — Плагины
PLUGIN_MANAGER_PLUGIN_HEALTH_JITTER_RATIOДжиттер перед sweep (0–0.5)0.2

secret-manager, file-service, preset-service, scheduler, search-service

ПеременнаяНазначениеПо умолчанию
SECRETS_TCP_LISTENАдрес secret-manager0.0.0.0:3000
FILE_SERVICE_HTTP_LISTEN / FILE_STORAGE_PATHАдрес и каталог хранения файлов0.0.0.0:3000 / —
PRESET_TCP_LISTEN / PRESET_CATALOG_PATHАдрес и каталог пресетов0.0.0.0:3000 / —
SCHEDULER_TCP_LISTEN / SCHEDULER_MIN_CRON_PERIOD_MINUTESАдрес и мин. период cron0.0.0.0:3000 / 60
SEARCH_SERVICE_TCP_LISTEN / SEARCH_SERVICE_HEALTH_HTTP_LISTENTCP и health search0.0.0.0:3000 / 0.0.0.0:3001
REDIS_HOST / REDIS_PORTRedis для search-serviceBullMQ outbox индексации; в prod задайте redis, не localhost
EMBEDDING_MODEL / SEARCH_SERVICE_START_MODEМодель эмбеддингов и режим стартаembeddinggemma / normal

Наблюдаемость

ПеременнаяНазначениеПо умолчанию
OTEL_EXPORTER_OTLP_ENDPOINTOTLP-endpoint Jaeger (пусто — трассировка выкл.)http://jaeger:4318
OTEL_SERVICE_NAME / OTEL_SERVICE_VERSIONИмя и версия сервиса в телеметрииflow-forge / 0.0.1
OTEL_SDK_DISABLEDПолностью отключить OpenTelemetry

Редактор (workflow-manager)

ПеременнаяНазначениеПо умолчанию
NUXT_PUBLIC_API_BASEБазовый URL backend (единая точка входа)http://localhost:4001
NUXT_PUBLIC_EDITOR_CONFIG_AGENT_ENABLEDAI-агент в шапкевыкл.
NUXT_PUBLIC_EDITOR_CONFIG_USER_MANAGEMENT_ENABLEDЛогин/регистрация в UIвкл.
NUXT_PUBLIC_EDITOR_CONFIG_USER_MESSAGE / _TONEСообщение в статус-баре
NUXT_PUBLIC_LEGAL_TERMS_URL / NUXT_PUBLIC_LEGAL_PRIVACY_URLВнешние юридические ссылки

Docker demo (контейнер и Compose)

ПеременнаяНазначениеПо умолчанию
PUBLIC_SITE_URLOrigin UI и WebAuthn в demo-контейнереhttp://localhost:8080
DEMO_SEED_PASSWORDПароль встроенных демо-учётокTest123456!
DEMO_PLUGIN_HEALTH_INTERVAL_MSTCP-опрос pull-endpoint плагинов1200000

Секреты (JWT_SECRET, PLUGIN_*, POSTGRES_PASSWORD) и полная таблица demo: Развёртывание → Docker demo. Переменные Compose с плагинами (DEMO_IMAGE_REF, DEMO_*_EXECUTOR_PORT, …): Плагины → Demo Compose.

Фрагмент шаблона on-prem. Полный построчный список в .env.example репозитория ядра.

# -----------------------------------------------------------------------------
# Общие — Postgres Redis Vault URLs, общая инфра и observability
# -----------------------------------------------------------------------------
# Строка подключения Drizzle ORM к Postgres (в docker-all: хост postgres, не localhost)
DATABASE_URL=postgresql://postgres:postgres@postgres:5432/postgres
# Хост экземпляра Postgres
POSTGRES_HOST=postgres
# Порт Postgres для строки подключения
POSTGRES_PORT=5432
# Имя пользователя базы Postgres
POSTGRES_USER=postgres
# Пароль пользователя Postgres
POSTGRES_PASSWORD=postgres
# Имя базы данных приложения
POSTGRES_DB=postgres
# Хост Redis для очередей BullMQ
REDIS_HOST=redis
# Порт процесса Redis
REDIS_PORT=6379
# Базовый URL Vault для клиентов SDK
VAULT_ADDR=http://vault:8200
# Токен аутентификации в Vault dev
VAULT_TOKEN=
# Путь KV secrets engine в Vault
VAULT_MOUNT=secret
# Путь Transit mount для шифрования
VAULT_TRANSIT_MOUNT=transit
# Имя ключа Transit для секретов
VAULT_TRANSIT_KEY_NAME=autokey
# OTLP хост для трейсов Jaeger (сервис jaeger из docker-compose.observability.yml)
OTEL_OTLP_HOST=jaeger
# OTLP порт HTTP ingest
OTEL_OTLP_PORT=4318
# Полный endpoint OTLP экспортёра
OTEL_EXPORTER_OTLP_ENDPOINT=http://jaeger:4318
# Имя сервиса в телеметрии
OTEL_SERVICE_NAME=flow-forge
# Версия сервиса в телеметрии
OTEL_SERVICE_VERSION=0.0.1
# Полностью отключить OpenTelemetry SDK
# OTEL_SDK_DISABLED=true
# -----------------------------------------------------------------------------
# Сервис — plugin-manager, приём SDK и запись каталога в БД
# -----------------------------------------------------------------------------
# Порт TCP приёма SDK plugin-manager в контейнере (с хоста — PLUGIN_MANAGER_TCP_PUBLISH_PORT→3000)
PLUGIN_MANAGER_TCP_PORT=3000
# Порт HTTP только health проверок plugin-manager
PLUGIN_MANAGER_HEALTH_PORT=3001
# Тот же токен, что у плагинов в TCP payload
PLUGIN_MANAGER_INGRESS_TOKEN=dev-plugin-ingress
# Таймаут TCP batch pull plugin-manager → plugin (мс); наследие: PLUGIN_MANAGER_CONTROL_PLANE_HTTP_TIMEOUT_MS
PLUGIN_MANAGER_EXECUTOR_PULL_TIMEOUT_MS=30000
# Базовый URL HTTP file-service для блобов
PLUGIN_MANAGER_FILE_SERVICE_URL=http://file-service:3000
# Allowlist CIDR подключений TCP SDK
PLUGIN_MANAGER_ALLOW_CIDRS=0.0.0.0/0
# Размер батча публикации исполнителей плагина
PLUGIN_MANAGER_PUBLICATION_EXECUTOR_BATCH_SIZE=50
# Максимум статических assets одной публикации
PLUGIN_MANAGER_PUBLICATION_MAX_STATIC=200
# Максимум исполнителей одного запроса манифеста
PLUGIN_MANAGER_PUBLICATION_MAX_EXECUTORS=500
# Список pluginId разрешённых публикации пусто все
PLUGIN_MANAGER_PUBLICATION_ALLOWED_PLUGIN_IDS=
# Включить reconcile при старте plugin-manager
PLUGIN_MANAGER_STARTUP_RECONCILE=true
# Таймаут TCP probe startup reconcile миллисекунды
PLUGIN_MANAGER_STARTUP_PULL_TIMEOUT_MS=3000
# Интервал периодического health sweep миллисекунды ноль выкл
PLUGIN_MANAGER_PLUGIN_HEALTH_INTERVAL_MS=0
# Джиттер доля перед периодическим health sweep
PLUGIN_MANAGER_PLUGIN_HEALTH_JITTER_RATIO=0.2

Порты по умолчанию

РежимНазначениеПорт
Внутри сетиЛюбой сервис (HTTP/TCP), второй слушатель:3000, :3001
DemoСайт / плагины / health / шаги / отладка движка8080 / 4016 / 4017 / 4021 / 4020
Devapi / engine RPC / search TCP+health4001 / 4013 / 4014+4015
Dev (инфра)Postgres / Qdrant / Neo4j / Vault / Adminer / Mailcatcher5432 / 6333 / 7474+7687 / 8200 / 8080 / 1080

Порты внешних плагинов: Плагины → Порты плагинов.

Коды ошибок

REST API использует стандартные HTTP-коды NestJS:

КодТипичная причинаДействие
400Невалидный запрос, несовместимый контракт, неизвестный MCP-toolПроверить тело запроса и схему входа
401Нет или просрочен JWT/ключОбновить токен или ключ afk_*
403Нет прав на ресурс (scope, capability, CIDR)Проверить capabilities и API_SENSITIVE_ROUTE_CIDRS
404Процесс, Запуск или файл не найденПроверить ID и владельца
413 / FILE_TOO_LARGEПревышен лимит загрузки файлаУменьшить размер или поднять PAYLOAD_LIMIT
429Rate limitПовторить с backoff
500Внутренняя ошибка сервисаЛоги сервиса, трассировка OTEL

Контракты HTTP API генерируются автоматически (Swagger на /api с Basic-auth).

Лимиты и значения по умолчанию

ПараметрПеременнаяПо умолчанию
Лимит тела HTTP-запросаPAYLOAD_LIMIT50mb
Срок access-токенаJWT_ACCESS_TTL15m
Срок refresh-токенаJWT_REFRESH_TTL7d
Срок хранения журнала аудитаAUDIT_RETENTION_DAYS365
Ретраи диспетчеризацииDISPATCH_MAX_ATTEMPTS / DISPATCH_RETRY_BASE_MS5 / 300
Мин. период cronSCHEDULER_MIN_CRON_PERIOD_MINUTES60
Период TCP-опроса плагиновPLUGIN_MANAGER_PLUGIN_HEALTH_INTERVAL_MS0 (выкл.)
Размер пакета публикации исполнителейPLUGIN_MANAGER_PUBLICATION_EXECUTOR_BATCH_SIZE50

Матрица совместимости версий

Соответствие версий: ядро ↔ плагины ↔ API/SDK.

Версия ядра@kosolapus/plugin-ts-sdkСовместимость
2026.06.110.0.9да

Матрица поставляется с каждым релизом платформы и обновляется при каждом релизе ядра. Совместимость плагинов проверяйте по semver SDK и notes релиза.

Дальше