{ "schema_version": "1", "artifact_policy": "committed-generated-artifact", "authority": { "kind": "backend-code-defaults", "source_root": "api/configs", "model": "configs.app_config.DifyConfig" }, "resolution": { "precedence": [ "init_settings", "process_env", "remote_settings", "dotenv", "file_secrets", "toml", "code_default" ] }, "variables": [ { "name": "ACCESS_TOKEN_EXPIRE_MINUTES", "accepted_names": [ "ACCESS_TOKEN_EXPIRE_MINUTES" ], "group": "feature.auth", "type": "integer", "description": "Expiration time for access tokens in minutes", "code_default": 60, "required": false, "applies_when": null }, { "name": "ACCOUNT_DELETION_TOKEN_EXPIRY_MINUTES", "accepted_names": [ "ACCOUNT_DELETION_TOKEN_EXPIRY_MINUTES" ], "group": "feature.account", "type": "integer", "description": "Duration in minutes for which a account deletion token remains valid", "code_default": 5, "required": false, "applies_when": null }, { "name": "ADMIN_API_KEY", "accepted_names": [ "ADMIN_API_KEY" ], "group": "feature.security", "type": "string | null", "description": "admin api key for authentication", "code_default": null, "required": false, "applies_when": null }, { "name": "ADMIN_API_KEY_ENABLE", "accepted_names": [ "ADMIN_API_KEY_ENABLE" ], "group": "feature.security", "type": "boolean", "description": "Whether to enable admin api key for authentication", "code_default": false, "required": false, "applies_when": null }, { "name": "ALIBABACLOUD_MYSQL_CHARSET", "accepted_names": [ "ALIBABACLOUD_MYSQL_CHARSET" ], "group": "middleware.vdb.alibaba-cloud-my-s-q-l", "type": "string", "description": "Character set for AlibabaCloud MySQL connection (default is 'utf8mb4')", "code_default": "utf8mb4", "required": false, "applies_when": "VECTOR_STORE=alibabacloud-mysql" }, { "name": "ALIBABACLOUD_MYSQL_DATABASE", "accepted_names": [ "ALIBABACLOUD_MYSQL_DATABASE" ], "group": "middleware.vdb.alibaba-cloud-my-s-q-l", "type": "string", "description": "Name of the AlibabaCloud MySQL database to connect to (default is 'dify')", "code_default": "dify", "required": false, "applies_when": "VECTOR_STORE=alibabacloud-mysql" }, { "name": "ALIBABACLOUD_MYSQL_DISTANCE_FUNCTION", "accepted_names": [ "ALIBABACLOUD_MYSQL_DISTANCE_FUNCTION" ], "group": "middleware.vdb.alibaba-cloud-my-s-q-l", "type": "string", "description": "Distance function used for vector similarity search in AlibabaCloud MySQL (e.g., 'cosine', 'euclidean')", "code_default": "cosine", "required": false, "applies_when": "VECTOR_STORE=alibabacloud-mysql" }, { "name": "ALIBABACLOUD_MYSQL_HNSW_M", "accepted_names": [ "ALIBABACLOUD_MYSQL_HNSW_M" ], "group": "middleware.vdb.alibaba-cloud-my-s-q-l", "type": "integer", "description": "Maximum number of connections per layer for HNSW vector index (default is 6, range: 3-200)", "code_default": 6, "required": false, "applies_when": "VECTOR_STORE=alibabacloud-mysql" }, { "name": "ALIBABACLOUD_MYSQL_HOST", "accepted_names": [ "ALIBABACLOUD_MYSQL_HOST" ], "group": "middleware.vdb.alibaba-cloud-my-s-q-l", "type": "string", "description": "Hostname or IP address of the AlibabaCloud MySQL server (e.g., 'localhost' or 'mysql.aliyun.com')", "code_default": "localhost", "required": false, "applies_when": "VECTOR_STORE=alibabacloud-mysql" }, { "name": "ALIBABACLOUD_MYSQL_MAX_CONNECTION", "accepted_names": [ "ALIBABACLOUD_MYSQL_MAX_CONNECTION" ], "group": "middleware.vdb.alibaba-cloud-my-s-q-l", "type": "integer", "description": "Maximum number of connections in the connection pool", "code_default": 5, "required": false, "applies_when": "VECTOR_STORE=alibabacloud-mysql" }, { "name": "ALIBABACLOUD_MYSQL_PASSWORD", "accepted_names": [ "ALIBABACLOUD_MYSQL_PASSWORD" ], "group": "middleware.vdb.alibaba-cloud-my-s-q-l", "type": "string", "description": "Password for authenticating with AlibabaCloud MySQL (default is an empty string)", "code_default": "", "required": false, "applies_when": "VECTOR_STORE=alibabacloud-mysql" }, { "name": "ALIBABACLOUD_MYSQL_PORT", "accepted_names": [ "ALIBABACLOUD_MYSQL_PORT" ], "group": "middleware.vdb.alibaba-cloud-my-s-q-l", "type": "integer", "description": "Port number on which the AlibabaCloud MySQL server is listening (default is 3306)", "code_default": 3306, "required": false, "applies_when": "VECTOR_STORE=alibabacloud-mysql" }, { "name": "ALIBABACLOUD_MYSQL_USER", "accepted_names": [ "ALIBABACLOUD_MYSQL_USER" ], "group": "middleware.vdb.alibaba-cloud-my-s-q-l", "type": "string", "description": "Username for authenticating with AlibabaCloud MySQL (default is 'root')", "code_default": "root", "required": false, "applies_when": "VECTOR_STORE=alibabacloud-mysql" }, { "name": "ALIYUN_CLOUDBOX_ID", "accepted_names": [ "ALIYUN_CLOUDBOX_ID" ], "group": "middleware.storage.aliyun-o-s-s-storage", "type": "string | null", "description": "Cloudbox id for aliyun cloudbox service", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=aliyun-oss" }, { "name": "ALIYUN_OSS_ACCESS_KEY", "accepted_names": [ "ALIYUN_OSS_ACCESS_KEY" ], "group": "middleware.storage.aliyun-o-s-s-storage", "type": "string | null", "description": "Access key ID for authenticating with Aliyun OSS", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=aliyun-oss" }, { "name": "ALIYUN_OSS_AUTH_VERSION", "accepted_names": [ "ALIYUN_OSS_AUTH_VERSION" ], "group": "middleware.storage.aliyun-o-s-s-storage", "type": "string | null", "description": "Version of the authentication protocol to use with Aliyun OSS (e.g., 'v4')", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=aliyun-oss" }, { "name": "ALIYUN_OSS_BUCKET_NAME", "accepted_names": [ "ALIYUN_OSS_BUCKET_NAME" ], "group": "middleware.storage.aliyun-o-s-s-storage", "type": "string | null", "description": "Name of the Aliyun OSS bucket to store and retrieve objects", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=aliyun-oss" }, { "name": "ALIYUN_OSS_ENDPOINT", "accepted_names": [ "ALIYUN_OSS_ENDPOINT" ], "group": "middleware.storage.aliyun-o-s-s-storage", "type": "string | null", "description": "URL of the Aliyun OSS endpoint for your chosen region", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=aliyun-oss" }, { "name": "ALIYUN_OSS_PATH", "accepted_names": [ "ALIYUN_OSS_PATH" ], "group": "middleware.storage.aliyun-o-s-s-storage", "type": "string | null", "description": "Base path within the bucket to store objects (e.g., 'my-app-data/')", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=aliyun-oss" }, { "name": "ALIYUN_OSS_REGION", "accepted_names": [ "ALIYUN_OSS_REGION" ], "group": "middleware.storage.aliyun-o-s-s-storage", "type": "string | null", "description": "Aliyun OSS region where your bucket is located (e.g., 'oss-cn-hangzhou')", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=aliyun-oss" }, { "name": "ALIYUN_OSS_SECRET_KEY", "accepted_names": [ "ALIYUN_OSS_SECRET_KEY" ], "group": "middleware.storage.aliyun-o-s-s-storage", "type": "string | null", "description": "Secret access key for authenticating with Aliyun OSS", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=aliyun-oss" }, { "name": "ALLOW_CREATE_WORKSPACE", "accepted_names": [ "ALLOW_CREATE_WORKSPACE" ], "group": "feature.login", "type": "boolean", "description": "whether to enable create workspace", "code_default": false, "required": false, "applies_when": null }, { "name": "ALLOW_REGISTER", "accepted_names": [ "ALLOW_REGISTER" ], "group": "feature.login", "type": "boolean", "description": "whether to enable register", "code_default": false, "required": false, "applies_when": null }, { "name": "ANALYTICDB_ACCOUNT", "accepted_names": [ "ANALYTICDB_ACCOUNT" ], "group": "middleware.vdb.analyticdb", "type": "string | null", "description": "The account name used to log in to the AnalyticDB instance (usually the initial account created with the instance).", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=analyticdb" }, { "name": "ANALYTICDB_HOST", "accepted_names": [ "ANALYTICDB_HOST" ], "group": "middleware.vdb.analyticdb", "type": "string | null", "description": "The host of the AnalyticDB instance you want to connect to.", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=analyticdb" }, { "name": "ANALYTICDB_INSTANCE_ID", "accepted_names": [ "ANALYTICDB_INSTANCE_ID" ], "group": "middleware.vdb.analyticdb", "type": "string | null", "description": "The unique identifier of the AnalyticDB instance you want to connect to.", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=analyticdb" }, { "name": "ANALYTICDB_KEY_ID", "accepted_names": [ "ANALYTICDB_KEY_ID" ], "group": "middleware.vdb.analyticdb", "type": "string | null", "description": "The Access Key ID provided by Alibaba Cloud for API authentication.", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=analyticdb" }, { "name": "ANALYTICDB_KEY_SECRET", "accepted_names": [ "ANALYTICDB_KEY_SECRET" ], "group": "middleware.vdb.analyticdb", "type": "string | null", "description": "The Secret Access Key corresponding to the Access Key ID for secure API access.", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=analyticdb" }, { "name": "ANALYTICDB_MAX_CONNECTION", "accepted_names": [ "ANALYTICDB_MAX_CONNECTION" ], "group": "middleware.vdb.analyticdb", "type": "integer", "description": "Max connection of the AnalyticDB database.", "code_default": 5, "required": false, "applies_when": "VECTOR_STORE=analyticdb" }, { "name": "ANALYTICDB_MIN_CONNECTION", "accepted_names": [ "ANALYTICDB_MIN_CONNECTION" ], "group": "middleware.vdb.analyticdb", "type": "integer", "description": "Min connection of the AnalyticDB database.", "code_default": 1, "required": false, "applies_when": "VECTOR_STORE=analyticdb" }, { "name": "ANALYTICDB_NAMESPACE", "accepted_names": [ "ANALYTICDB_NAMESPACE" ], "group": "middleware.vdb.analyticdb", "type": "string | null", "description": "The namespace within AnalyticDB for schema isolation (if using namespace feature).", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=analyticdb" }, { "name": "ANALYTICDB_NAMESPACE_PASSWORD", "accepted_names": [ "ANALYTICDB_NAMESPACE_PASSWORD" ], "group": "middleware.vdb.analyticdb", "type": "string | null", "description": "The password for accessing the specified namespace within the AnalyticDB instance (if namespace feature is enabled).", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=analyticdb" }, { "name": "ANALYTICDB_PASSWORD", "accepted_names": [ "ANALYTICDB_PASSWORD" ], "group": "middleware.vdb.analyticdb", "type": "string | null", "description": "The password associated with the AnalyticDB account for database authentication.", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=analyticdb" }, { "name": "ANALYTICDB_PORT", "accepted_names": [ "ANALYTICDB_PORT" ], "group": "middleware.vdb.analyticdb", "type": "integer", "description": "The port of the AnalyticDB instance you want to connect to.", "code_default": 5432, "required": false, "applies_when": "VECTOR_STORE=analyticdb" }, { "name": "ANALYTICDB_REGION_ID", "accepted_names": [ "ANALYTICDB_REGION_ID" ], "group": "middleware.vdb.analyticdb", "type": "string | null", "description": "The region where the AnalyticDB instance is deployed (e.g., 'cn-hangzhou', 'ap-southeast-1').", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=analyticdb" }, { "name": "ANNOTATION_IMPORT_FILE_SIZE_LIMIT", "accepted_names": [ "ANNOTATION_IMPORT_FILE_SIZE_LIMIT" ], "group": "feature.file-upload", "type": "integer", "description": "Maximum allowed CSV file size for annotation import in megabytes", "code_default": 2, "required": false, "applies_when": null }, { "name": "ANNOTATION_IMPORT_MAX_CONCURRENT", "accepted_names": [ "ANNOTATION_IMPORT_MAX_CONCURRENT" ], "group": "feature.file-upload", "type": "integer", "description": "Maximum number of concurrent annotation import tasks per tenant", "code_default": 2, "required": false, "applies_when": null }, { "name": "ANNOTATION_IMPORT_MAX_RECORDS", "accepted_names": [ "ANNOTATION_IMPORT_MAX_RECORDS" ], "group": "feature.file-upload", "type": "integer", "description": "Maximum number of annotation records allowed in a single import", "code_default": 10000, "required": false, "applies_when": null }, { "name": "ANNOTATION_IMPORT_MIN_RECORDS", "accepted_names": [ "ANNOTATION_IMPORT_MIN_RECORDS" ], "group": "feature.file-upload", "type": "integer", "description": "Minimum number of annotation records required in a single import", "code_default": 1, "required": false, "applies_when": null }, { "name": "ANNOTATION_IMPORT_RATE_LIMIT_PER_HOUR", "accepted_names": [ "ANNOTATION_IMPORT_RATE_LIMIT_PER_HOUR" ], "group": "feature.file-upload", "type": "integer", "description": "Maximum number of annotation import requests per hour per tenant", "code_default": 20, "required": false, "applies_when": null }, { "name": "ANNOTATION_IMPORT_RATE_LIMIT_PER_MINUTE", "accepted_names": [ "ANNOTATION_IMPORT_RATE_LIMIT_PER_MINUTE" ], "group": "feature.file-upload", "type": "integer", "description": "Maximum number of annotation import requests per minute per tenant", "code_default": 5, "required": false, "applies_when": null }, { "name": "API_COMPRESSION_ENABLED", "accepted_names": [ "API_COMPRESSION_ENABLED" ], "group": "feature.http", "type": "boolean", "description": "Enable or disable gzip compression for HTTP responses", "code_default": false, "required": false, "applies_when": null }, { "name": "API_TOKEN_LAST_USED_UPDATE_INTERVAL", "accepted_names": [ "API_TOKEN_LAST_USED_UPDATE_INTERVAL" ], "group": "feature.celery-schedule-tasks", "type": "integer", "description": "Interval in minutes for batch updating API token last_used_at (default 30)", "code_default": 30, "required": false, "applies_when": null }, { "name": "API_WORKFLOW_NODE_EXECUTION_REPOSITORY", "accepted_names": [ "API_WORKFLOW_NODE_EXECUTION_REPOSITORY" ], "group": "feature.repository", "type": "string", "description": "Service-layer repository implementation for WorkflowNodeExecutionModel operations. Specify as a module path", "code_default": "repositories.sqlalchemy_api_workflow_node_execution_repository.DifyAPISQLAlchemyWorkflowNodeExecutionRepository", "required": false, "applies_when": null }, { "name": "API_WORKFLOW_RUN_REPOSITORY", "accepted_names": [ "API_WORKFLOW_RUN_REPOSITORY" ], "group": "feature.repository", "type": "string", "description": "Service-layer repository implementation for WorkflowRun operations. Specify as a module path", "code_default": "repositories.sqlalchemy_api_workflow_run_repository.DifyAPISQLAlchemyWorkflowRunRepository", "required": false, "applies_when": null }, { "name": "APOLLO_APP_ID", "accepted_names": [ "APOLLO_APP_ID" ], "group": "remote_settings_sources.apollo.apollo-settings-source-info", "type": "string | null", "description": "apollo app_id", "code_default": null, "required": false, "applies_when": null }, { "name": "APOLLO_CLUSTER", "accepted_names": [ "APOLLO_CLUSTER" ], "group": "remote_settings_sources.apollo.apollo-settings-source-info", "type": "string | null", "description": "apollo cluster", "code_default": null, "required": false, "applies_when": null }, { "name": "APOLLO_CONFIG_URL", "accepted_names": [ "APOLLO_CONFIG_URL" ], "group": "remote_settings_sources.apollo.apollo-settings-source-info", "type": "string | null", "description": "apollo config url", "code_default": null, "required": false, "applies_when": null }, { "name": "APOLLO_NAMESPACE", "accepted_names": [ "APOLLO_NAMESPACE" ], "group": "remote_settings_sources.apollo.apollo-settings-source-info", "type": "string | null", "description": "apollo namespace", "code_default": null, "required": false, "applies_when": null }, { "name": "APPLICATION_NAME", "accepted_names": [ "APPLICATION_NAME" ], "group": "deploy.deployment", "type": "string", "description": "Name of the application, used for identification and logging purposes", "code_default": "langgenius/dify", "required": false, "applies_when": null }, { "name": "APP_DEFAULT_ACTIVE_REQUESTS", "accepted_names": [ "APP_DEFAULT_ACTIVE_REQUESTS" ], "group": "feature.app-execution", "type": "integer", "description": "Default number of concurrent active requests per app (0 for unlimited)", "code_default": 0, "required": false, "applies_when": null }, { "name": "APP_MAX_ACTIVE_REQUESTS", "accepted_names": [ "APP_MAX_ACTIVE_REQUESTS" ], "group": "feature.app-execution", "type": "integer", "description": "Maximum number of concurrent active requests per app (0 for unlimited)", "code_default": 0, "required": false, "applies_when": null }, { "name": "APP_MAX_EXECUTION_TIME", "accepted_names": [ "APP_MAX_EXECUTION_TIME" ], "group": "feature.app-execution", "type": "integer", "description": "Maximum allowed execution time for the application in seconds", "code_default": 1200, "required": false, "applies_when": null }, { "name": "APP_WEB_URL", "accepted_names": [ "APP_WEB_URL" ], "group": "feature.endpoint", "type": "string", "description": "Base URL for the web application, used for frontend references", "code_default": "", "required": false, "applies_when": null }, { "name": "ARCHIVE_STORAGE_ACCESS_KEY", "accepted_names": [ "ARCHIVE_STORAGE_ACCESS_KEY" ], "group": "extra.archive-storage", "type": "string | null", "description": "Access key ID for authenticating with storage", "code_default": null, "required": false, "applies_when": null }, { "name": "ARCHIVE_STORAGE_ARCHIVE_BUCKET", "accepted_names": [ "ARCHIVE_STORAGE_ARCHIVE_BUCKET" ], "group": "extra.archive-storage", "type": "string | null", "description": "Name of the bucket to store archived workflow logs", "code_default": null, "required": false, "applies_when": null }, { "name": "ARCHIVE_STORAGE_ENABLED", "accepted_names": [ "ARCHIVE_STORAGE_ENABLED" ], "group": "extra.archive-storage", "type": "boolean", "description": "Enable workflow run logs archiving to S3-compatible storage", "code_default": false, "required": false, "applies_when": null }, { "name": "ARCHIVE_STORAGE_ENDPOINT", "accepted_names": [ "ARCHIVE_STORAGE_ENDPOINT" ], "group": "extra.archive-storage", "type": "string | null", "description": "URL of the S3-compatible storage endpoint (e.g., 'https://storage.example.com')", "code_default": null, "required": false, "applies_when": null }, { "name": "ARCHIVE_STORAGE_EXPORT_BUCKET", "accepted_names": [ "ARCHIVE_STORAGE_EXPORT_BUCKET" ], "group": "extra.archive-storage", "type": "string | null", "description": "Name of the bucket to store exported workflow runs", "code_default": null, "required": false, "applies_when": null }, { "name": "ARCHIVE_STORAGE_REGION", "accepted_names": [ "ARCHIVE_STORAGE_REGION" ], "group": "extra.archive-storage", "type": "string", "description": "Region for storage (use 'auto' if the provider supports it)", "code_default": "auto", "required": false, "applies_when": null }, { "name": "ARCHIVE_STORAGE_SECRET_KEY", "accepted_names": [ "ARCHIVE_STORAGE_SECRET_KEY" ], "group": "extra.archive-storage", "type": "string | null", "description": "Secret access key for authenticating with storage", "code_default": null, "required": false, "applies_when": null }, { "name": "ASYNC_WORKFLOW_SCHEDULER_GRANULARITY", "accepted_names": [ "ASYNC_WORKFLOW_SCHEDULER_GRANULARITY" ], "group": "feature.async-workflow", "type": "integer", "description": "Granularity for async workflow scheduler, sometime, few users could block the queue due to some time-consuming tasks, to avoid this, workflow can be suspended if needed, to achievethis, a time-based checker is required, every granularity seconds, the checker will check the workflow queue and suspend the workflow", "code_default": 120, "required": false, "applies_when": null }, { "name": "ATTACHMENT_IMAGE_DOWNLOAD_TIMEOUT", "accepted_names": [ "ATTACHMENT_IMAGE_DOWNLOAD_TIMEOUT" ], "group": "feature.file-upload", "type": "integer", "description": "Timeout for downloading image attachments in seconds", "code_default": 60, "required": false, "applies_when": null }, { "name": "ATTACHMENT_IMAGE_FILE_SIZE_LIMIT", "accepted_names": [ "ATTACHMENT_IMAGE_FILE_SIZE_LIMIT" ], "group": "feature.file-upload", "type": "integer", "description": "Maximum allowed image file size for attachments in megabytes", "code_default": 2, "required": false, "applies_when": null }, { "name": "AWS_ACCESS_KEY_ID", "accepted_names": [ "AWS_ACCESS_KEY_ID" ], "group": "middleware.internal-test", "type": "string | null", "description": "Internal test AWS access key ID", "code_default": null, "required": false, "applies_when": null }, { "name": "AWS_SECRET_ACCESS_KEY", "accepted_names": [ "AWS_SECRET_ACCESS_KEY" ], "group": "middleware.internal-test", "type": "string | null", "description": "Internal test AWS secret access key", "code_default": null, "required": false, "applies_when": null }, { "name": "AZURE_BLOB_ACCOUNT_KEY", "accepted_names": [ "AZURE_BLOB_ACCOUNT_KEY" ], "group": "middleware.storage.azure-blob-storage", "type": "string | null", "description": "Access key for authenticating with the Azure Storage account", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=azure-blob" }, { "name": "AZURE_BLOB_ACCOUNT_NAME", "accepted_names": [ "AZURE_BLOB_ACCOUNT_NAME" ], "group": "middleware.storage.azure-blob-storage", "type": "string | null", "description": "Name of the Azure Storage account (e.g., 'mystorageaccount')", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=azure-blob" }, { "name": "AZURE_BLOB_ACCOUNT_URL", "accepted_names": [ "AZURE_BLOB_ACCOUNT_URL" ], "group": "middleware.storage.azure-blob-storage", "type": "string | null", "description": "URL of the Azure Blob storage endpoint (e.g., 'https://mystorageaccount.blob.core.windows.net')", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=azure-blob" }, { "name": "AZURE_BLOB_CONTAINER_NAME", "accepted_names": [ "AZURE_BLOB_CONTAINER_NAME" ], "group": "middleware.storage.azure-blob-storage", "type": "string | null", "description": "Name of the Azure Blob container to store and retrieve objects", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=azure-blob" }, { "name": "BAIDU_OBS_ACCESS_KEY", "accepted_names": [ "BAIDU_OBS_ACCESS_KEY" ], "group": "middleware.storage.baidu-o-b-s-storage", "type": "string | null", "description": "Access Key ID for authenticating with Baidu OBS", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=baidu-obs" }, { "name": "BAIDU_OBS_BUCKET_NAME", "accepted_names": [ "BAIDU_OBS_BUCKET_NAME" ], "group": "middleware.storage.baidu-o-b-s-storage", "type": "string | null", "description": "Name of the Baidu OBS bucket to store and retrieve objects (e.g., 'my-obs-bucket')", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=baidu-obs" }, { "name": "BAIDU_OBS_ENDPOINT", "accepted_names": [ "BAIDU_OBS_ENDPOINT" ], "group": "middleware.storage.baidu-o-b-s-storage", "type": "string | null", "description": "URL of the Baidu OSS endpoint for your chosen region (e.g., 'https://.bj.bcebos.com')", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=baidu-obs" }, { "name": "BAIDU_OBS_SECRET_KEY", "accepted_names": [ "BAIDU_OBS_SECRET_KEY" ], "group": "middleware.storage.baidu-o-b-s-storage", "type": "string | null", "description": "Secret Access Key for authenticating with Baidu OBS", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=baidu-obs" }, { "name": "BAIDU_VECTOR_DB_ACCOUNT", "accepted_names": [ "BAIDU_VECTOR_DB_ACCOUNT" ], "group": "middleware.vdb.baidu-vector-d-b", "type": "string | null", "description": "Account for authenticating with the Baidu Vector Database", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=baidu_vector" }, { "name": "BAIDU_VECTOR_DB_API_KEY", "accepted_names": [ "BAIDU_VECTOR_DB_API_KEY" ], "group": "middleware.vdb.baidu-vector-d-b", "type": "string | null", "description": "API key for authenticating with the Baidu Vector Database service", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=baidu_vector" }, { "name": "BAIDU_VECTOR_DB_AUTO_BUILD_ROW_COUNT_INCREMENT", "accepted_names": [ "BAIDU_VECTOR_DB_AUTO_BUILD_ROW_COUNT_INCREMENT" ], "group": "middleware.vdb.baidu-vector-d-b", "type": "integer", "description": "Auto build row count increment threshold (default is 500)", "code_default": 500, "required": false, "applies_when": "VECTOR_STORE=baidu_vector" }, { "name": "BAIDU_VECTOR_DB_AUTO_BUILD_ROW_COUNT_INCREMENT_RATIO", "accepted_names": [ "BAIDU_VECTOR_DB_AUTO_BUILD_ROW_COUNT_INCREMENT_RATIO" ], "group": "middleware.vdb.baidu-vector-d-b", "type": "float", "description": "Auto build row count increment ratio threshold (default is 0.05)", "code_default": 0.05, "required": false, "applies_when": "VECTOR_STORE=baidu_vector" }, { "name": "BAIDU_VECTOR_DB_CONNECTION_TIMEOUT_MS", "accepted_names": [ "BAIDU_VECTOR_DB_CONNECTION_TIMEOUT_MS" ], "group": "middleware.vdb.baidu-vector-d-b", "type": "integer", "description": "Timeout in milliseconds for Baidu Vector Database operations (default is 30000 milliseconds)", "code_default": 30000, "required": false, "applies_when": "VECTOR_STORE=baidu_vector" }, { "name": "BAIDU_VECTOR_DB_DATABASE", "accepted_names": [ "BAIDU_VECTOR_DB_DATABASE" ], "group": "middleware.vdb.baidu-vector-d-b", "type": "string | null", "description": "Name of the specific Baidu Vector Database to connect to", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=baidu_vector" }, { "name": "BAIDU_VECTOR_DB_ENDPOINT", "accepted_names": [ "BAIDU_VECTOR_DB_ENDPOINT" ], "group": "middleware.vdb.baidu-vector-d-b", "type": "string | null", "description": "URL of the Baidu Vector Database service (e.g., 'http://vdb.bj.baidubce.com')", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=baidu_vector" }, { "name": "BAIDU_VECTOR_DB_INVERTED_INDEX_ANALYZER", "accepted_names": [ "BAIDU_VECTOR_DB_INVERTED_INDEX_ANALYZER" ], "group": "middleware.vdb.baidu-vector-d-b", "type": "string", "description": "Analyzer type for inverted index in Baidu Vector Database (default is DEFAULT_ANALYZER)", "code_default": "DEFAULT_ANALYZER", "required": false, "applies_when": "VECTOR_STORE=baidu_vector" }, { "name": "BAIDU_VECTOR_DB_INVERTED_INDEX_PARSER_MODE", "accepted_names": [ "BAIDU_VECTOR_DB_INVERTED_INDEX_PARSER_MODE" ], "group": "middleware.vdb.baidu-vector-d-b", "type": "string", "description": "Parser mode for inverted index in Baidu Vector Database (default is COARSE_MODE)", "code_default": "COARSE_MODE", "required": false, "applies_when": "VECTOR_STORE=baidu_vector" }, { "name": "BAIDU_VECTOR_DB_REBUILD_INDEX_TIMEOUT_IN_SECONDS", "accepted_names": [ "BAIDU_VECTOR_DB_REBUILD_INDEX_TIMEOUT_IN_SECONDS" ], "group": "middleware.vdb.baidu-vector-d-b", "type": "integer", "description": "Timeout in seconds for rebuilding the index in Baidu Vector Database (default is 3600 seconds)", "code_default": 300, "required": false, "applies_when": "VECTOR_STORE=baidu_vector" }, { "name": "BAIDU_VECTOR_DB_REPLICAS", "accepted_names": [ "BAIDU_VECTOR_DB_REPLICAS" ], "group": "middleware.vdb.baidu-vector-d-b", "type": "integer", "description": "Number of replicas for the Baidu Vector Database (default is 3)", "code_default": 3, "required": false, "applies_when": "VECTOR_STORE=baidu_vector" }, { "name": "BAIDU_VECTOR_DB_SHARD", "accepted_names": [ "BAIDU_VECTOR_DB_SHARD" ], "group": "middleware.vdb.baidu-vector-d-b", "type": "integer", "description": "Number of shards for the Baidu Vector Database (default is 1)", "code_default": 1, "required": false, "applies_when": "VECTOR_STORE=baidu_vector" }, { "name": "BATCH_UPLOAD_LIMIT", "accepted_names": [ "BATCH_UPLOAD_LIMIT" ], "group": "feature.file-upload", "type": "integer", "description": "Maximum number of files allowed in a batch upload operation", "code_default": 20, "required": false, "applies_when": null }, { "name": "BILLING_ENABLED", "accepted_names": [ "BILLING_ENABLED" ], "group": "feature.billing", "type": "boolean", "description": "Enable or disable billing functionality", "code_default": false, "required": false, "applies_when": null }, { "name": "CAN_REPLACE_LOGO", "accepted_names": [ "CAN_REPLACE_LOGO" ], "group": "enterprise.enterprise-feature", "type": "boolean", "description": "Allow customization of the enterprise logo.", "code_default": false, "required": false, "applies_when": null }, { "name": "CELERY_BACKEND", "accepted_names": [ "CELERY_BACKEND" ], "group": "middleware.celery", "type": "string", "description": "Backend for Celery task results. Options: 'database', 'redis', 'rabbitmq'.", "code_default": "redis", "required": false, "applies_when": null }, { "name": "CELERY_BEAT_SCHEDULER_TIME", "accepted_names": [ "CELERY_BEAT_SCHEDULER_TIME" ], "group": "feature.celery-beat", "type": "integer", "description": "Interval in days for Celery Beat scheduler execution, default to 1 day", "code_default": 1, "required": false, "applies_when": null }, { "name": "CELERY_BROKER_URL", "accepted_names": [ "CELERY_BROKER_URL" ], "group": "middleware.celery", "type": "string | null", "description": "URL of the message broker for Celery tasks.", "code_default": null, "required": false, "applies_when": null }, { "name": "CELERY_SENTINEL_MASTER_NAME", "accepted_names": [ "CELERY_SENTINEL_MASTER_NAME" ], "group": "middleware.celery", "type": "string | null", "description": "Name of the Redis Sentinel master.", "code_default": null, "required": false, "applies_when": null }, { "name": "CELERY_SENTINEL_PASSWORD", "accepted_names": [ "CELERY_SENTINEL_PASSWORD" ], "group": "middleware.celery", "type": "string | null", "description": "Password of the Redis Sentinel master.", "code_default": null, "required": false, "applies_when": null }, { "name": "CELERY_SENTINEL_SOCKET_TIMEOUT", "accepted_names": [ "CELERY_SENTINEL_SOCKET_TIMEOUT" ], "group": "middleware.celery", "type": "typing.Annotated[float, Gt(gt=0)] | null", "description": "Timeout for Redis Sentinel socket operations in seconds.", "code_default": 0.1, "required": false, "applies_when": null }, { "name": "CELERY_TASK_ANNOTATIONS", "accepted_names": [ "CELERY_TASK_ANNOTATIONS" ], "group": "middleware.celery", "type": "dict[str, typing.Any] | null", "description": "Annotations for Celery tasks as a JSON mapping of task name -> options (for example, rate limits or other task-specific settings).", "code_default": null, "required": false, "applies_when": null }, { "name": "CELERY_USE_SENTINEL", "accepted_names": [ "CELERY_USE_SENTINEL" ], "group": "middleware.celery", "type": "boolean | null", "description": "Whether to use Redis Sentinel for high availability.", "code_default": false, "required": false, "applies_when": null }, { "name": "CHANGE_EMAIL_LOCKOUT_DURATION", "accepted_names": [ "CHANGE_EMAIL_LOCKOUT_DURATION" ], "group": "feature.auth", "type": "integer", "description": "Time (in seconds) a user must wait before retrying change email after exceeding the rate limit.", "code_default": 86400, "required": false, "applies_when": null }, { "name": "CHANGE_EMAIL_TOKEN_EXPIRY_MINUTES", "accepted_names": [ "CHANGE_EMAIL_TOKEN_EXPIRY_MINUTES" ], "group": "feature.security", "type": "integer", "description": "Duration in minutes for which a change email token remains valid", "code_default": 5, "required": false, "applies_when": null }, { "name": "CHECK_UPDATE_URL", "accepted_names": [ "CHECK_UPDATE_URL" ], "group": "feature.update", "type": "string", "description": "URL to check for application updates", "code_default": "https://updates.dify.ai", "required": false, "applies_when": null }, { "name": "CHILD_CHUNKS_PREVIEW_NUMBER", "accepted_names": [ "CHILD_CHUNKS_PREVIEW_NUMBER" ], "group": "feature.indexing", "type": "integer", "description": "Maximum number of child chunks to preview", "code_default": 50, "required": false, "applies_when": null }, { "name": "CHROMA_AUTH_CREDENTIALS", "accepted_names": [ "CHROMA_AUTH_CREDENTIALS" ], "group": "middleware.vdb.chroma", "type": "string | null", "description": "Authentication credentials for Chroma (format depends on the auth provider)", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=chroma" }, { "name": "CHROMA_AUTH_PROVIDER", "accepted_names": [ "CHROMA_AUTH_PROVIDER" ], "group": "middleware.vdb.chroma", "type": "string | null", "description": "Authentication provider for Chroma (e.g., 'basic', 'token', or a custom provider)", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=chroma" }, { "name": "CHROMA_DATABASE", "accepted_names": [ "CHROMA_DATABASE" ], "group": "middleware.vdb.chroma", "type": "string | null", "description": "Name of the Chroma database to connect to", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=chroma" }, { "name": "CHROMA_HOST", "accepted_names": [ "CHROMA_HOST" ], "group": "middleware.vdb.chroma", "type": "string | null", "description": "Hostname or IP address of the Chroma server (e.g., 'localhost' or '192.168.1.100')", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=chroma" }, { "name": "CHROMA_PORT", "accepted_names": [ "CHROMA_PORT" ], "group": "middleware.vdb.chroma", "type": "integer", "description": "Port number on which the Chroma server is listening (default is 8000)", "code_default": 8000, "required": false, "applies_when": "VECTOR_STORE=chroma" }, { "name": "CHROMA_TENANT", "accepted_names": [ "CHROMA_TENANT" ], "group": "middleware.vdb.chroma", "type": "string | null", "description": "Tenant identifier for multi-tenancy support in Chroma", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=chroma" }, { "name": "CLICKZETTA_ANALYZER_MODE", "accepted_names": [ "CLICKZETTA_ANALYZER_MODE" ], "group": "middleware.vdb.clickzetta", "type": "string | null", "description": "Analyzer mode for tokenization: max_word (fine-grained) or smart (intelligent)", "code_default": "smart", "required": false, "applies_when": "VECTOR_STORE=clickzetta" }, { "name": "CLICKZETTA_ANALYZER_TYPE", "accepted_names": [ "CLICKZETTA_ANALYZER_TYPE" ], "group": "middleware.vdb.clickzetta", "type": "string | null", "description": "Analyzer type for full-text search: keyword, english, chinese, unicode", "code_default": "chinese", "required": false, "applies_when": "VECTOR_STORE=clickzetta" }, { "name": "CLICKZETTA_BATCH_SIZE", "accepted_names": [ "CLICKZETTA_BATCH_SIZE" ], "group": "middleware.vdb.clickzetta", "type": "integer | null", "description": "Batch size for bulk insert operations", "code_default": 100, "required": false, "applies_when": "VECTOR_STORE=clickzetta" }, { "name": "CLICKZETTA_ENABLE_INVERTED_INDEX", "accepted_names": [ "CLICKZETTA_ENABLE_INVERTED_INDEX" ], "group": "middleware.vdb.clickzetta", "type": "boolean | null", "description": "Enable inverted index for full-text search capabilities", "code_default": true, "required": false, "applies_when": "VECTOR_STORE=clickzetta" }, { "name": "CLICKZETTA_INSTANCE", "accepted_names": [ "CLICKZETTA_INSTANCE" ], "group": "middleware.vdb.clickzetta", "type": "string | null", "description": "Clickzetta Lakehouse instance ID", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=clickzetta" }, { "name": "CLICKZETTA_PASSWORD", "accepted_names": [ "CLICKZETTA_PASSWORD" ], "group": "middleware.vdb.clickzetta", "type": "string | null", "description": "Password for authenticating with Clickzetta Lakehouse", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=clickzetta" }, { "name": "CLICKZETTA_SCHEMA", "accepted_names": [ "CLICKZETTA_SCHEMA" ], "group": "middleware.vdb.clickzetta", "type": "string | null", "description": "Database schema name in Clickzetta", "code_default": "public", "required": false, "applies_when": "VECTOR_STORE=clickzetta" }, { "name": "CLICKZETTA_SERVICE", "accepted_names": [ "CLICKZETTA_SERVICE" ], "group": "middleware.vdb.clickzetta", "type": "string | null", "description": "Clickzetta API service endpoint (e.g., 'api.clickzetta.com')", "code_default": "api.clickzetta.com", "required": false, "applies_when": "VECTOR_STORE=clickzetta" }, { "name": "CLICKZETTA_USERNAME", "accepted_names": [ "CLICKZETTA_USERNAME" ], "group": "middleware.vdb.clickzetta", "type": "string | null", "description": "Username for authenticating with Clickzetta Lakehouse", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=clickzetta" }, { "name": "CLICKZETTA_VCLUSTER", "accepted_names": [ "CLICKZETTA_VCLUSTER" ], "group": "middleware.vdb.clickzetta", "type": "string | null", "description": "Clickzetta virtual cluster name", "code_default": "default_ap", "required": false, "applies_when": "VECTOR_STORE=clickzetta" }, { "name": "CLICKZETTA_VECTOR_DISTANCE_FUNCTION", "accepted_names": [ "CLICKZETTA_VECTOR_DISTANCE_FUNCTION" ], "group": "middleware.vdb.clickzetta", "type": "string | null", "description": "Distance function for vector similarity: l2_distance or cosine_distance", "code_default": "cosine_distance", "required": false, "applies_when": "VECTOR_STORE=clickzetta" }, { "name": "CLICKZETTA_VOLUME_DIFY_PREFIX", "accepted_names": [ "CLICKZETTA_VOLUME_DIFY_PREFIX" ], "group": "middleware.storage.click-zetta-volume-storage", "type": "string", "description": "Directory prefix for User Volume to organize Dify files", "code_default": "dify_km", "required": false, "applies_when": "STORAGE_TYPE=clickzetta-volume" }, { "name": "CLICKZETTA_VOLUME_INSTANCE", "accepted_names": [ "CLICKZETTA_VOLUME_INSTANCE" ], "group": "middleware.storage.click-zetta-volume-storage", "type": "string | null", "description": "ClickZetta instance identifier", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=clickzetta-volume" }, { "name": "CLICKZETTA_VOLUME_NAME", "accepted_names": [ "CLICKZETTA_VOLUME_NAME" ], "group": "middleware.storage.click-zetta-volume-storage", "type": "string | null", "description": "ClickZetta volume name for external volumes", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=clickzetta-volume" }, { "name": "CLICKZETTA_VOLUME_PASSWORD", "accepted_names": [ "CLICKZETTA_VOLUME_PASSWORD" ], "group": "middleware.storage.click-zetta-volume-storage", "type": "string | null", "description": "Password for ClickZetta Volume authentication", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=clickzetta-volume" }, { "name": "CLICKZETTA_VOLUME_SCHEMA", "accepted_names": [ "CLICKZETTA_VOLUME_SCHEMA" ], "group": "middleware.storage.click-zetta-volume-storage", "type": "string", "description": "ClickZetta schema name", "code_default": "dify", "required": false, "applies_when": "STORAGE_TYPE=clickzetta-volume" }, { "name": "CLICKZETTA_VOLUME_SERVICE", "accepted_names": [ "CLICKZETTA_VOLUME_SERVICE" ], "group": "middleware.storage.click-zetta-volume-storage", "type": "string", "description": "ClickZetta service endpoint", "code_default": "api.clickzetta.com", "required": false, "applies_when": "STORAGE_TYPE=clickzetta-volume" }, { "name": "CLICKZETTA_VOLUME_TABLE_PREFIX", "accepted_names": [ "CLICKZETTA_VOLUME_TABLE_PREFIX" ], "group": "middleware.storage.click-zetta-volume-storage", "type": "string", "description": "Prefix for ClickZetta volume table names", "code_default": "dataset_", "required": false, "applies_when": "STORAGE_TYPE=clickzetta-volume" }, { "name": "CLICKZETTA_VOLUME_TYPE", "accepted_names": [ "CLICKZETTA_VOLUME_TYPE" ], "group": "middleware.storage.click-zetta-volume-storage", "type": "string", "description": "ClickZetta volume type (table|user|external)", "code_default": "user", "required": false, "applies_when": "STORAGE_TYPE=clickzetta-volume" }, { "name": "CLICKZETTA_VOLUME_USERNAME", "accepted_names": [ "CLICKZETTA_VOLUME_USERNAME" ], "group": "middleware.storage.click-zetta-volume-storage", "type": "string | null", "description": "Username for ClickZetta Volume authentication", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=clickzetta-volume" }, { "name": "CLICKZETTA_VOLUME_VCLUSTER", "accepted_names": [ "CLICKZETTA_VOLUME_VCLUSTER" ], "group": "middleware.storage.click-zetta-volume-storage", "type": "string", "description": "ClickZetta virtual cluster name", "code_default": "default_ap", "required": false, "applies_when": "STORAGE_TYPE=clickzetta-volume" }, { "name": "CLICKZETTA_VOLUME_WORKSPACE", "accepted_names": [ "CLICKZETTA_VOLUME_WORKSPACE" ], "group": "middleware.storage.click-zetta-volume-storage", "type": "string", "description": "ClickZetta workspace name", "code_default": "quick_start", "required": false, "applies_when": "STORAGE_TYPE=clickzetta-volume" }, { "name": "CLICKZETTA_WORKSPACE", "accepted_names": [ "CLICKZETTA_WORKSPACE" ], "group": "middleware.vdb.clickzetta", "type": "string | null", "description": "Clickzetta workspace name", "code_default": "default", "required": false, "applies_when": "VECTOR_STORE=clickzetta" }, { "name": "CODE_EXECUTION_API_KEY", "accepted_names": [ "CODE_EXECUTION_API_KEY" ], "group": "feature.code-execution-sandbox", "type": "string", "description": "API key for accessing the code execution service", "code_default": "dify-sandbox", "required": false, "applies_when": null }, { "name": "CODE_EXECUTION_CONNECT_TIMEOUT", "accepted_names": [ "CODE_EXECUTION_CONNECT_TIMEOUT" ], "group": "feature.code-execution-sandbox", "type": "float | null", "description": "Connection timeout in seconds for code execution requests", "code_default": 10.0, "required": false, "applies_when": null }, { "name": "CODE_EXECUTION_ENDPOINT", "accepted_names": [ "CODE_EXECUTION_ENDPOINT" ], "group": "feature.code-execution-sandbox", "type": "HttpUrl", "description": "URL endpoint for the code execution service", "code_default": "http://sandbox:8194/", "required": false, "applies_when": null }, { "name": "CODE_EXECUTION_POOL_KEEPALIVE_EXPIRY", "accepted_names": [ "CODE_EXECUTION_POOL_KEEPALIVE_EXPIRY" ], "group": "feature.code-execution-sandbox", "type": "typing.Annotated[float, Gt(gt=0)] | null", "description": "Keep-alive expiry in seconds for idle connections (set to None to disable)", "code_default": 5.0, "required": false, "applies_when": null }, { "name": "CODE_EXECUTION_POOL_MAX_CONNECTIONS", "accepted_names": [ "CODE_EXECUTION_POOL_MAX_CONNECTIONS" ], "group": "feature.code-execution-sandbox", "type": "integer", "description": "Maximum number of concurrent connections for the code execution HTTP client", "code_default": 100, "required": false, "applies_when": null }, { "name": "CODE_EXECUTION_POOL_MAX_KEEPALIVE_CONNECTIONS", "accepted_names": [ "CODE_EXECUTION_POOL_MAX_KEEPALIVE_CONNECTIONS" ], "group": "feature.code-execution-sandbox", "type": "integer", "description": "Maximum number of persistent keep-alive connections for the code execution HTTP client", "code_default": 20, "required": false, "applies_when": null }, { "name": "CODE_EXECUTION_READ_TIMEOUT", "accepted_names": [ "CODE_EXECUTION_READ_TIMEOUT" ], "group": "feature.code-execution-sandbox", "type": "float | null", "description": "Read timeout in seconds for code execution requests", "code_default": 60.0, "required": false, "applies_when": null }, { "name": "CODE_EXECUTION_SSL_VERIFY", "accepted_names": [ "CODE_EXECUTION_SSL_VERIFY" ], "group": "feature.code-execution-sandbox", "type": "boolean", "description": "Enable or disable SSL verification for code execution requests", "code_default": true, "required": false, "applies_when": null }, { "name": "CODE_EXECUTION_WRITE_TIMEOUT", "accepted_names": [ "CODE_EXECUTION_WRITE_TIMEOUT" ], "group": "feature.code-execution-sandbox", "type": "float | null", "description": "Write timeout in seconds for code execution request", "code_default": 10.0, "required": false, "applies_when": null }, { "name": "CODE_MAX_DEPTH", "accepted_names": [ "CODE_MAX_DEPTH" ], "group": "feature.code-execution-sandbox", "type": "integer", "description": "Maximum allowed depth for nested structures in code execution", "code_default": 5, "required": false, "applies_when": null }, { "name": "CODE_MAX_NUMBER", "accepted_names": [ "CODE_MAX_NUMBER" ], "group": "feature.code-execution-sandbox", "type": "integer", "description": "Maximum allowed numeric value in code execution", "code_default": 9223372036854775807, "required": false, "applies_when": null }, { "name": "CODE_MAX_NUMBER_ARRAY_LENGTH", "accepted_names": [ "CODE_MAX_NUMBER_ARRAY_LENGTH" ], "group": "feature.code-execution-sandbox", "type": "integer", "description": "Maximum allowed length for numeric arrays in code execution", "code_default": 1000, "required": false, "applies_when": null }, { "name": "CODE_MAX_OBJECT_ARRAY_LENGTH", "accepted_names": [ "CODE_MAX_OBJECT_ARRAY_LENGTH" ], "group": "feature.code-execution-sandbox", "type": "integer", "description": "Maximum allowed length for object arrays in code execution", "code_default": 30, "required": false, "applies_when": null }, { "name": "CODE_MAX_PRECISION", "accepted_names": [ "CODE_MAX_PRECISION" ], "group": "feature.code-execution-sandbox", "type": "integer", "description": "Maximum number of decimal places for floating-point numbers in code execution", "code_default": 20, "required": false, "applies_when": null }, { "name": "CODE_MAX_STRING_ARRAY_LENGTH", "accepted_names": [ "CODE_MAX_STRING_ARRAY_LENGTH" ], "group": "feature.code-execution-sandbox", "type": "integer", "description": "Maximum allowed length for string arrays in code execution", "code_default": 30, "required": false, "applies_when": null }, { "name": "CODE_MAX_STRING_LENGTH", "accepted_names": [ "CODE_MAX_STRING_LENGTH" ], "group": "feature.code-execution-sandbox", "type": "integer", "description": "Maximum allowed length for strings in code execution", "code_default": 400000, "required": false, "applies_when": null }, { "name": "CODE_MIN_NUMBER", "accepted_names": [ "CODE_MIN_NUMBER" ], "group": "feature.code-execution-sandbox", "type": "integer", "description": "Minimum allowed numeric value in code execution", "code_default": -9223372036854775807, "required": false, "applies_when": null }, { "name": "COMMIT_SHA", "accepted_names": [ "COMMIT_SHA" ], "group": "packaging.packaging-info", "type": "string", "description": "SHA-1 checksum of the git commit used to build the app", "code_default": "", "required": false, "applies_when": null }, { "name": "CONSOLE_API_URL", "accepted_names": [ "CONSOLE_API_URL" ], "group": "feature.endpoint", "type": "string", "description": "Base URL for the console API,used for login authentication callback or notion integration callbacks", "code_default": "", "required": false, "applies_when": null }, { "name": "CONSOLE_WEB_URL", "accepted_names": [ "CONSOLE_WEB_URL" ], "group": "feature.endpoint", "type": "string", "description": "Base URL for the console web interface,used for frontend references and CORS configuration", "code_default": "", "required": false, "applies_when": null }, { "name": "COOKIE_DOMAIN", "accepted_names": [ "COOKIE_DOMAIN" ], "group": "feature.http", "type": "string", "description": "Explicit cookie domain for console/service cookies when sharing across subdomains", "code_default": "", "required": false, "applies_when": null }, { "name": "CORE_WORKFLOW_EXECUTION_REPOSITORY", "accepted_names": [ "CORE_WORKFLOW_EXECUTION_REPOSITORY" ], "group": "feature.repository", "type": "string", "description": "Repository implementation for WorkflowExecution. Options: 'core.repositories.sqlalchemy_workflow_execution_repository.SQLAlchemyWorkflowExecutionRepository' (default), 'core.repositories.celery_workflow_execution_repository.CeleryWorkflowExecutionRepository'", "code_default": "core.repositories.sqlalchemy_workflow_execution_repository.SQLAlchemyWorkflowExecutionRepository", "required": false, "applies_when": null }, { "name": "CORE_WORKFLOW_NODE_EXECUTION_REPOSITORY", "accepted_names": [ "CORE_WORKFLOW_NODE_EXECUTION_REPOSITORY" ], "group": "feature.repository", "type": "string", "description": "Repository implementation for WorkflowNodeExecution. Options: 'core.repositories.sqlalchemy_workflow_node_execution_repository.SQLAlchemyWorkflowNodeExecutionRepository' (default), 'core.repositories.celery_workflow_node_execution_repository.CeleryWorkflowNodeExecutionRepository'", "code_default": "core.repositories.sqlalchemy_workflow_node_execution_repository.SQLAlchemyWorkflowNodeExecutionRepository", "required": false, "applies_when": null }, { "name": "COUCHBASE_BUCKET_NAME", "accepted_names": [ "COUCHBASE_BUCKET_NAME" ], "group": "middleware.vdb.couchbase", "type": "string | null", "description": "COUCHBASE bucket name", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=couchbase" }, { "name": "COUCHBASE_CONNECTION_STRING", "accepted_names": [ "COUCHBASE_CONNECTION_STRING" ], "group": "middleware.vdb.couchbase", "type": "string | null", "description": "COUCHBASE connection string", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=couchbase" }, { "name": "COUCHBASE_PASSWORD", "accepted_names": [ "COUCHBASE_PASSWORD" ], "group": "middleware.vdb.couchbase", "type": "string | null", "description": "COUCHBASE password", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=couchbase" }, { "name": "COUCHBASE_SCOPE_NAME", "accepted_names": [ "COUCHBASE_SCOPE_NAME" ], "group": "middleware.vdb.couchbase", "type": "string | null", "description": "COUCHBASE scope name", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=couchbase" }, { "name": "COUCHBASE_USER", "accepted_names": [ "COUCHBASE_USER" ], "group": "middleware.vdb.couchbase", "type": "string | null", "description": "COUCHBASE user", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=couchbase" }, { "name": "CREATE_TIDB_SERVICE_JOB_ENABLED", "accepted_names": [ "CREATE_TIDB_SERVICE_JOB_ENABLED" ], "group": "feature.data-set", "type": "boolean", "description": "Enable or disable create tidb service job", "code_default": false, "required": false, "applies_when": null }, { "name": "DATASET_MAX_SEGMENTS_PER_REQUEST", "accepted_names": [ "DATASET_MAX_SEGMENTS_PER_REQUEST" ], "group": "feature.data-set", "type": "integer", "description": "Maximum number of segments for dataset segments API (0 for unlimited)", "code_default": 0, "required": false, "applies_when": null }, { "name": "DATASET_OPERATOR_ENABLED", "accepted_names": [ "DATASET_OPERATOR_ENABLED" ], "group": "feature.data-set", "type": "boolean", "description": "Enable or disable dataset operator functionality", "code_default": false, "required": false, "applies_when": null }, { "name": "DB_CHARSET", "accepted_names": [ "DB_CHARSET" ], "group": "middleware.database", "type": "string", "description": "Character set for database connection.", "code_default": "", "required": false, "applies_when": null }, { "name": "DB_DATABASE", "accepted_names": [ "DB_DATABASE" ], "group": "middleware.database", "type": "string", "description": "Name of the database to connect to.", "code_default": "dify", "required": false, "applies_when": null }, { "name": "DB_EXTRAS", "accepted_names": [ "DB_EXTRAS" ], "group": "middleware.database", "type": "string", "description": "Additional database connection parameters. Example: 'keepalives_idle=60&keepalives=1'", "code_default": "", "required": false, "applies_when": null }, { "name": "DB_HOST", "accepted_names": [ "DB_HOST" ], "group": "middleware.database", "type": "string", "description": "Hostname or IP address of the database server.", "code_default": "localhost", "required": false, "applies_when": null }, { "name": "DB_PASSWORD", "accepted_names": [ "DB_PASSWORD" ], "group": "middleware.database", "type": "string", "description": "Password for database authentication.", "code_default": "", "required": false, "applies_when": null }, { "name": "DB_PORT", "accepted_names": [ "DB_PORT" ], "group": "middleware.database", "type": "integer", "description": "Port number for database connection.", "code_default": 5432, "required": false, "applies_when": null }, { "name": "DB_SESSION_TIMEZONE_OVERRIDE", "accepted_names": [ "DB_SESSION_TIMEZONE_OVERRIDE" ], "group": "middleware.database", "type": "string", "description": "PostgreSQL session timezone override injected via startup options. Default is 'UTC' for out-of-the-box consistency. Set to empty string to disable app-level timezone injection, for example when using RDS Proxy together with a database-side default timezone.", "code_default": "UTC", "required": false, "applies_when": null }, { "name": "DB_TYPE", "accepted_names": [ "DB_TYPE" ], "group": "middleware.database", "type": "literal['postgresql', 'mysql', 'oceanbase', 'seekdb']", "description": "Database type to use. OceanBase is MySQL-compatible.", "code_default": "postgresql", "required": false, "applies_when": null }, { "name": "DB_USERNAME", "accepted_names": [ "DB_USERNAME" ], "group": "middleware.database", "type": "string", "description": "Username for database authentication.", "code_default": "postgres", "required": false, "applies_when": null }, { "name": "DEBUG", "accepted_names": [ "DEBUG" ], "group": "deploy.deployment", "type": "boolean", "description": "Enable debug mode for additional logging and development features", "code_default": false, "required": false, "applies_when": null }, { "name": "DEPLOY_ENV", "accepted_names": [ "DEPLOY_ENV" ], "group": "deploy.deployment", "type": "string", "description": "Deployment environment (e.g., 'PRODUCTION', 'DEVELOPMENT'), default to PRODUCTION", "code_default": "PRODUCTION", "required": false, "applies_when": null }, { "name": "DSL_EXPORT_ENCRYPT_DATASET_ID", "accepted_names": [ "DSL_EXPORT_ENCRYPT_DATASET_ID" ], "group": "feature.data-set", "type": "boolean", "description": "Enable or disable dataset ID encryption when exporting DSL files", "code_default": true, "required": false, "applies_when": null }, { "name": "EDITION", "accepted_names": [ "EDITION" ], "group": "deploy.deployment", "type": "string", "description": "Deployment edition of the application (e.g., 'SELF_HOSTED', 'CLOUD')", "code_default": "SELF_HOSTED", "required": false, "applies_when": null }, { "name": "EDUCATION_ENABLED", "accepted_names": [ "EDUCATION_ENABLED" ], "group": "feature.account", "type": "boolean", "description": "whether to enable education identity", "code_default": false, "required": false, "applies_when": null }, { "name": "ELASTICSEARCH_API_KEY", "accepted_names": [ "ELASTICSEARCH_API_KEY" ], "group": "middleware.vdb.elasticsearch", "type": "string | null", "description": "API key for authenticating with Elastic Cloud", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=elasticsearch; ELASTICSEARCH_USE_CLOUD=true" }, { "name": "ELASTICSEARCH_CA_CERTS", "accepted_names": [ "ELASTICSEARCH_CA_CERTS" ], "group": "middleware.vdb.elasticsearch", "type": "string | null", "description": "Path to CA certificate file for SSL verification", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=elasticsearch; ELASTICSEARCH_USE_CLOUD=true" }, { "name": "ELASTICSEARCH_CLOUD_URL", "accepted_names": [ "ELASTICSEARCH_CLOUD_URL" ], "group": "middleware.vdb.elasticsearch", "type": "string | null", "description": "Full URL for Elastic Cloud deployment (e.g., 'https://example.es.region.aws.found.io:443')", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=elasticsearch; ELASTICSEARCH_USE_CLOUD=true" }, { "name": "ELASTICSEARCH_HOST", "accepted_names": [ "ELASTICSEARCH_HOST" ], "group": "middleware.vdb.elasticsearch", "type": "string | null", "description": "Hostname or IP address of the Elasticsearch server (e.g., 'localhost' or '192.168.1.100')", "code_default": "127.0.0.1", "required": false, "applies_when": "VECTOR_STORE=elasticsearch" }, { "name": "ELASTICSEARCH_MAX_RETRIES", "accepted_names": [ "ELASTICSEARCH_MAX_RETRIES" ], "group": "middleware.vdb.elasticsearch", "type": "integer", "description": "Maximum number of retry attempts (default is 10000)", "code_default": 10000, "required": false, "applies_when": "VECTOR_STORE=elasticsearch" }, { "name": "ELASTICSEARCH_PASSWORD", "accepted_names": [ "ELASTICSEARCH_PASSWORD" ], "group": "middleware.vdb.elasticsearch", "type": "string | null", "description": "Password for authenticating with Elasticsearch (default is 'elastic')", "code_default": "elastic", "required": false, "applies_when": "VECTOR_STORE=elasticsearch" }, { "name": "ELASTICSEARCH_PORT", "accepted_names": [ "ELASTICSEARCH_PORT" ], "group": "middleware.vdb.elasticsearch", "type": "integer", "description": "Port number on which the Elasticsearch server is listening (default is 9200)", "code_default": 9200, "required": false, "applies_when": "VECTOR_STORE=elasticsearch" }, { "name": "ELASTICSEARCH_REQUEST_TIMEOUT", "accepted_names": [ "ELASTICSEARCH_REQUEST_TIMEOUT" ], "group": "middleware.vdb.elasticsearch", "type": "integer", "description": "Request timeout in milliseconds (default is 100000)", "code_default": 100000, "required": false, "applies_when": "VECTOR_STORE=elasticsearch" }, { "name": "ELASTICSEARCH_RETRY_ON_TIMEOUT", "accepted_names": [ "ELASTICSEARCH_RETRY_ON_TIMEOUT" ], "group": "middleware.vdb.elasticsearch", "type": "boolean", "description": "Whether to retry requests on timeout (default is True)", "code_default": true, "required": false, "applies_when": "VECTOR_STORE=elasticsearch" }, { "name": "ELASTICSEARCH_USERNAME", "accepted_names": [ "ELASTICSEARCH_USERNAME" ], "group": "middleware.vdb.elasticsearch", "type": "string | null", "description": "Username for authenticating with Elasticsearch (default is 'elastic')", "code_default": "elastic", "required": false, "applies_when": "VECTOR_STORE=elasticsearch" }, { "name": "ELASTICSEARCH_USE_CLOUD", "accepted_names": [ "ELASTICSEARCH_USE_CLOUD" ], "group": "middleware.vdb.elasticsearch", "type": "boolean | null", "description": "Set to True to use Elastic Cloud instead of self-hosted Elasticsearch", "code_default": false, "required": false, "applies_when": "VECTOR_STORE=elasticsearch; ELASTICSEARCH_USE_CLOUD=true" }, { "name": "ELASTICSEARCH_VERIFY_CERTS", "accepted_names": [ "ELASTICSEARCH_VERIFY_CERTS" ], "group": "middleware.vdb.elasticsearch", "type": "boolean", "description": "Whether to verify SSL certificates (default is False)", "code_default": false, "required": false, "applies_when": "VECTOR_STORE=elasticsearch" }, { "name": "EMAIL_CODE_LOGIN_TOKEN_EXPIRY_MINUTES", "accepted_names": [ "EMAIL_CODE_LOGIN_TOKEN_EXPIRY_MINUTES" ], "group": "feature.login", "type": "integer", "description": "expiry time in minutes for email code login token", "code_default": 5, "required": false, "applies_when": null }, { "name": "EMAIL_REGISTER_LOCKOUT_DURATION", "accepted_names": [ "EMAIL_REGISTER_LOCKOUT_DURATION" ], "group": "feature.auth", "type": "integer", "description": "Time (in seconds) a user must wait before retrying email register after exceeding the rate limit.", "code_default": 86400, "required": false, "applies_when": null }, { "name": "EMAIL_REGISTER_TOKEN_EXPIRY_MINUTES", "accepted_names": [ "EMAIL_REGISTER_TOKEN_EXPIRY_MINUTES" ], "group": "feature.security", "type": "integer", "description": "Duration in minutes for which a email register token remains valid", "code_default": 5, "required": false, "applies_when": null }, { "name": "EMAIL_SEND_IP_LIMIT_PER_MINUTE", "accepted_names": [ "EMAIL_SEND_IP_LIMIT_PER_MINUTE" ], "group": "feature.mail", "type": "integer", "description": "Maximum number of emails allowed to be sent from the same IP address in a minute", "code_default": 50, "required": false, "applies_when": null }, { "name": "ENABLE_API_TOKEN_LAST_USED_UPDATE_TASK", "accepted_names": [ "ENABLE_API_TOKEN_LAST_USED_UPDATE_TASK" ], "group": "feature.celery-schedule-tasks", "type": "boolean", "description": "Enable periodic batch update of API token last_used_at timestamps", "code_default": true, "required": false, "applies_when": null }, { "name": "ENABLE_CHECK_UPGRADABLE_PLUGIN_TASK", "accepted_names": [ "ENABLE_CHECK_UPGRADABLE_PLUGIN_TASK" ], "group": "feature.celery-schedule-tasks", "type": "boolean", "description": "Enable check upgradable plugin task", "code_default": true, "required": false, "applies_when": null }, { "name": "ENABLE_CLEAN_EMBEDDING_CACHE_TASK", "accepted_names": [ "ENABLE_CLEAN_EMBEDDING_CACHE_TASK" ], "group": "feature.celery-schedule-tasks", "type": "boolean", "description": "Enable clean embedding cache task", "code_default": false, "required": false, "applies_when": null }, { "name": "ENABLE_CLEAN_MESSAGES", "accepted_names": [ "ENABLE_CLEAN_MESSAGES" ], "group": "feature.celery-schedule-tasks", "type": "boolean", "description": "Enable clean messages task", "code_default": false, "required": false, "applies_when": null }, { "name": "ENABLE_CLEAN_UNUSED_DATASETS_TASK", "accepted_names": [ "ENABLE_CLEAN_UNUSED_DATASETS_TASK" ], "group": "feature.celery-schedule-tasks", "type": "boolean", "description": "Enable clean unused datasets task", "code_default": false, "required": false, "applies_when": null }, { "name": "ENABLE_COLLABORATION_MODE", "accepted_names": [ "ENABLE_COLLABORATION_MODE" ], "group": "feature.collaboration", "type": "boolean", "description": "Whether to enable collaboration mode features across the workspace", "code_default": false, "required": false, "applies_when": null }, { "name": "ENABLE_CREATE_TIDB_SERVERLESS_TASK", "accepted_names": [ "ENABLE_CREATE_TIDB_SERVERLESS_TASK" ], "group": "feature.celery-schedule-tasks", "type": "boolean", "description": "Enable create tidb service job task", "code_default": false, "required": false, "applies_when": null }, { "name": "ENABLE_DATASETS_QUEUE_MONITOR", "accepted_names": [ "ENABLE_DATASETS_QUEUE_MONITOR" ], "group": "feature.celery-schedule-tasks", "type": "boolean", "description": "Enable queue monitor task", "code_default": false, "required": false, "applies_when": null }, { "name": "ENABLE_EMAIL_CODE_LOGIN", "accepted_names": [ "ENABLE_EMAIL_CODE_LOGIN" ], "group": "feature.login", "type": "boolean", "description": "whether to enable email code login", "code_default": false, "required": false, "applies_when": null }, { "name": "ENABLE_EMAIL_PASSWORD_LOGIN", "accepted_names": [ "ENABLE_EMAIL_PASSWORD_LOGIN" ], "group": "feature.login", "type": "boolean", "description": "whether to enable email password login", "code_default": true, "required": false, "applies_when": null }, { "name": "ENABLE_EXPLORE_BANNER", "accepted_names": [ "ENABLE_EXPLORE_BANNER" ], "group": "feature.mail", "type": "boolean", "description": "Enable explore banner", "code_default": false, "required": false, "applies_when": null }, { "name": "ENABLE_HUMAN_INPUT_TIMEOUT_TASK", "accepted_names": [ "ENABLE_HUMAN_INPUT_TIMEOUT_TASK" ], "group": "feature.celery-schedule-tasks", "type": "boolean", "description": "Enable human input timeout check task", "code_default": true, "required": false, "applies_when": null }, { "name": "ENABLE_MAIL_CLEAN_DOCUMENT_NOTIFY_TASK", "accepted_names": [ "ENABLE_MAIL_CLEAN_DOCUMENT_NOTIFY_TASK" ], "group": "feature.celery-schedule-tasks", "type": "boolean", "description": "Enable mail clean document notify task", "code_default": false, "required": false, "applies_when": null }, { "name": "ENABLE_OTEL", "accepted_names": [ "ENABLE_OTEL" ], "group": "observability.otel.o-tel", "type": "boolean", "description": "Whether to enable OpenTelemetry", "code_default": false, "required": false, "applies_when": null }, { "name": "ENABLE_REQUEST_LOGGING", "accepted_names": [ "ENABLE_REQUEST_LOGGING" ], "group": "deploy.deployment", "type": "boolean", "description": "Enable request and response body logging", "code_default": false, "required": false, "applies_when": null }, { "name": "ENABLE_SOCIAL_OAUTH_LOGIN", "accepted_names": [ "ENABLE_SOCIAL_OAUTH_LOGIN" ], "group": "feature.login", "type": "boolean", "description": "whether to enable github/google oauth login", "code_default": false, "required": false, "applies_when": null }, { "name": "ENABLE_TRIAL_APP", "accepted_names": [ "ENABLE_TRIAL_APP" ], "group": "feature.mail", "type": "boolean", "description": "Enable trial app", "code_default": false, "required": false, "applies_when": null }, { "name": "ENABLE_TRIGGER_PROVIDER_REFRESH_TASK", "accepted_names": [ "ENABLE_TRIGGER_PROVIDER_REFRESH_TASK" ], "group": "feature.celery-schedule-tasks", "type": "boolean", "description": "Enable trigger provider refresh poller", "code_default": true, "required": false, "applies_when": null }, { "name": "ENABLE_UPDATE_TIDB_SERVERLESS_STATUS_TASK", "accepted_names": [ "ENABLE_UPDATE_TIDB_SERVERLESS_STATUS_TASK" ], "group": "feature.celery-schedule-tasks", "type": "boolean", "description": "Enable update tidb service job status task", "code_default": false, "required": false, "applies_when": null }, { "name": "ENABLE_WORKFLOW_RUN_CLEANUP_TASK", "accepted_names": [ "ENABLE_WORKFLOW_RUN_CLEANUP_TASK" ], "group": "feature.celery-schedule-tasks", "type": "boolean", "description": "Enable scheduled workflow run cleanup task", "code_default": false, "required": false, "applies_when": null }, { "name": "ENABLE_WORKFLOW_SCHEDULE_POLLER_TASK", "accepted_names": [ "ENABLE_WORKFLOW_SCHEDULE_POLLER_TASK" ], "group": "feature.celery-schedule-tasks", "type": "boolean", "description": "Enable workflow schedule poller task", "code_default": true, "required": false, "applies_when": null }, { "name": "ENDPOINT_URL_TEMPLATE", "accepted_names": [ "ENDPOINT_URL_TEMPLATE" ], "group": "feature.endpoint", "type": "string", "description": "Template url for endpoint plugin", "code_default": "http://localhost:5002/e/{hook_id}", "required": false, "applies_when": null }, { "name": "ENTERPRISE_ENABLED", "accepted_names": [ "ENTERPRISE_ENABLED" ], "group": "enterprise.enterprise-feature", "type": "boolean", "description": "Enable or disable enterprise-level features.Before using, please contact business@dify.ai by email to inquire about licensing matters.", "code_default": false, "required": false, "applies_when": null }, { "name": "ENTERPRISE_INCLUDE_CONTENT", "accepted_names": [ "ENTERPRISE_INCLUDE_CONTENT" ], "group": "enterprise.enterprise-telemetry", "type": "boolean", "description": "Include input/output content in traces (privacy toggle).", "code_default": false, "required": false, "applies_when": null }, { "name": "ENTERPRISE_OTEL_SAMPLING_RATE", "accepted_names": [ "ENTERPRISE_OTEL_SAMPLING_RATE" ], "group": "enterprise.enterprise-telemetry", "type": "float", "description": "Sampling rate for enterprise traces (0.0 to 1.0, default 1.0 = 100%).", "code_default": 1.0, "required": false, "applies_when": null }, { "name": "ENTERPRISE_OTLP_API_KEY", "accepted_names": [ "ENTERPRISE_OTLP_API_KEY" ], "group": "enterprise.enterprise-telemetry", "type": "string", "description": "Bearer token for enterprise OTLP export authentication.", "code_default": "", "required": false, "applies_when": null }, { "name": "ENTERPRISE_OTLP_ENDPOINT", "accepted_names": [ "ENTERPRISE_OTLP_ENDPOINT" ], "group": "enterprise.enterprise-telemetry", "type": "string", "description": "Enterprise OTEL collector endpoint.", "code_default": "", "required": false, "applies_when": null }, { "name": "ENTERPRISE_OTLP_HEADERS", "accepted_names": [ "ENTERPRISE_OTLP_HEADERS" ], "group": "enterprise.enterprise-telemetry", "type": "string", "description": "Auth headers for OTLP export (key=value,key2=value2).", "code_default": "", "required": false, "applies_when": null }, { "name": "ENTERPRISE_OTLP_PROTOCOL", "accepted_names": [ "ENTERPRISE_OTLP_PROTOCOL" ], "group": "enterprise.enterprise-telemetry", "type": "string", "description": "OTLP protocol: 'http' or 'grpc' (default: http).", "code_default": "http", "required": false, "applies_when": null }, { "name": "ENTERPRISE_REQUEST_TIMEOUT", "accepted_names": [ "ENTERPRISE_REQUEST_TIMEOUT" ], "group": "enterprise.enterprise-feature", "type": "integer", "description": "Maximum timeout in seconds for enterprise requests", "code_default": 5, "required": false, "applies_when": null }, { "name": "ENTERPRISE_SERVICE_NAME", "accepted_names": [ "ENTERPRISE_SERVICE_NAME" ], "group": "enterprise.enterprise-telemetry", "type": "string", "description": "Service name for OTEL resource.", "code_default": "dify", "required": false, "applies_when": null }, { "name": "ENTERPRISE_TELEMETRY_ENABLED", "accepted_names": [ "ENTERPRISE_TELEMETRY_ENABLED" ], "group": "enterprise.enterprise-telemetry", "type": "boolean", "description": "Enable enterprise telemetry collection (also requires ENTERPRISE_ENABLED=true).", "code_default": false, "required": false, "applies_when": null }, { "name": "ETL_TYPE", "accepted_names": [ "ETL_TYPE" ], "group": "feature.rag-etl", "type": "string", "description": "RAG ETL type ('dify' or 'Unstructured'), default to 'dify'", "code_default": "dify", "required": false, "applies_when": null }, { "name": "FILES_ACCESS_TIMEOUT", "accepted_names": [ "FILES_ACCESS_TIMEOUT" ], "group": "feature.file-access", "type": "integer", "description": "Expiration time in seconds for file access URLs", "code_default": 300, "required": false, "applies_when": null }, { "name": "FILES_URL", "accepted_names": [ "FILES_URL", "CONSOLE_API_URL" ], "group": "feature.file-access", "type": "string", "description": "Base URL for file preview or download, used for frontend display and multi-model inputsUrl is signed and has expiration time.", "code_default": "", "required": false, "applies_when": null }, { "name": "FORGOT_PASSWORD_LOCKOUT_DURATION", "accepted_names": [ "FORGOT_PASSWORD_LOCKOUT_DURATION" ], "group": "feature.auth", "type": "integer", "description": "Time (in seconds) a user must wait before retrying password reset after exceeding the rate limit.", "code_default": 86400, "required": false, "applies_when": null }, { "name": "GITHUB_CLIENT_ID", "accepted_names": [ "GITHUB_CLIENT_ID" ], "group": "feature.auth", "type": "string | null", "description": "GitHub OAuth client ID", "code_default": null, "required": false, "applies_when": null }, { "name": "GITHUB_CLIENT_SECRET", "accepted_names": [ "GITHUB_CLIENT_SECRET" ], "group": "feature.auth", "type": "string | null", "description": "GitHub OAuth client secret", "code_default": null, "required": false, "applies_when": null }, { "name": "GOOGLE_CLIENT_ID", "accepted_names": [ "GOOGLE_CLIENT_ID" ], "group": "feature.auth", "type": "string | null", "description": "Google OAuth client ID", "code_default": null, "required": false, "applies_when": null }, { "name": "GOOGLE_CLIENT_SECRET", "accepted_names": [ "GOOGLE_CLIENT_SECRET" ], "group": "feature.auth", "type": "string | null", "description": "Google OAuth client secret", "code_default": null, "required": false, "applies_when": null }, { "name": "GOOGLE_STORAGE_BUCKET_NAME", "accepted_names": [ "GOOGLE_STORAGE_BUCKET_NAME" ], "group": "middleware.storage.google-cloud-storage", "type": "string | null", "description": "Name of the Google Cloud Storage bucket to store and retrieve objects (e.g., 'my-gcs-bucket')", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=google-storage" }, { "name": "GOOGLE_STORAGE_SERVICE_ACCOUNT_JSON_BASE64", "accepted_names": [ "GOOGLE_STORAGE_SERVICE_ACCOUNT_JSON_BASE64" ], "group": "middleware.storage.google-cloud-storage", "type": "string | null", "description": "Base64-encoded JSON key file for Google Cloud service account authentication", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=google-storage" }, { "name": "GRAPH_ENGINE_MAX_WORKERS", "accepted_names": [ "GRAPH_ENGINE_MAX_WORKERS" ], "group": "feature.workflow", "type": "integer", "description": "Maximum number of workers per GraphEngine instance", "code_default": 10, "required": false, "applies_when": null }, { "name": "GRAPH_ENGINE_MIN_WORKERS", "accepted_names": [ "GRAPH_ENGINE_MIN_WORKERS" ], "group": "feature.workflow", "type": "integer", "description": "Minimum number of workers per GraphEngine instance", "code_default": 1, "required": false, "applies_when": null }, { "name": "GRAPH_ENGINE_SCALE_DOWN_IDLE_TIME", "accepted_names": [ "GRAPH_ENGINE_SCALE_DOWN_IDLE_TIME" ], "group": "feature.workflow", "type": "float", "description": "Seconds of idle time before scaling down workers", "code_default": 5.0, "required": false, "applies_when": null }, { "name": "GRAPH_ENGINE_SCALE_UP_THRESHOLD", "accepted_names": [ "GRAPH_ENGINE_SCALE_UP_THRESHOLD" ], "group": "feature.workflow", "type": "integer", "description": "Queue depth threshold that triggers worker scale up", "code_default": 3, "required": false, "applies_when": null }, { "name": "HOLOGRES_ACCESS_KEY_ID", "accepted_names": [ "HOLOGRES_ACCESS_KEY_ID" ], "group": "middleware.vdb.hologres", "type": "string | null", "description": "Alibaba Cloud AccessKey ID, also used as the PostgreSQL username.", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=hologres" }, { "name": "HOLOGRES_ACCESS_KEY_SECRET", "accepted_names": [ "HOLOGRES_ACCESS_KEY_SECRET" ], "group": "middleware.vdb.hologres", "type": "string | null", "description": "Alibaba Cloud AccessKey Secret, also used as the PostgreSQL password.", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=hologres" }, { "name": "HOLOGRES_BASE_QUANTIZATION_TYPE", "accepted_names": [ "HOLOGRES_BASE_QUANTIZATION_TYPE" ], "group": "middleware.vdb.hologres", "type": "string", "description": "Base quantization type for vector index (e.g., 'rabitq', 'sq8', 'fp16', 'fp32').", "code_default": "rabitq", "required": false, "applies_when": "VECTOR_STORE=hologres" }, { "name": "HOLOGRES_DATABASE", "accepted_names": [ "HOLOGRES_DATABASE" ], "group": "middleware.vdb.hologres", "type": "string | null", "description": "Name of the Hologres database to connect to.", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=hologres" }, { "name": "HOLOGRES_DISTANCE_METHOD", "accepted_names": [ "HOLOGRES_DISTANCE_METHOD" ], "group": "middleware.vdb.hologres", "type": "string", "description": "Distance method for vector index (e.g., 'Cosine', 'Euclidean', 'InnerProduct').", "code_default": "Cosine", "required": false, "applies_when": "VECTOR_STORE=hologres" }, { "name": "HOLOGRES_EF_CONSTRUCTION", "accepted_names": [ "HOLOGRES_EF_CONSTRUCTION" ], "group": "middleware.vdb.hologres", "type": "integer", "description": "ef_construction parameter for HNSW vector index.", "code_default": 400, "required": false, "applies_when": "VECTOR_STORE=hologres" }, { "name": "HOLOGRES_HOST", "accepted_names": [ "HOLOGRES_HOST" ], "group": "middleware.vdb.hologres", "type": "string | null", "description": "Hostname or IP address of the Hologres instance.", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=hologres" }, { "name": "HOLOGRES_MAX_DEGREE", "accepted_names": [ "HOLOGRES_MAX_DEGREE" ], "group": "middleware.vdb.hologres", "type": "integer", "description": "Max degree (M) parameter for HNSW vector index.", "code_default": 64, "required": false, "applies_when": "VECTOR_STORE=hologres" }, { "name": "HOLOGRES_PORT", "accepted_names": [ "HOLOGRES_PORT" ], "group": "middleware.vdb.hologres", "type": "integer", "description": "Port number for connecting to the Hologres instance.", "code_default": 80, "required": false, "applies_when": "VECTOR_STORE=hologres" }, { "name": "HOLOGRES_SCHEMA", "accepted_names": [ "HOLOGRES_SCHEMA" ], "group": "middleware.vdb.hologres", "type": "string", "description": "Schema name in the Hologres database.", "code_default": "public", "required": false, "applies_when": "VECTOR_STORE=hologres" }, { "name": "HOLOGRES_TOKENIZER", "accepted_names": [ "HOLOGRES_TOKENIZER" ], "group": "middleware.vdb.hologres", "type": "string", "description": "Tokenizer for full-text search index (e.g., 'jieba', 'ik', 'standard', 'simple').", "code_default": "jieba", "required": false, "applies_when": "VECTOR_STORE=hologres" }, { "name": "HOSTED_ANTHROPIC_API_BASE", "accepted_names": [ "HOSTED_ANTHROPIC_API_BASE" ], "group": "feature.hosted_service.hosted-anthropic", "type": "string | null", "description": "Base URL for hosted Anthropic API", "code_default": null, "required": false, "applies_when": null }, { "name": "HOSTED_ANTHROPIC_API_KEY", "accepted_names": [ "HOSTED_ANTHROPIC_API_KEY" ], "group": "feature.hosted_service.hosted-anthropic", "type": "string | null", "description": "API key for hosted Anthropic service", "code_default": null, "required": false, "applies_when": null }, { "name": "HOSTED_ANTHROPIC_PAID_ENABLED", "accepted_names": [ "HOSTED_ANTHROPIC_PAID_ENABLED" ], "group": "feature.hosted_service.hosted-anthropic", "type": "boolean", "description": "Enable paid access to hosted Anthropic service", "code_default": false, "required": false, "applies_when": null }, { "name": "HOSTED_ANTHROPIC_PAID_MODELS", "accepted_names": [ "HOSTED_ANTHROPIC_PAID_MODELS" ], "group": "feature.hosted_service.hosted-anthropic", "type": "string", "description": "Comma-separated list of available models for paid access", "code_default": "claude-opus-4-20250514,claude-sonnet-4-20250514,claude-3-5-haiku-20241022,claude-3-opus-20240229,claude-3-7-sonnet-20250219,claude-3-haiku-20240307", "required": false, "applies_when": null }, { "name": "HOSTED_ANTHROPIC_TRIAL_ENABLED", "accepted_names": [ "HOSTED_ANTHROPIC_TRIAL_ENABLED" ], "group": "feature.hosted_service.hosted-anthropic", "type": "boolean", "description": "Enable trial access to hosted Anthropic service", "code_default": false, "required": false, "applies_when": null }, { "name": "HOSTED_ANTHROPIC_TRIAL_MODELS", "accepted_names": [ "HOSTED_ANTHROPIC_TRIAL_MODELS" ], "group": "feature.hosted_service.hosted-anthropic", "type": "string", "description": "Comma-separated list of available models for paid access", "code_default": "claude-opus-4-20250514,claude-sonnet-4-20250514,claude-3-5-haiku-20241022,claude-3-opus-20240229,claude-3-7-sonnet-20250219,claude-3-haiku-20240307", "required": false, "applies_when": null }, { "name": "HOSTED_AZURE_OPENAI_API_BASE", "accepted_names": [ "HOSTED_AZURE_OPENAI_API_BASE" ], "group": "feature.hosted_service.hosted-azure-open-ai", "type": "string | null", "description": "Base URL for hosted Azure OpenAI API", "code_default": null, "required": false, "applies_when": null }, { "name": "HOSTED_AZURE_OPENAI_API_KEY", "accepted_names": [ "HOSTED_AZURE_OPENAI_API_KEY" ], "group": "feature.hosted_service.hosted-azure-open-ai", "type": "string | null", "description": "API key for hosted Azure OpenAI service", "code_default": null, "required": false, "applies_when": null }, { "name": "HOSTED_AZURE_OPENAI_ENABLED", "accepted_names": [ "HOSTED_AZURE_OPENAI_ENABLED" ], "group": "feature.hosted_service.hosted-azure-open-ai", "type": "boolean", "description": "Enable hosted Azure OpenAI service", "code_default": false, "required": false, "applies_when": null }, { "name": "HOSTED_AZURE_OPENAI_QUOTA_LIMIT", "accepted_names": [ "HOSTED_AZURE_OPENAI_QUOTA_LIMIT" ], "group": "feature.hosted_service.hosted-azure-open-ai", "type": "integer", "description": "Quota limit for hosted Azure OpenAI service usage", "code_default": 200, "required": false, "applies_when": null }, { "name": "HOSTED_DEEPSEEK_API_BASE", "accepted_names": [ "HOSTED_DEEPSEEK_API_BASE" ], "group": "feature.hosted_service.hosted-deepseek", "type": "string | null", "description": "Base URL for hosted Deepseek API", "code_default": null, "required": false, "applies_when": null }, { "name": "HOSTED_DEEPSEEK_API_KEY", "accepted_names": [ "HOSTED_DEEPSEEK_API_KEY" ], "group": "feature.hosted_service.hosted-deepseek", "type": "string | null", "description": "API key for hosted Deepseek service", "code_default": null, "required": false, "applies_when": null }, { "name": "HOSTED_DEEPSEEK_API_ORGANIZATION", "accepted_names": [ "HOSTED_DEEPSEEK_API_ORGANIZATION" ], "group": "feature.hosted_service.hosted-deepseek", "type": "string | null", "description": "Organization ID for hosted Deepseek service", "code_default": null, "required": false, "applies_when": null }, { "name": "HOSTED_DEEPSEEK_PAID_ENABLED", "accepted_names": [ "HOSTED_DEEPSEEK_PAID_ENABLED" ], "group": "feature.hosted_service.hosted-deepseek", "type": "boolean", "description": "Enable paid access to hosted Deepseek service", "code_default": false, "required": false, "applies_when": null }, { "name": "HOSTED_DEEPSEEK_PAID_MODELS", "accepted_names": [ "HOSTED_DEEPSEEK_PAID_MODELS" ], "group": "feature.hosted_service.hosted-deepseek", "type": "string", "description": "Comma-separated list of available models for paid access", "code_default": "deepseek-chat,deepseek-reasoner", "required": false, "applies_when": null }, { "name": "HOSTED_DEEPSEEK_TRIAL_ENABLED", "accepted_names": [ "HOSTED_DEEPSEEK_TRIAL_ENABLED" ], "group": "feature.hosted_service.hosted-deepseek", "type": "boolean", "description": "Enable trial access to hosted Deepseek service", "code_default": false, "required": false, "applies_when": null }, { "name": "HOSTED_DEEPSEEK_TRIAL_MODELS", "accepted_names": [ "HOSTED_DEEPSEEK_TRIAL_MODELS" ], "group": "feature.hosted_service.hosted-deepseek", "type": "string", "description": "Comma-separated list of available models for trial access", "code_default": "deepseek-chat,deepseek-reasoner", "required": false, "applies_when": null }, { "name": "HOSTED_FETCH_APP_TEMPLATES_MODE", "accepted_names": [ "HOSTED_FETCH_APP_TEMPLATES_MODE" ], "group": "feature.hosted_service.hosted-fetch-app-template", "type": "string", "description": "Mode for fetching app templates: remote, db, or builtin default to remote,", "code_default": "remote", "required": false, "applies_when": null }, { "name": "HOSTED_FETCH_APP_TEMPLATES_REMOTE_DOMAIN", "accepted_names": [ "HOSTED_FETCH_APP_TEMPLATES_REMOTE_DOMAIN" ], "group": "feature.hosted_service.hosted-fetch-app-template", "type": "string", "description": "Domain for fetching remote app templates", "code_default": "https://tmpl.dify.ai", "required": false, "applies_when": null }, { "name": "HOSTED_FETCH_PIPELINE_TEMPLATES_MODE", "accepted_names": [ "HOSTED_FETCH_PIPELINE_TEMPLATES_MODE" ], "group": "feature.hosted_service.hosted-fetch-pipeline-template", "type": "string", "description": "Mode for fetching pipeline templates: remote, db, or builtin default to remote,", "code_default": "remote", "required": false, "applies_when": null }, { "name": "HOSTED_FETCH_PIPELINE_TEMPLATES_REMOTE_DOMAIN", "accepted_names": [ "HOSTED_FETCH_PIPELINE_TEMPLATES_REMOTE_DOMAIN" ], "group": "feature.hosted_service.hosted-fetch-pipeline-template", "type": "string", "description": "Domain for fetching remote pipeline templates", "code_default": "https://tmpl.dify.ai", "required": false, "applies_when": null }, { "name": "HOSTED_GEMINI_API_BASE", "accepted_names": [ "HOSTED_GEMINI_API_BASE" ], "group": "feature.hosted_service.hosted-gemini", "type": "string | null", "description": "Base URL for hosted Gemini API", "code_default": null, "required": false, "applies_when": null }, { "name": "HOSTED_GEMINI_API_KEY", "accepted_names": [ "HOSTED_GEMINI_API_KEY" ], "group": "feature.hosted_service.hosted-gemini", "type": "string | null", "description": "API key for hosted Gemini service", "code_default": null, "required": false, "applies_when": null }, { "name": "HOSTED_GEMINI_API_ORGANIZATION", "accepted_names": [ "HOSTED_GEMINI_API_ORGANIZATION" ], "group": "feature.hosted_service.hosted-gemini", "type": "string | null", "description": "Organization ID for hosted Gemini service", "code_default": null, "required": false, "applies_when": null }, { "name": "HOSTED_GEMINI_PAID_ENABLED", "accepted_names": [ "HOSTED_GEMINI_PAID_ENABLED" ], "group": "feature.hosted_service.hosted-gemini", "type": "boolean", "description": "Enable paid access to hosted gemini service", "code_default": false, "required": false, "applies_when": null }, { "name": "HOSTED_GEMINI_PAID_MODELS", "accepted_names": [ "HOSTED_GEMINI_PAID_MODELS" ], "group": "feature.hosted_service.hosted-gemini", "type": "string", "description": "Comma-separated list of available models for paid access", "code_default": "gemini-2.5-flash,gemini-2.0-flash,gemini-2.0-flash-lite,", "required": false, "applies_when": null }, { "name": "HOSTED_GEMINI_TRIAL_ENABLED", "accepted_names": [ "HOSTED_GEMINI_TRIAL_ENABLED" ], "group": "feature.hosted_service.hosted-gemini", "type": "boolean", "description": "Enable trial access to hosted Gemini service", "code_default": false, "required": false, "applies_when": null }, { "name": "HOSTED_GEMINI_TRIAL_MODELS", "accepted_names": [ "HOSTED_GEMINI_TRIAL_MODELS" ], "group": "feature.hosted_service.hosted-gemini", "type": "string", "description": "Comma-separated list of available models for trial access", "code_default": "gemini-2.5-flash,gemini-2.0-flash,gemini-2.0-flash-lite,", "required": false, "applies_when": null }, { "name": "HOSTED_MINIMAX_ENABLED", "accepted_names": [ "HOSTED_MINIMAX_ENABLED" ], "group": "feature.hosted_service.hosted-minmax", "type": "boolean", "description": "Enable hosted Minmax service", "code_default": false, "required": false, "applies_when": null }, { "name": "HOSTED_MODEL_CREDIT_CONFIG", "accepted_names": [ "HOSTED_MODEL_CREDIT_CONFIG" ], "group": "feature.hosted_service.hosted-credit", "type": "string", "description": "Model credit configuration in format 'model:credits,model:credits', e.g., 'gpt-4:20,gpt-4o:10'", "code_default": "", "required": false, "applies_when": null }, { "name": "HOSTED_MODERATION_ENABLED", "accepted_names": [ "HOSTED_MODERATION_ENABLED" ], "group": "feature.hosted_service.hosted-moderation", "type": "boolean", "description": "Enable hosted Moderation service", "code_default": false, "required": false, "applies_when": null }, { "name": "HOSTED_MODERATION_PROVIDERS", "accepted_names": [ "HOSTED_MODERATION_PROVIDERS" ], "group": "feature.hosted_service.hosted-moderation", "type": "string", "description": "Comma-separated list of moderation providers", "code_default": "", "required": false, "applies_when": null }, { "name": "HOSTED_OPENAI_API_BASE", "accepted_names": [ "HOSTED_OPENAI_API_BASE" ], "group": "feature.hosted_service.hosted-open-ai", "type": "string | null", "description": "Base URL for hosted OpenAI API", "code_default": null, "required": false, "applies_when": null }, { "name": "HOSTED_OPENAI_API_KEY", "accepted_names": [ "HOSTED_OPENAI_API_KEY" ], "group": "feature.hosted_service.hosted-open-ai", "type": "string | null", "description": "API key for hosted OpenAI service", "code_default": null, "required": false, "applies_when": null }, { "name": "HOSTED_OPENAI_API_ORGANIZATION", "accepted_names": [ "HOSTED_OPENAI_API_ORGANIZATION" ], "group": "feature.hosted_service.hosted-open-ai", "type": "string | null", "description": "Organization ID for hosted OpenAI service", "code_default": null, "required": false, "applies_when": null }, { "name": "HOSTED_OPENAI_PAID_ENABLED", "accepted_names": [ "HOSTED_OPENAI_PAID_ENABLED" ], "group": "feature.hosted_service.hosted-open-ai", "type": "boolean", "description": "Enable paid access to hosted OpenAI service", "code_default": false, "required": false, "applies_when": null }, { "name": "HOSTED_OPENAI_PAID_MODELS", "accepted_names": [ "HOSTED_OPENAI_PAID_MODELS" ], "group": "feature.hosted_service.hosted-open-ai", "type": "string", "description": "Comma-separated list of available models for paid access", "code_default": "gpt-4,gpt-4-turbo-preview,gpt-4-turbo-2024-04-09,gpt-4-1106-preview,gpt-4-0125-preview,gpt-4-turbo,gpt-4.1,gpt-4.1-2025-04-14,gpt-4.1-mini,gpt-4.1-mini-2025-04-14,gpt-4.1-nano,gpt-4.1-nano-2025-04-14,gpt-3.5-turbo,gpt-3.5-turbo-16k,gpt-3.5-turbo-16k-0613,gpt-3.5-turbo-1106,gpt-3.5-turbo-0613,gpt-3.5-turbo-0125,gpt-3.5-turbo-instruct,text-davinci-003,chatgpt-4o-latest,gpt-4o,gpt-4o-2024-05-13,gpt-4o-2024-08-06,gpt-4o-2024-11-20,gpt-4o-audio-preview,gpt-4o-audio-preview-2025-06-03,gpt-4o-mini,gpt-4o-mini-2024-07-18,o3-mini,o3-mini-2025-01-31,gpt-5-mini-2025-08-07,gpt-5-mini,o4-mini,o4-mini-2025-04-16,gpt-5-chat-latest,gpt-5,gpt-5-2025-08-07,gpt-5-nano,gpt-5-nano-2025-08-07", "required": false, "applies_when": null }, { "name": "HOSTED_OPENAI_TRIAL_ENABLED", "accepted_names": [ "HOSTED_OPENAI_TRIAL_ENABLED" ], "group": "feature.hosted_service.hosted-open-ai", "type": "boolean", "description": "Enable trial access to hosted OpenAI service", "code_default": false, "required": false, "applies_when": null }, { "name": "HOSTED_OPENAI_TRIAL_MODELS", "accepted_names": [ "HOSTED_OPENAI_TRIAL_MODELS" ], "group": "feature.hosted_service.hosted-open-ai", "type": "string", "description": "Comma-separated list of available models for trial access", "code_default": "gpt-4,gpt-4-turbo-preview,gpt-4-turbo-2024-04-09,gpt-4-1106-preview,gpt-4-0125-preview,gpt-4-turbo,gpt-4.1,gpt-4.1-2025-04-14,gpt-4.1-mini,gpt-4.1-mini-2025-04-14,gpt-4.1-nano,gpt-4.1-nano-2025-04-14,gpt-3.5-turbo,gpt-3.5-turbo-16k,gpt-3.5-turbo-16k-0613,gpt-3.5-turbo-1106,gpt-3.5-turbo-0613,gpt-3.5-turbo-0125,gpt-3.5-turbo-instruct,text-davinci-003,chatgpt-4o-latest,gpt-4o,gpt-4o-2024-05-13,gpt-4o-2024-08-06,gpt-4o-2024-11-20,gpt-4o-audio-preview,gpt-4o-audio-preview-2025-06-03,gpt-4o-mini,gpt-4o-mini-2024-07-18,o3-mini,o3-mini-2025-01-31,gpt-5-mini-2025-08-07,gpt-5-mini,o4-mini,o4-mini-2025-04-16,gpt-5-chat-latest,gpt-5,gpt-5-2025-08-07,gpt-5-nano,gpt-5-nano-2025-08-07", "required": false, "applies_when": null }, { "name": "HOSTED_POOL_CREDITS", "accepted_names": [ "HOSTED_POOL_CREDITS" ], "group": "feature.hosted_service.hosted-credit", "type": "integer", "description": "Pool credits for hosted service", "code_default": 200, "required": false, "applies_when": null }, { "name": "HOSTED_SPARK_ENABLED", "accepted_names": [ "HOSTED_SPARK_ENABLED" ], "group": "feature.hosted_service.hosted-spark", "type": "boolean", "description": "Enable hosted Spark service", "code_default": false, "required": false, "applies_when": null }, { "name": "HOSTED_TONGYI_API_KEY", "accepted_names": [ "HOSTED_TONGYI_API_KEY" ], "group": "feature.hosted_service.hosted-tongyi", "type": "string | null", "description": "API key for hosted Tongyi service", "code_default": null, "required": false, "applies_when": null }, { "name": "HOSTED_TONGYI_PAID_ENABLED", "accepted_names": [ "HOSTED_TONGYI_PAID_ENABLED" ], "group": "feature.hosted_service.hosted-tongyi", "type": "boolean", "description": "Enable paid access to hosted Anthropic service", "code_default": false, "required": false, "applies_when": null }, { "name": "HOSTED_TONGYI_PAID_MODELS", "accepted_names": [ "HOSTED_TONGYI_PAID_MODELS" ], "group": "feature.hosted_service.hosted-tongyi", "type": "string", "description": "Comma-separated list of available models for paid access", "code_default": "", "required": false, "applies_when": null }, { "name": "HOSTED_TONGYI_TRIAL_ENABLED", "accepted_names": [ "HOSTED_TONGYI_TRIAL_ENABLED" ], "group": "feature.hosted_service.hosted-tongyi", "type": "boolean", "description": "Enable trial access to hosted Tongyi service", "code_default": false, "required": false, "applies_when": null }, { "name": "HOSTED_TONGYI_TRIAL_MODELS", "accepted_names": [ "HOSTED_TONGYI_TRIAL_MODELS" ], "group": "feature.hosted_service.hosted-tongyi", "type": "string", "description": "Comma-separated list of available models for trial access", "code_default": "", "required": false, "applies_when": null }, { "name": "HOSTED_TONGYI_USE_INTERNATIONAL_ENDPOINT", "accepted_names": [ "HOSTED_TONGYI_USE_INTERNATIONAL_ENDPOINT" ], "group": "feature.hosted_service.hosted-tongyi", "type": "boolean", "description": "Use international endpoint for hosted Tongyi service", "code_default": false, "required": false, "applies_when": null }, { "name": "HOSTED_XAI_API_BASE", "accepted_names": [ "HOSTED_XAI_API_BASE" ], "group": "feature.hosted_service.hosted-x-a-i", "type": "string | null", "description": "Base URL for hosted XAI API", "code_default": null, "required": false, "applies_when": null }, { "name": "HOSTED_XAI_API_KEY", "accepted_names": [ "HOSTED_XAI_API_KEY" ], "group": "feature.hosted_service.hosted-x-a-i", "type": "string | null", "description": "API key for hosted XAI service", "code_default": null, "required": false, "applies_when": null }, { "name": "HOSTED_XAI_API_ORGANIZATION", "accepted_names": [ "HOSTED_XAI_API_ORGANIZATION" ], "group": "feature.hosted_service.hosted-x-a-i", "type": "string | null", "description": "Organization ID for hosted XAI service", "code_default": null, "required": false, "applies_when": null }, { "name": "HOSTED_XAI_PAID_ENABLED", "accepted_names": [ "HOSTED_XAI_PAID_ENABLED" ], "group": "feature.hosted_service.hosted-x-a-i", "type": "boolean", "description": "Enable paid access to hosted XAI service", "code_default": false, "required": false, "applies_when": null }, { "name": "HOSTED_XAI_PAID_MODELS", "accepted_names": [ "HOSTED_XAI_PAID_MODELS" ], "group": "feature.hosted_service.hosted-x-a-i", "type": "string", "description": "Comma-separated list of available models for paid access", "code_default": "grok-3,grok-3-mini,grok-3-mini-fast", "required": false, "applies_when": null }, { "name": "HOSTED_XAI_TRIAL_ENABLED", "accepted_names": [ "HOSTED_XAI_TRIAL_ENABLED" ], "group": "feature.hosted_service.hosted-x-a-i", "type": "boolean", "description": "Enable trial access to hosted XAI service", "code_default": false, "required": false, "applies_when": null }, { "name": "HOSTED_XAI_TRIAL_MODELS", "accepted_names": [ "HOSTED_XAI_TRIAL_MODELS" ], "group": "feature.hosted_service.hosted-x-a-i", "type": "string", "description": "Comma-separated list of available models for trial access", "code_default": "grok-3,grok-3-mini,grok-3-mini-fast", "required": false, "applies_when": null }, { "name": "HOSTED_ZHIPUAI_ENABLED", "accepted_names": [ "HOSTED_ZHIPUAI_ENABLED" ], "group": "feature.hosted_service.hosted-zhipu-a-i", "type": "boolean", "description": "Enable hosted ZhipuAI service", "code_default": false, "required": false, "applies_when": null }, { "name": "HTTP_REQUEST_MAX_CONNECT_TIMEOUT", "accepted_names": [ "HTTP_REQUEST_MAX_CONNECT_TIMEOUT" ], "group": "feature.http", "type": "integer", "description": "Maximum connection timeout in seconds for HTTP requests", "code_default": 10, "required": false, "applies_when": null }, { "name": "HTTP_REQUEST_MAX_READ_TIMEOUT", "accepted_names": [ "HTTP_REQUEST_MAX_READ_TIMEOUT" ], "group": "feature.http", "type": "integer", "description": "Maximum read timeout in seconds for HTTP requests", "code_default": 600, "required": false, "applies_when": null }, { "name": "HTTP_REQUEST_MAX_WRITE_TIMEOUT", "accepted_names": [ "HTTP_REQUEST_MAX_WRITE_TIMEOUT" ], "group": "feature.http", "type": "integer", "description": "Maximum write timeout in seconds for HTTP requests", "code_default": 600, "required": false, "applies_when": null }, { "name": "HTTP_REQUEST_NODE_MAX_BINARY_SIZE", "accepted_names": [ "HTTP_REQUEST_NODE_MAX_BINARY_SIZE" ], "group": "feature.http", "type": "integer", "description": "Maximum allowed size in bytes for binary data in HTTP requests", "code_default": 10485760, "required": false, "applies_when": null }, { "name": "HTTP_REQUEST_NODE_MAX_TEXT_SIZE", "accepted_names": [ "HTTP_REQUEST_NODE_MAX_TEXT_SIZE" ], "group": "feature.http", "type": "integer", "description": "Maximum allowed size in bytes for text data in HTTP requests", "code_default": 1048576, "required": false, "applies_when": null }, { "name": "HTTP_REQUEST_NODE_SSL_VERIFY", "accepted_names": [ "HTTP_REQUEST_NODE_SSL_VERIFY" ], "group": "feature.http", "type": "boolean", "description": "Enable or disable SSL verification for HTTP requests", "code_default": true, "required": false, "applies_when": null }, { "name": "HUAWEI_CLOUD_HOSTS", "accepted_names": [ "HUAWEI_CLOUD_HOSTS" ], "group": "middleware.vdb.huawei-cloud", "type": "string | null", "description": "Hostname or IP address of the Huawei cloud search service instance", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=huawei-cloud" }, { "name": "HUAWEI_CLOUD_PASSWORD", "accepted_names": [ "HUAWEI_CLOUD_PASSWORD" ], "group": "middleware.vdb.huawei-cloud", "type": "string | null", "description": "Password for authenticating with Huawei cloud search service", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=huawei-cloud" }, { "name": "HUAWEI_CLOUD_USER", "accepted_names": [ "HUAWEI_CLOUD_USER" ], "group": "middleware.vdb.huawei-cloud", "type": "string | null", "description": "Username for authenticating with Huawei cloud search service", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=huawei-cloud" }, { "name": "HUAWEI_OBS_ACCESS_KEY", "accepted_names": [ "HUAWEI_OBS_ACCESS_KEY" ], "group": "middleware.storage.huawei-cloud-o-b-s-storage", "type": "string | null", "description": "Access Key ID for authenticating with Huawei Cloud OBS", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=huawei-obs" }, { "name": "HUAWEI_OBS_BUCKET_NAME", "accepted_names": [ "HUAWEI_OBS_BUCKET_NAME" ], "group": "middleware.storage.huawei-cloud-o-b-s-storage", "type": "string | null", "description": "Name of the Huawei Cloud OBS bucket to store and retrieve objects (e.g., 'my-obs-bucket')", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=huawei-obs" }, { "name": "HUAWEI_OBS_PATH_STYLE", "accepted_names": [ "HUAWEI_OBS_PATH_STYLE" ], "group": "middleware.storage.huawei-cloud-o-b-s-storage", "type": "boolean", "description": "Flag to indicate whether to use path-style URLs for OBS requests", "code_default": false, "required": false, "applies_when": "STORAGE_TYPE=huawei-obs" }, { "name": "HUAWEI_OBS_SECRET_KEY", "accepted_names": [ "HUAWEI_OBS_SECRET_KEY" ], "group": "middleware.storage.huawei-cloud-o-b-s-storage", "type": "string | null", "description": "Secret Access Key for authenticating with Huawei Cloud OBS", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=huawei-obs" }, { "name": "HUAWEI_OBS_SERVER", "accepted_names": [ "HUAWEI_OBS_SERVER" ], "group": "middleware.storage.huawei-cloud-o-b-s-storage", "type": "string | null", "description": "Endpoint URL for Huawei Cloud OBS (e.g., 'https://obs.cn-north-4.myhuaweicloud.com')", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=huawei-obs" }, { "name": "HUMAN_INPUT_GLOBAL_TIMEOUT_SECONDS", "accepted_names": [ "HUMAN_INPUT_GLOBAL_TIMEOUT_SECONDS" ], "group": "feature.app-execution", "type": "integer", "description": "Maximum seconds a workflow run can stay paused waiting for human input before global timeout.", "code_default": 604800, "required": false, "applies_when": null }, { "name": "HUMAN_INPUT_TIMEOUT_TASK_INTERVAL", "accepted_names": [ "HUMAN_INPUT_TIMEOUT_TASK_INTERVAL" ], "group": "feature.celery-schedule-tasks", "type": "integer", "description": "Human input timeout check interval in minutes", "code_default": 1, "required": false, "applies_when": null }, { "name": "IMAGE_FILE_BATCH_LIMIT", "accepted_names": [ "IMAGE_FILE_BATCH_LIMIT" ], "group": "feature.file-upload", "type": "integer", "description": "Maximum number of files allowed in a image batch upload operation", "code_default": 10, "required": false, "applies_when": null }, { "name": "INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH", "accepted_names": [ "INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH" ], "group": "feature.indexing", "type": "integer", "description": "Maximum token length for text segmentation during indexing", "code_default": 4000, "required": false, "applies_when": null }, { "name": "INNER_API", "accepted_names": [ "INNER_API" ], "group": "feature.inner-a-p-i", "type": "boolean", "description": "Enable or disable the internal API", "code_default": false, "required": false, "applies_when": null }, { "name": "INNER_API_KEY", "accepted_names": [ "INNER_API_KEY" ], "group": "feature.inner-a-p-i", "type": "string | null", "description": "API key for accessing the internal API", "code_default": null, "required": false, "applies_when": null }, { "name": "INNER_API_KEY_FOR_PLUGIN", "accepted_names": [ "INNER_API_KEY_FOR_PLUGIN" ], "group": "feature.plugin", "type": "string", "description": "Inner api key for plugin", "code_default": "inner-api-key", "required": false, "applies_when": null }, { "name": "INTERNAL_FILES_URL", "accepted_names": [ "INTERNAL_FILES_URL" ], "group": "feature.file-access", "type": "string", "description": "Internal base URL for file access within Docker network, used for plugin daemon and internal service communication. Falls back to FILES_URL if not specified.", "code_default": "", "required": false, "applies_when": null }, { "name": "INVITE_EXPIRY_HOURS", "accepted_names": [ "INVITE_EXPIRY_HOURS" ], "group": "feature.workspace", "type": "integer", "description": "Expiration time in hours for workspace invitation links", "code_default": 72, "required": false, "applies_when": null }, { "name": "IRIS_CONNECTION_URL", "accepted_names": [ "IRIS_CONNECTION_URL" ], "group": "middleware.vdb.iris-vector", "type": "string | null", "description": "Full connection URL for IRIS (overrides individual fields if provided).", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=iris" }, { "name": "IRIS_DATABASE", "accepted_names": [ "IRIS_DATABASE" ], "group": "middleware.vdb.iris-vector", "type": "string | null", "description": "Database namespace for IRIS connection.", "code_default": "USER", "required": false, "applies_when": "VECTOR_STORE=iris" }, { "name": "IRIS_HOST", "accepted_names": [ "IRIS_HOST" ], "group": "middleware.vdb.iris-vector", "type": "string | null", "description": "Hostname or IP address of the IRIS server.", "code_default": "localhost", "required": false, "applies_when": "VECTOR_STORE=iris" }, { "name": "IRIS_MAX_CONNECTION", "accepted_names": [ "IRIS_MAX_CONNECTION" ], "group": "middleware.vdb.iris-vector", "type": "integer", "description": "Maximum number of connections in the pool.", "code_default": 3, "required": false, "applies_when": "VECTOR_STORE=iris" }, { "name": "IRIS_MIN_CONNECTION", "accepted_names": [ "IRIS_MIN_CONNECTION" ], "group": "middleware.vdb.iris-vector", "type": "integer", "description": "Minimum number of connections in the pool.", "code_default": 1, "required": false, "applies_when": "VECTOR_STORE=iris" }, { "name": "IRIS_PASSWORD", "accepted_names": [ "IRIS_PASSWORD" ], "group": "middleware.vdb.iris-vector", "type": "string | null", "description": "Password for IRIS authentication.", "code_default": "Dify@1234", "required": false, "applies_when": "VECTOR_STORE=iris" }, { "name": "IRIS_SCHEMA", "accepted_names": [ "IRIS_SCHEMA" ], "group": "middleware.vdb.iris-vector", "type": "string | null", "description": "Schema name for IRIS tables.", "code_default": "dify", "required": false, "applies_when": "VECTOR_STORE=iris" }, { "name": "IRIS_SUPER_SERVER_PORT", "accepted_names": [ "IRIS_SUPER_SERVER_PORT" ], "group": "middleware.vdb.iris-vector", "type": "typing.Annotated[int, Gt(gt=0)] | null", "description": "Port number for IRIS connection.", "code_default": 1972, "required": false, "applies_when": "VECTOR_STORE=iris" }, { "name": "IRIS_TEXT_INDEX", "accepted_names": [ "IRIS_TEXT_INDEX" ], "group": "middleware.vdb.iris-vector", "type": "boolean", "description": "Enable full-text search index using %iFind.Index.Basic.", "code_default": true, "required": false, "applies_when": "VECTOR_STORE=iris" }, { "name": "IRIS_TEXT_INDEX_LANGUAGE", "accepted_names": [ "IRIS_TEXT_INDEX_LANGUAGE" ], "group": "middleware.vdb.iris-vector", "type": "string", "description": "Language for full-text search index (e.g., 'en', 'ja', 'zh', 'de').", "code_default": "en", "required": false, "applies_when": "VECTOR_STORE=iris" }, { "name": "IRIS_USER", "accepted_names": [ "IRIS_USER" ], "group": "middleware.vdb.iris-vector", "type": "string | null", "description": "Username for IRIS authentication.", "code_default": "_SYSTEM", "required": false, "applies_when": "VECTOR_STORE=iris" }, { "name": "KEYWORD_DATA_SOURCE_TYPE", "accepted_names": [ "KEYWORD_DATA_SOURCE_TYPE" ], "group": "feature.rag-etl", "type": "string", "description": "Data source type for keyword extraction ('database' or other supported types), default to 'database'", "code_default": "database", "required": false, "applies_when": null }, { "name": "KEYWORD_STORE", "accepted_names": [ "KEYWORD_STORE" ], "group": "middleware.keyword-store", "type": "string", "description": "Method for keyword extraction and storage. Default is 'jieba', a Chinese text segmentation library.", "code_default": "jieba", "required": false, "applies_when": null }, { "name": "LINDORM_DISTANCE_TYPE", "accepted_names": [ "LINDORM_DISTANCE_TYPE" ], "group": "middleware.vdb.lindorm", "type": "string | null", "description": "Vector Distance Type, support l2, cosinesimil, innerproduct", "code_default": "l2", "required": false, "applies_when": "VECTOR_STORE=lindorm" }, { "name": "LINDORM_INDEX_TYPE", "accepted_names": [ "LINDORM_INDEX_TYPE" ], "group": "middleware.vdb.lindorm", "type": "string | null", "description": "Lindorm Vector Index Type, hnsw or flat is available in dify", "code_default": "hnsw", "required": false, "applies_when": "VECTOR_STORE=lindorm" }, { "name": "LINDORM_PASSWORD", "accepted_names": [ "LINDORM_PASSWORD" ], "group": "middleware.vdb.lindorm", "type": "string | null", "description": "Lindorm password", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=lindorm" }, { "name": "LINDORM_QUERY_TIMEOUT", "accepted_names": [ "LINDORM_QUERY_TIMEOUT" ], "group": "middleware.vdb.lindorm", "type": "float | null", "description": "The lindorm search request timeout (s)", "code_default": 2.0, "required": false, "applies_when": "VECTOR_STORE=lindorm" }, { "name": "LINDORM_URL", "accepted_names": [ "LINDORM_URL" ], "group": "middleware.vdb.lindorm", "type": "string | null", "description": "Lindorm url", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=lindorm" }, { "name": "LINDORM_USERNAME", "accepted_names": [ "LINDORM_USERNAME" ], "group": "middleware.vdb.lindorm", "type": "string | null", "description": "Lindorm user", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=lindorm" }, { "name": "LINDORM_USING_UGC", "accepted_names": [ "LINDORM_USING_UGC" ], "group": "middleware.vdb.lindorm", "type": "boolean | null", "description": "Using UGC index will store indexes with the same IndexType/Dimension in a single big index.", "code_default": true, "required": false, "applies_when": "VECTOR_STORE=lindorm" }, { "name": "LOGIN_DISABLED", "accepted_names": [ "LOGIN_DISABLED" ], "group": "feature.security", "type": "boolean", "description": "Whether to disable login checks", "code_default": false, "required": false, "applies_when": null }, { "name": "LOGIN_LOCKOUT_DURATION", "accepted_names": [ "LOGIN_LOCKOUT_DURATION" ], "group": "feature.auth", "type": "integer", "description": "Time (in seconds) a user must wait before retrying login after exceeding the rate limit.", "code_default": 86400, "required": false, "applies_when": null }, { "name": "LOG_DATEFORMAT", "accepted_names": [ "LOG_DATEFORMAT" ], "group": "feature.logging", "type": "string | null", "description": "Date format string for log timestamps", "code_default": null, "required": false, "applies_when": null }, { "name": "LOG_FILE", "accepted_names": [ "LOG_FILE" ], "group": "feature.logging", "type": "string | null", "description": "File path for log output.", "code_default": null, "required": false, "applies_when": null }, { "name": "LOG_FILE_BACKUP_COUNT", "accepted_names": [ "LOG_FILE_BACKUP_COUNT" ], "group": "feature.logging", "type": "integer", "description": "Maximum file backup count file rotation retention", "code_default": 5, "required": false, "applies_when": null }, { "name": "LOG_FILE_MAX_SIZE", "accepted_names": [ "LOG_FILE_MAX_SIZE" ], "group": "feature.logging", "type": "integer", "description": "Maximum file size for file rotation retention, the unit is megabytes (MB)", "code_default": 20, "required": false, "applies_when": null }, { "name": "LOG_FORMAT", "accepted_names": [ "LOG_FORMAT" ], "group": "feature.logging", "type": "string", "description": "Format string for log messages", "code_default": "%(asctime)s.%(msecs)03d %(levelname)s [%(threadName)s] [%(filename)s:%(lineno)d] %(trace_id)s - %(message)s", "required": false, "applies_when": null }, { "name": "LOG_LEVEL", "accepted_names": [ "LOG_LEVEL" ], "group": "feature.logging", "type": "string", "description": "Logging level, default to INFO. Set to ERROR for production environments.", "code_default": "INFO", "required": false, "applies_when": null }, { "name": "LOG_OUTPUT_FORMAT", "accepted_names": [ "LOG_OUTPUT_FORMAT" ], "group": "feature.logging", "type": "literal['text', 'json']", "description": "Log output format: 'text' for human-readable, 'json' for structured JSON logs.", "code_default": "text", "required": false, "applies_when": null }, { "name": "LOG_TZ", "accepted_names": [ "LOG_TZ" ], "group": "feature.logging", "type": "string | null", "description": "Timezone for log timestamps (e.g., 'America/New_York')", "code_default": "UTC", "required": false, "applies_when": null }, { "name": "MAIL_DEFAULT_SEND_FROM", "accepted_names": [ "MAIL_DEFAULT_SEND_FROM" ], "group": "feature.mail", "type": "string | null", "description": "Default email address to use as the sender", "code_default": null, "required": false, "applies_when": null }, { "name": "MAIL_TEMPLATING_MODE", "accepted_names": [ "MAIL_TEMPLATING_MODE" ], "group": "feature.mail", "type": "enum", "description": "Template mode for email services", "code_default": "sandbox", "required": false, "applies_when": null }, { "name": "MAIL_TEMPLATING_TIMEOUT", "accepted_names": [ "MAIL_TEMPLATING_TIMEOUT" ], "group": "feature.mail", "type": "integer", "description": "\n Timeout for email templating in seconds. Used to prevent infinite loops in malicious templates.\n Only available in sandbox mode.", "code_default": 3, "required": false, "applies_when": null }, { "name": "MAIL_TYPE", "accepted_names": [ "MAIL_TYPE" ], "group": "feature.mail", "type": "string | null", "description": "Email service provider type ('smtp' or 'resend' or 'sendGrid), default to None.", "code_default": null, "required": false, "applies_when": null }, { "name": "MARKETPLACE_API_URL", "accepted_names": [ "MARKETPLACE_API_URL" ], "group": "feature.marketplace", "type": "HttpUrl", "description": "Marketplace API URL", "code_default": "https://marketplace.dify.ai/", "required": false, "applies_when": null }, { "name": "MARKETPLACE_ENABLED", "accepted_names": [ "MARKETPLACE_ENABLED" ], "group": "feature.marketplace", "type": "boolean", "description": "Enable or disable marketplace", "code_default": true, "required": false, "applies_when": null }, { "name": "MATRIXONE_DATABASE", "accepted_names": [ "MATRIXONE_DATABASE" ], "group": "middleware.vdb.matrixone", "type": "string", "description": "Name of the Matrixone database to connect to", "code_default": "dify", "required": false, "applies_when": "VECTOR_STORE=matrixone" }, { "name": "MATRIXONE_HOST", "accepted_names": [ "MATRIXONE_HOST" ], "group": "middleware.vdb.matrixone", "type": "string", "description": "Host address of the Matrixone server", "code_default": "localhost", "required": false, "applies_when": "VECTOR_STORE=matrixone" }, { "name": "MATRIXONE_METRIC", "accepted_names": [ "MATRIXONE_METRIC" ], "group": "middleware.vdb.matrixone", "type": "string", "description": "Distance metric type for vector similarity search (cosine or l2)", "code_default": "l2", "required": false, "applies_when": "VECTOR_STORE=matrixone" }, { "name": "MATRIXONE_PASSWORD", "accepted_names": [ "MATRIXONE_PASSWORD" ], "group": "middleware.vdb.matrixone", "type": "string", "description": "Password for authenticating with Matrixone", "code_default": "111", "required": false, "applies_when": "VECTOR_STORE=matrixone" }, { "name": "MATRIXONE_PORT", "accepted_names": [ "MATRIXONE_PORT" ], "group": "middleware.vdb.matrixone", "type": "integer", "description": "Port number of the Matrixone server", "code_default": 6001, "required": false, "applies_when": "VECTOR_STORE=matrixone" }, { "name": "MATRIXONE_USER", "accepted_names": [ "MATRIXONE_USER" ], "group": "middleware.vdb.matrixone", "type": "string", "description": "Username for authenticating with Matrixone", "code_default": "dump", "required": false, "applies_when": "VECTOR_STORE=matrixone" }, { "name": "MAX_SUBMIT_COUNT", "accepted_names": [ "MAX_SUBMIT_COUNT" ], "group": "feature.workflow-node-execution", "type": "integer", "description": "Maximum number of submitted thread count in a ThreadPool for parallel node execution", "code_default": 100, "required": false, "applies_when": null }, { "name": "MAX_VARIABLE_SIZE", "accepted_names": [ "MAX_VARIABLE_SIZE" ], "group": "feature.workflow", "type": "integer", "description": "Maximum size in bytes for a single variable in workflows. Default to 200 KB.", "code_default": 204800, "required": false, "applies_when": null }, { "name": "MILVUS_ANALYZER_PARAMS", "accepted_names": [ "MILVUS_ANALYZER_PARAMS" ], "group": "middleware.vdb.milvus", "type": "string | null", "description": "Milvus text analyzer parameters, e.g., {\"type\": \"chinese\"} for Chinese segmentation support.", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=milvus" }, { "name": "MILVUS_DATABASE", "accepted_names": [ "MILVUS_DATABASE" ], "group": "middleware.vdb.milvus", "type": "string", "description": "Name of the Milvus database to connect to (default is 'default')", "code_default": "default", "required": false, "applies_when": "VECTOR_STORE=milvus" }, { "name": "MILVUS_ENABLE_HYBRID_SEARCH", "accepted_names": [ "MILVUS_ENABLE_HYBRID_SEARCH" ], "group": "middleware.vdb.milvus", "type": "boolean", "description": "Enable hybrid search features (requires Milvus >= 2.5.0). Set to false for compatibility with older versions", "code_default": true, "required": false, "applies_when": "VECTOR_STORE=milvus" }, { "name": "MILVUS_PASSWORD", "accepted_names": [ "MILVUS_PASSWORD" ], "group": "middleware.vdb.milvus", "type": "string | null", "description": "Password for authenticating with Milvus, if username/password authentication is enabled", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=milvus" }, { "name": "MILVUS_TOKEN", "accepted_names": [ "MILVUS_TOKEN" ], "group": "middleware.vdb.milvus", "type": "string | null", "description": "Authentication token for Milvus, if token-based authentication is enabled", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=milvus" }, { "name": "MILVUS_URI", "accepted_names": [ "MILVUS_URI" ], "group": "middleware.vdb.milvus", "type": "string | null", "description": "URI for connecting to the Milvus server (e.g., 'http://localhost:19530' or 'https://milvus-instance.example.com:19530')", "code_default": "http://127.0.0.1:19530", "required": false, "applies_when": "VECTOR_STORE=milvus" }, { "name": "MILVUS_USER", "accepted_names": [ "MILVUS_USER" ], "group": "middleware.vdb.milvus", "type": "string | null", "description": "Username for authenticating with Milvus, if username/password authentication is enabled", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=milvus" }, { "name": "MODEL_LB_ENABLED", "accepted_names": [ "MODEL_LB_ENABLED" ], "group": "feature.model-load-balance", "type": "boolean", "description": "Enable or disable load balancing for models", "code_default": false, "required": false, "applies_when": null }, { "name": "MODERATION_BUFFER_SIZE", "accepted_names": [ "MODERATION_BUFFER_SIZE" ], "group": "feature.moderation", "type": "integer", "description": "Size of the buffer for content moderation processing", "code_default": 300, "required": false, "applies_when": null }, { "name": "MULTIMODAL_SEND_FORMAT", "accepted_names": [ "MULTIMODAL_SEND_FORMAT" ], "group": "feature.multi-modal-transfer", "type": "literal['base64', 'url']", "description": "Format for sending files in multimodal contexts ('base64' or 'url'), default is base64", "code_default": "base64", "required": false, "applies_when": null }, { "name": "MYSCALE_DATABASE", "accepted_names": [ "MYSCALE_DATABASE" ], "group": "middleware.vdb.my-scale", "type": "string", "description": "Name of the MyScale database to connect to (default is 'default')", "code_default": "default", "required": false, "applies_when": "VECTOR_STORE=myscale" }, { "name": "MYSCALE_FTS_PARAMS", "accepted_names": [ "MYSCALE_FTS_PARAMS" ], "group": "middleware.vdb.my-scale", "type": "string", "description": "Additional parameters for MyScale Full Text Search index)", "code_default": "", "required": false, "applies_when": "VECTOR_STORE=myscale" }, { "name": "MYSCALE_HOST", "accepted_names": [ "MYSCALE_HOST" ], "group": "middleware.vdb.my-scale", "type": "string", "description": "Hostname or IP address of the MyScale server (e.g., 'localhost' or 'myscale.example.com')", "code_default": "localhost", "required": false, "applies_when": "VECTOR_STORE=myscale" }, { "name": "MYSCALE_PASSWORD", "accepted_names": [ "MYSCALE_PASSWORD" ], "group": "middleware.vdb.my-scale", "type": "string", "description": "Password for authenticating with MyScale (default is an empty string)", "code_default": "", "required": false, "applies_when": "VECTOR_STORE=myscale" }, { "name": "MYSCALE_PORT", "accepted_names": [ "MYSCALE_PORT" ], "group": "middleware.vdb.my-scale", "type": "integer", "description": "Port number on which the MyScale server is listening (default is 8123)", "code_default": 8123, "required": false, "applies_when": "VECTOR_STORE=myscale" }, { "name": "MYSCALE_USER", "accepted_names": [ "MYSCALE_USER" ], "group": "middleware.vdb.my-scale", "type": "string", "description": "Username for authenticating with MyScale (default is 'default')", "code_default": "default", "required": false, "applies_when": "VECTOR_STORE=myscale" }, { "name": "NOTION_CLIENT_ID", "accepted_names": [ "NOTION_CLIENT_ID" ], "group": "extra.notion", "type": "string | null", "description": "Client ID for Notion API authentication. Required for OAuth 2.0 flow.", "code_default": null, "required": false, "applies_when": null }, { "name": "NOTION_CLIENT_SECRET", "accepted_names": [ "NOTION_CLIENT_SECRET" ], "group": "extra.notion", "type": "string | null", "description": "Client secret for Notion API authentication. Required for OAuth 2.0 flow.", "code_default": null, "required": false, "applies_when": null }, { "name": "NOTION_INTEGRATION_TOKEN", "accepted_names": [ "NOTION_INTEGRATION_TOKEN" ], "group": "extra.notion", "type": "string | null", "description": "Integration token for Notion API access. Used for direct API calls without OAuth flow.", "code_default": null, "required": false, "applies_when": null }, { "name": "NOTION_INTEGRATION_TYPE", "accepted_names": [ "NOTION_INTEGRATION_TYPE" ], "group": "extra.notion", "type": "string | null", "description": "Type of Notion integration. Set to 'internal' for internal integrations, or None for public integrations.", "code_default": null, "required": false, "applies_when": null }, { "name": "NOTION_INTERNAL_SECRET", "accepted_names": [ "NOTION_INTERNAL_SECRET" ], "group": "extra.notion", "type": "string | null", "description": "Secret key for internal Notion integrations. Required when NOTION_INTEGRATION_TYPE is 'internal'.", "code_default": null, "required": false, "applies_when": null }, { "name": "OAUTH_REDIRECT_PATH", "accepted_names": [ "OAUTH_REDIRECT_PATH" ], "group": "feature.auth", "type": "string", "description": "Redirect path for OAuth authentication callbacks", "code_default": "/console/api/oauth/authorize", "required": false, "applies_when": null }, { "name": "OCEANBASE_ENABLE_HYBRID_SEARCH", "accepted_names": [ "OCEANBASE_ENABLE_HYBRID_SEARCH" ], "group": "middleware.vdb.ocean-base-vector", "type": "boolean", "description": "Enable hybrid search features (requires OceanBase >= 4.3.5.1). Set to false for compatibility with older versions", "code_default": false, "required": false, "applies_when": "VECTOR_STORE=oceanbase" }, { "name": "OCEANBASE_FULLTEXT_PARSER", "accepted_names": [ "OCEANBASE_FULLTEXT_PARSER" ], "group": "middleware.vdb.ocean-base-vector", "type": "string | null", "description": "Fulltext parser to use for text indexing. Built-in options: 'ngram' (N-gram tokenizer for English/numbers), 'beng' (Basic English tokenizer), 'space' (Space-based tokenizer), 'ngram2' (Improved N-gram tokenizer), 'ik' (Chinese tokenizer). External plugins (require installation): 'japanese_ftparser' (Japanese tokenizer), 'thai_ftparser' (Thai tokenizer). Default is 'ik'", "code_default": "ik", "required": false, "applies_when": "VECTOR_STORE=oceanbase" }, { "name": "OCEANBASE_HNSW_EF_CONSTRUCTION", "accepted_names": [ "OCEANBASE_HNSW_EF_CONSTRUCTION" ], "group": "middleware.vdb.ocean-base-vector", "type": "integer", "description": "HNSW efConstruction parameter (index build-time search width)", "code_default": 256, "required": false, "applies_when": "VECTOR_STORE=oceanbase" }, { "name": "OCEANBASE_HNSW_EF_SEARCH", "accepted_names": [ "OCEANBASE_HNSW_EF_SEARCH" ], "group": "middleware.vdb.ocean-base-vector", "type": "integer", "description": "HNSW efSearch parameter (query-time search width, -1 uses server default)", "code_default": -1, "required": false, "applies_when": "VECTOR_STORE=oceanbase" }, { "name": "OCEANBASE_HNSW_M", "accepted_names": [ "OCEANBASE_HNSW_M" ], "group": "middleware.vdb.ocean-base-vector", "type": "integer", "description": "HNSW M parameter (max number of connections per node)", "code_default": 16, "required": false, "applies_when": "VECTOR_STORE=oceanbase" }, { "name": "OCEANBASE_HNSW_REFRESH_THRESHOLD", "accepted_names": [ "OCEANBASE_HNSW_REFRESH_THRESHOLD" ], "group": "middleware.vdb.ocean-base-vector", "type": "integer", "description": "Minimum number of inserted documents to trigger an automatic HNSW index refresh (0 to disable)", "code_default": 1000, "required": false, "applies_when": "VECTOR_STORE=oceanbase" }, { "name": "OCEANBASE_VECTOR_BATCH_SIZE", "accepted_names": [ "OCEANBASE_VECTOR_BATCH_SIZE" ], "group": "middleware.vdb.ocean-base-vector", "type": "integer", "description": "Number of documents to insert per batch", "code_default": 100, "required": false, "applies_when": "VECTOR_STORE=oceanbase" }, { "name": "OCEANBASE_VECTOR_DATABASE", "accepted_names": [ "OCEANBASE_VECTOR_DATABASE" ], "group": "middleware.vdb.ocean-base-vector", "type": "string | null", "description": "Name of the OceanBase Vector database to connect to", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=oceanbase" }, { "name": "OCEANBASE_VECTOR_HOST", "accepted_names": [ "OCEANBASE_VECTOR_HOST" ], "group": "middleware.vdb.ocean-base-vector", "type": "string | null", "description": "Hostname or IP address of the OceanBase Vector server (e.g. 'localhost')", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=oceanbase" }, { "name": "OCEANBASE_VECTOR_MAX_OVERFLOW", "accepted_names": [ "OCEANBASE_VECTOR_MAX_OVERFLOW" ], "group": "middleware.vdb.ocean-base-vector", "type": "integer", "description": "SQLAlchemy connection pool max overflow connections", "code_default": 10, "required": false, "applies_when": "VECTOR_STORE=oceanbase" }, { "name": "OCEANBASE_VECTOR_METRIC_TYPE", "accepted_names": [ "OCEANBASE_VECTOR_METRIC_TYPE" ], "group": "middleware.vdb.ocean-base-vector", "type": "literal['l2', 'cosine', 'inner_product']", "description": "Distance metric type for vector index: l2, cosine, or inner_product", "code_default": "l2", "required": false, "applies_when": "VECTOR_STORE=oceanbase" }, { "name": "OCEANBASE_VECTOR_PASSWORD", "accepted_names": [ "OCEANBASE_VECTOR_PASSWORD" ], "group": "middleware.vdb.ocean-base-vector", "type": "string | null", "description": "Password for authenticating with the OceanBase Vector database", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=oceanbase" }, { "name": "OCEANBASE_VECTOR_POOL_SIZE", "accepted_names": [ "OCEANBASE_VECTOR_POOL_SIZE" ], "group": "middleware.vdb.ocean-base-vector", "type": "integer", "description": "SQLAlchemy connection pool size", "code_default": 5, "required": false, "applies_when": "VECTOR_STORE=oceanbase" }, { "name": "OCEANBASE_VECTOR_PORT", "accepted_names": [ "OCEANBASE_VECTOR_PORT" ], "group": "middleware.vdb.ocean-base-vector", "type": "typing.Annotated[int, Gt(gt=0)] | null", "description": "Port number on which the OceanBase Vector server is listening (default is 2881)", "code_default": 2881, "required": false, "applies_when": "VECTOR_STORE=oceanbase" }, { "name": "OCEANBASE_VECTOR_USER", "accepted_names": [ "OCEANBASE_VECTOR_USER" ], "group": "middleware.vdb.ocean-base-vector", "type": "string | null", "description": "Username for authenticating with the OceanBase Vector database", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=oceanbase" }, { "name": "OCI_ACCESS_KEY", "accepted_names": [ "OCI_ACCESS_KEY" ], "group": "middleware.storage.o-c-i-storage", "type": "string | null", "description": "Access key (also known as API key) for authenticating with OCI Object Storage", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=oci-storage" }, { "name": "OCI_BUCKET_NAME", "accepted_names": [ "OCI_BUCKET_NAME" ], "group": "middleware.storage.o-c-i-storage", "type": "string | null", "description": "Name of the OCI Object Storage bucket to store and retrieve objects (e.g., 'my-oci-bucket')", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=oci-storage" }, { "name": "OCI_ENDPOINT", "accepted_names": [ "OCI_ENDPOINT" ], "group": "middleware.storage.o-c-i-storage", "type": "string | null", "description": "URL of the OCI Object Storage endpoint (e.g., 'https://objectstorage.us-phoenix-1.oraclecloud.com')", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=oci-storage" }, { "name": "OCI_REGION", "accepted_names": [ "OCI_REGION" ], "group": "middleware.storage.o-c-i-storage", "type": "string | null", "description": "OCI region where the bucket is located (e.g., 'us-phoenix-1')", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=oci-storage" }, { "name": "OCI_SECRET_KEY", "accepted_names": [ "OCI_SECRET_KEY" ], "group": "middleware.storage.o-c-i-storage", "type": "string | null", "description": "Secret key associated with the access key for authenticating with OCI Object Storage", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=oci-storage" }, { "name": "OPENDAL_SCHEME", "accepted_names": [ "OPENDAL_SCHEME" ], "group": "middleware.storage.open-d-a-l-storage", "type": "string", "description": "OpenDAL scheme.", "code_default": "fs", "required": false, "applies_when": "STORAGE_TYPE=opendal" }, { "name": "OPENGAUSS_DATABASE", "accepted_names": [ "OPENGAUSS_DATABASE" ], "group": "middleware.vdb.open-gauss", "type": "string | null", "description": "Name of the OpenGauss database to connect to", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=opengauss" }, { "name": "OPENGAUSS_ENABLE_PQ", "accepted_names": [ "OPENGAUSS_ENABLE_PQ" ], "group": "middleware.vdb.open-gauss", "type": "boolean", "description": "Enable openGauss PQ acceleration feature", "code_default": false, "required": false, "applies_when": "VECTOR_STORE=opengauss" }, { "name": "OPENGAUSS_HOST", "accepted_names": [ "OPENGAUSS_HOST" ], "group": "middleware.vdb.open-gauss", "type": "string | null", "description": "Hostname or IP address of the OpenGauss server(e.g., 'localhost')", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=opengauss" }, { "name": "OPENGAUSS_MAX_CONNECTION", "accepted_names": [ "OPENGAUSS_MAX_CONNECTION" ], "group": "middleware.vdb.open-gauss", "type": "integer", "description": "Max connection of the OpenGauss database", "code_default": 5, "required": false, "applies_when": "VECTOR_STORE=opengauss" }, { "name": "OPENGAUSS_MIN_CONNECTION", "accepted_names": [ "OPENGAUSS_MIN_CONNECTION" ], "group": "middleware.vdb.open-gauss", "type": "integer", "description": "Min connection of the OpenGauss database", "code_default": 1, "required": false, "applies_when": "VECTOR_STORE=opengauss" }, { "name": "OPENGAUSS_PASSWORD", "accepted_names": [ "OPENGAUSS_PASSWORD" ], "group": "middleware.vdb.open-gauss", "type": "string | null", "description": "Password for authenticating with the OpenGauss database", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=opengauss" }, { "name": "OPENGAUSS_PORT", "accepted_names": [ "OPENGAUSS_PORT" ], "group": "middleware.vdb.open-gauss", "type": "integer", "description": "Port number on which the OpenGauss server is listening (default is 6600)", "code_default": 6600, "required": false, "applies_when": "VECTOR_STORE=opengauss" }, { "name": "OPENGAUSS_USER", "accepted_names": [ "OPENGAUSS_USER" ], "group": "middleware.vdb.open-gauss", "type": "string | null", "description": "Username for authenticating with the OpenGauss database", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=opengauss" }, { "name": "OPENSEARCH_AUTH_METHOD", "accepted_names": [ "OPENSEARCH_AUTH_METHOD" ], "group": "middleware.vdb.open-search", "type": "enum", "description": "Authentication method for OpenSearch connection (default is 'basic')", "code_default": "basic", "required": false, "applies_when": "VECTOR_STORE=opensearch" }, { "name": "OPENSEARCH_AWS_REGION", "accepted_names": [ "OPENSEARCH_AWS_REGION" ], "group": "middleware.vdb.open-search", "type": "string | null", "description": "AWS region for OpenSearch (e.g. 'us-west-2')", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=opensearch" }, { "name": "OPENSEARCH_AWS_SERVICE", "accepted_names": [ "OPENSEARCH_AWS_SERVICE" ], "group": "middleware.vdb.open-search", "type": "literal['es', 'aoss'] | null", "description": "AWS service for OpenSearch (e.g. 'aoss' for OpenSearch Serverless)", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=opensearch" }, { "name": "OPENSEARCH_HOST", "accepted_names": [ "OPENSEARCH_HOST" ], "group": "middleware.vdb.open-search", "type": "string | null", "description": "Hostname or IP address of the OpenSearch server (e.g., 'localhost' or 'opensearch.example.com')", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=opensearch" }, { "name": "OPENSEARCH_PASSWORD", "accepted_names": [ "OPENSEARCH_PASSWORD" ], "group": "middleware.vdb.open-search", "type": "string | null", "description": "Password for authenticating with OpenSearch", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=opensearch" }, { "name": "OPENSEARCH_PORT", "accepted_names": [ "OPENSEARCH_PORT" ], "group": "middleware.vdb.open-search", "type": "integer", "description": "Port number on which the OpenSearch server is listening (default is 9200)", "code_default": 9200, "required": false, "applies_when": "VECTOR_STORE=opensearch" }, { "name": "OPENSEARCH_SECURE", "accepted_names": [ "OPENSEARCH_SECURE" ], "group": "middleware.vdb.open-search", "type": "boolean", "description": "Whether to use SSL/TLS encrypted connection for OpenSearch (True for HTTPS, False for HTTP)", "code_default": false, "required": false, "applies_when": "VECTOR_STORE=opensearch" }, { "name": "OPENSEARCH_USER", "accepted_names": [ "OPENSEARCH_USER" ], "group": "middleware.vdb.open-search", "type": "string | null", "description": "Username for authenticating with OpenSearch", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=opensearch" }, { "name": "OPENSEARCH_VERIFY_CERTS", "accepted_names": [ "OPENSEARCH_VERIFY_CERTS" ], "group": "middleware.vdb.open-search", "type": "boolean", "description": "Whether to verify SSL certificates for HTTPS connections (recommended to set True in production)", "code_default": true, "required": false, "applies_when": "VECTOR_STORE=opensearch" }, { "name": "ORACLE_CONFIG_DIR", "accepted_names": [ "ORACLE_CONFIG_DIR" ], "group": "middleware.vdb.oracle", "type": "string | null", "description": "Directory containing the tnsnames.ora configuration file. Only used in thin mode connection", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=oracle" }, { "name": "ORACLE_DSN", "accepted_names": [ "ORACLE_DSN" ], "group": "middleware.vdb.oracle", "type": "string | null", "description": "Oracle database connection string. For traditional database, use format 'host:port/service_name'. For autonomous database, use the service name from tnsnames.ora in the wallet", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=oracle" }, { "name": "ORACLE_IS_AUTONOMOUS", "accepted_names": [ "ORACLE_IS_AUTONOMOUS" ], "group": "middleware.vdb.oracle", "type": "boolean", "description": "Flag indicating whether connecting to Oracle Autonomous Database", "code_default": false, "required": false, "applies_when": "VECTOR_STORE=oracle" }, { "name": "ORACLE_PASSWORD", "accepted_names": [ "ORACLE_PASSWORD" ], "group": "middleware.vdb.oracle", "type": "string | null", "description": "Password for authenticating with the Oracle database", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=oracle" }, { "name": "ORACLE_USER", "accepted_names": [ "ORACLE_USER" ], "group": "middleware.vdb.oracle", "type": "string | null", "description": "Username for authenticating with the Oracle database", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=oracle" }, { "name": "ORACLE_WALLET_LOCATION", "accepted_names": [ "ORACLE_WALLET_LOCATION" ], "group": "middleware.vdb.oracle", "type": "string | null", "description": "Oracle wallet directory path containing the wallet files for secure connection", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=oracle" }, { "name": "ORACLE_WALLET_PASSWORD", "accepted_names": [ "ORACLE_WALLET_PASSWORD" ], "group": "middleware.vdb.oracle", "type": "string | null", "description": "Password to decrypt the Oracle wallet, if it is encrypted", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=oracle" }, { "name": "OTEL_BATCH_EXPORT_SCHEDULE_DELAY", "accepted_names": [ "OTEL_BATCH_EXPORT_SCHEDULE_DELAY" ], "group": "observability.otel.o-tel", "type": "integer", "description": "Batch export schedule delay in milliseconds", "code_default": 5000, "required": false, "applies_when": null }, { "name": "OTEL_BATCH_EXPORT_TIMEOUT", "accepted_names": [ "OTEL_BATCH_EXPORT_TIMEOUT" ], "group": "observability.otel.o-tel", "type": "integer", "description": "Batch export timeout in milliseconds", "code_default": 10000, "required": false, "applies_when": null }, { "name": "OTEL_EXPORTER_OTLP_PROTOCOL", "accepted_names": [ "OTEL_EXPORTER_OTLP_PROTOCOL" ], "group": "observability.otel.o-tel", "type": "string", "description": "OTLP exporter protocol ('grpc' or 'http')", "code_default": "http", "required": false, "applies_when": null }, { "name": "OTEL_EXPORTER_TYPE", "accepted_names": [ "OTEL_EXPORTER_TYPE" ], "group": "observability.otel.o-tel", "type": "string", "description": "OTEL exporter type", "code_default": "otlp", "required": false, "applies_when": null }, { "name": "OTEL_MAX_EXPORT_BATCH_SIZE", "accepted_names": [ "OTEL_MAX_EXPORT_BATCH_SIZE" ], "group": "observability.otel.o-tel", "type": "integer", "description": "Maximum export batch size", "code_default": 512, "required": false, "applies_when": null }, { "name": "OTEL_MAX_QUEUE_SIZE", "accepted_names": [ "OTEL_MAX_QUEUE_SIZE" ], "group": "observability.otel.o-tel", "type": "integer", "description": "Maximum queue size for the batch span processor", "code_default": 2048, "required": false, "applies_when": null }, { "name": "OTEL_METRIC_EXPORT_INTERVAL", "accepted_names": [ "OTEL_METRIC_EXPORT_INTERVAL" ], "group": "observability.otel.o-tel", "type": "integer", "description": "Metric export interval in milliseconds", "code_default": 60000, "required": false, "applies_when": null }, { "name": "OTEL_METRIC_EXPORT_TIMEOUT", "accepted_names": [ "OTEL_METRIC_EXPORT_TIMEOUT" ], "group": "observability.otel.o-tel", "type": "integer", "description": "Metric export timeout in milliseconds", "code_default": 30000, "required": false, "applies_when": null }, { "name": "OTEL_SAMPLING_RATE", "accepted_names": [ "OTEL_SAMPLING_RATE" ], "group": "observability.otel.o-tel", "type": "float", "description": "Sampling rate for traces (0.0 to 1.0)", "code_default": 0.1, "required": false, "applies_when": null }, { "name": "OTLP_API_KEY", "accepted_names": [ "OTLP_API_KEY" ], "group": "observability.otel.o-tel", "type": "string", "description": "OTLP API key", "code_default": "", "required": false, "applies_when": null }, { "name": "OTLP_BASE_ENDPOINT", "accepted_names": [ "OTLP_BASE_ENDPOINT" ], "group": "observability.otel.o-tel", "type": "string", "description": "OTLP base endpoint", "code_default": "http://localhost:4318", "required": false, "applies_when": null }, { "name": "OTLP_METRIC_ENDPOINT", "accepted_names": [ "OTLP_METRIC_ENDPOINT" ], "group": "observability.otel.o-tel", "type": "string", "description": "OTLP metric endpoint", "code_default": "", "required": false, "applies_when": null }, { "name": "OTLP_TRACE_ENDPOINT", "accepted_names": [ "OTLP_TRACE_ENDPOINT" ], "group": "observability.otel.o-tel", "type": "string", "description": "OTLP trace endpoint", "code_default": "", "required": false, "applies_when": null }, { "name": "OWNER_TRANSFER_LOCKOUT_DURATION", "accepted_names": [ "OWNER_TRANSFER_LOCKOUT_DURATION" ], "group": "feature.auth", "type": "integer", "description": "Time (in seconds) a user must wait before retrying owner transfer after exceeding the rate limit.", "code_default": 86400, "required": false, "applies_when": null }, { "name": "OWNER_TRANSFER_TOKEN_EXPIRY_MINUTES", "accepted_names": [ "OWNER_TRANSFER_TOKEN_EXPIRY_MINUTES" ], "group": "feature.security", "type": "integer", "description": "Duration in minutes for which a owner transfer token remains valid", "code_default": 5, "required": false, "applies_when": null }, { "name": "PGVECTOR_DATABASE", "accepted_names": [ "PGVECTOR_DATABASE" ], "group": "middleware.vdb.p-g-vector", "type": "string | null", "description": "Name of the PostgreSQL database to connect to", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=pgvector" }, { "name": "PGVECTOR_HOST", "accepted_names": [ "PGVECTOR_HOST" ], "group": "middleware.vdb.p-g-vector", "type": "string | null", "description": "Hostname or IP address of the PostgreSQL server with PGVector extension (e.g., 'localhost')", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=pgvector" }, { "name": "PGVECTOR_MAX_CONNECTION", "accepted_names": [ "PGVECTOR_MAX_CONNECTION" ], "group": "middleware.vdb.p-g-vector", "type": "integer", "description": "Max connection of the PostgreSQL database", "code_default": 5, "required": false, "applies_when": "VECTOR_STORE=pgvector" }, { "name": "PGVECTOR_MIN_CONNECTION", "accepted_names": [ "PGVECTOR_MIN_CONNECTION" ], "group": "middleware.vdb.p-g-vector", "type": "integer", "description": "Min connection of the PostgreSQL database", "code_default": 1, "required": false, "applies_when": "VECTOR_STORE=pgvector" }, { "name": "PGVECTOR_PASSWORD", "accepted_names": [ "PGVECTOR_PASSWORD" ], "group": "middleware.vdb.p-g-vector", "type": "string | null", "description": "Password for authenticating with the PostgreSQL database", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=pgvector" }, { "name": "PGVECTOR_PG_BIGM", "accepted_names": [ "PGVECTOR_PG_BIGM" ], "group": "middleware.vdb.p-g-vector", "type": "boolean", "description": "Whether to use pg_bigm module for full text search", "code_default": false, "required": false, "applies_when": "VECTOR_STORE=pgvector" }, { "name": "PGVECTOR_PORT", "accepted_names": [ "PGVECTOR_PORT" ], "group": "middleware.vdb.p-g-vector", "type": "integer", "description": "Port number on which the PostgreSQL server is listening (default is 5433)", "code_default": 5433, "required": false, "applies_when": "VECTOR_STORE=pgvector" }, { "name": "PGVECTOR_USER", "accepted_names": [ "PGVECTOR_USER" ], "group": "middleware.vdb.p-g-vector", "type": "string | null", "description": "Username for authenticating with the PostgreSQL database", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=pgvector" }, { "name": "PGVECTO_RS_DATABASE", "accepted_names": [ "PGVECTO_RS_DATABASE" ], "group": "middleware.vdb.p-g-vecto-r-s", "type": "string | null", "description": "Name of the PostgreSQL database with PGVecto.RS extension to connect to", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=pgvectors" }, { "name": "PGVECTO_RS_HOST", "accepted_names": [ "PGVECTO_RS_HOST" ], "group": "middleware.vdb.p-g-vecto-r-s", "type": "string | null", "description": "Hostname or IP address of the PostgreSQL server with PGVecto.RS extension (e.g., 'localhost')", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=pgvectors" }, { "name": "PGVECTO_RS_PASSWORD", "accepted_names": [ "PGVECTO_RS_PASSWORD" ], "group": "middleware.vdb.p-g-vecto-r-s", "type": "string | null", "description": "Password for authenticating with the PostgreSQL database using PGVecto.RS", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=pgvectors" }, { "name": "PGVECTO_RS_PORT", "accepted_names": [ "PGVECTO_RS_PORT" ], "group": "middleware.vdb.p-g-vecto-r-s", "type": "integer", "description": "Port number on which the PostgreSQL server with PGVecto.RS is listening (default is 5431)", "code_default": 5431, "required": false, "applies_when": "VECTOR_STORE=pgvectors" }, { "name": "PGVECTO_RS_USER", "accepted_names": [ "PGVECTO_RS_USER" ], "group": "middleware.vdb.p-g-vecto-r-s", "type": "string | null", "description": "Username for authenticating with the PostgreSQL database using PGVecto.RS", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=pgvectors" }, { "name": "PLAN_PRO_CLEAN_DAY_SETTING", "accepted_names": [ "PLAN_PRO_CLEAN_DAY_SETTING" ], "group": "feature.data-set", "type": "integer", "description": "Interval in days for dataset cleanup operations - plan: pro and team", "code_default": 7, "required": false, "applies_when": null }, { "name": "PLAN_SANDBOX_CLEAN_DAY_SETTING", "accepted_names": [ "PLAN_SANDBOX_CLEAN_DAY_SETTING" ], "group": "feature.data-set", "type": "integer", "description": "Interval in days for dataset cleanup operations - plan: sandbox", "code_default": 30, "required": false, "applies_when": null }, { "name": "PLAN_SANDBOX_CLEAN_MESSAGE_DAY_SETTING", "accepted_names": [ "PLAN_SANDBOX_CLEAN_MESSAGE_DAY_SETTING" ], "group": "feature.data-set", "type": "integer", "description": "Interval in days for message cleanup operations - plan: sandbox", "code_default": 30, "required": false, "applies_when": null }, { "name": "PLUGIN_BASED_TOKEN_COUNTING_ENABLED", "accepted_names": [ "PLUGIN_BASED_TOKEN_COUNTING_ENABLED" ], "group": "feature.model-load-balance", "type": "boolean", "description": "Enable or disable plugin based token counting. If disabled, token counting will return 0.", "code_default": false, "required": false, "applies_when": null }, { "name": "PLUGIN_DAEMON_KEY", "accepted_names": [ "PLUGIN_DAEMON_KEY" ], "group": "feature.plugin", "type": "string", "description": "Plugin API key", "code_default": "plugin-api-key", "required": false, "applies_when": null }, { "name": "PLUGIN_DAEMON_TIMEOUT", "accepted_names": [ "PLUGIN_DAEMON_TIMEOUT" ], "group": "feature.plugin", "type": "typing.Annotated[float, Gt(gt=0)] | null", "description": "Timeout in seconds for requests to the plugin daemon (set to None to disable)", "code_default": 600.0, "required": false, "applies_when": null }, { "name": "PLUGIN_DAEMON_URL", "accepted_names": [ "PLUGIN_DAEMON_URL" ], "group": "feature.plugin", "type": "HttpUrl", "description": "Plugin API URL", "code_default": "http://localhost:5002/", "required": false, "applies_when": null }, { "name": "PLUGIN_MAX_BUNDLE_SIZE", "accepted_names": [ "PLUGIN_MAX_BUNDLE_SIZE" ], "group": "feature.plugin", "type": "integer", "description": "Maximum allowed size for plugin bundles in bytes", "code_default": 188743680, "required": false, "applies_when": null }, { "name": "PLUGIN_MAX_FILE_SIZE", "accepted_names": [ "PLUGIN_MAX_FILE_SIZE" ], "group": "feature.plugin", "type": "integer", "description": "Maximum allowed size (bytes) for plugin-generated files", "code_default": 52428800, "required": false, "applies_when": null }, { "name": "PLUGIN_MAX_PACKAGE_SIZE", "accepted_names": [ "PLUGIN_MAX_PACKAGE_SIZE" ], "group": "feature.plugin", "type": "integer", "description": "Maximum allowed size for plugin packages in bytes", "code_default": 15728640, "required": false, "applies_when": null }, { "name": "PLUGIN_MODEL_SCHEMA_CACHE_TTL", "accepted_names": [ "PLUGIN_MODEL_SCHEMA_CACHE_TTL" ], "group": "feature.plugin", "type": "integer", "description": "TTL in seconds for caching plugin model schemas in Redis", "code_default": 3600, "required": false, "applies_when": null }, { "name": "PLUGIN_REMOTE_INSTALL_HOST", "accepted_names": [ "PLUGIN_REMOTE_INSTALL_HOST" ], "group": "feature.plugin", "type": "string", "description": "Plugin Remote Install Host", "code_default": "localhost", "required": false, "applies_when": null }, { "name": "PLUGIN_REMOTE_INSTALL_PORT", "accepted_names": [ "PLUGIN_REMOTE_INSTALL_PORT" ], "group": "feature.plugin", "type": "integer", "description": "Plugin Remote Install Port", "code_default": 5003, "required": false, "applies_when": null }, { "name": "POSITION_PROVIDER_EXCLUDES", "accepted_names": [ "POSITION_PROVIDER_EXCLUDES" ], "group": "feature.position", "type": "string", "description": "Comma-separated list of excluded model providers", "code_default": "", "required": false, "applies_when": null }, { "name": "POSITION_PROVIDER_INCLUDES", "accepted_names": [ "POSITION_PROVIDER_INCLUDES" ], "group": "feature.position", "type": "string", "description": "Comma-separated list of included model providers", "code_default": "", "required": false, "applies_when": null }, { "name": "POSITION_PROVIDER_PINS", "accepted_names": [ "POSITION_PROVIDER_PINS" ], "group": "feature.position", "type": "string", "description": "Comma-separated list of pinned model providers", "code_default": "", "required": false, "applies_when": null }, { "name": "POSITION_TOOL_EXCLUDES", "accepted_names": [ "POSITION_TOOL_EXCLUDES" ], "group": "feature.position", "type": "string", "description": "Comma-separated list of excluded tools", "code_default": "", "required": false, "applies_when": null }, { "name": "POSITION_TOOL_INCLUDES", "accepted_names": [ "POSITION_TOOL_INCLUDES" ], "group": "feature.position", "type": "string", "description": "Comma-separated list of included tools", "code_default": "", "required": false, "applies_when": null }, { "name": "POSITION_TOOL_PINS", "accepted_names": [ "POSITION_TOOL_PINS" ], "group": "feature.position", "type": "string", "description": "Comma-separated list of pinned tools", "code_default": "", "required": false, "applies_when": null }, { "name": "PUBSUB_REDIS_CHANNEL_TYPE", "accepted_names": [ "EVENT_BUS_REDIS_CHANNEL_TYPE", "PUBSUB_REDIS_CHANNEL_TYPE" ], "group": "middleware.cache.redis-pub-sub", "type": "literal['pubsub', 'sharded', 'streams']", "description": "Event transport type. Options are:\n\n - pubsub: normal Pub/Sub (at-most-once)\n - sharded: sharded Pub/Sub (at-most-once)\n - streams: Redis Streams (at-least-once, recommended to avoid subscriber races)\n\nNote: Before enabling 'streams' in production, estimate your expected event volume and retention needs.\nConfigure Redis memory limits and stream trimming appropriately (e.g., MAXLEN and key expiry) to reduce\nthe risk of data loss from Redis auto-eviction under memory pressure.\nAlso accepts ENV: EVENT_BUS_REDIS_CHANNEL_TYPE.", "code_default": "pubsub", "required": false, "applies_when": null }, { "name": "PUBSUB_REDIS_URL", "accepted_names": [ "EVENT_BUS_REDIS_URL", "PUBSUB_REDIS_URL" ], "group": "middleware.cache.redis-pub-sub", "type": "string | null", "description": "Redis connection URL for streaming events between API and celery worker; defaults to URL constructed from `REDIS_*` configurations. Also accepts ENV: EVENT_BUS_REDIS_URL.", "code_default": null, "required": false, "applies_when": null }, { "name": "PUBSUB_REDIS_USE_CLUSTERS", "accepted_names": [ "EVENT_BUS_REDIS_USE_CLUSTERS", "PUBSUB_REDIS_USE_CLUSTERS" ], "group": "middleware.cache.redis-pub-sub", "type": "boolean", "description": "Enable Redis Cluster mode for pub/sub or streams transport. Recommended for large deployments. Also accepts ENV: EVENT_BUS_REDIS_USE_CLUSTERS.", "code_default": false, "required": false, "applies_when": null }, { "name": "PUBSUB_STREAMS_RETENTION_SECONDS", "accepted_names": [ "EVENT_BUS_STREAMS_RETENTION_SECONDS", "PUBSUB_STREAMS_RETENTION_SECONDS" ], "group": "middleware.cache.redis-pub-sub", "type": "integer", "description": "When using 'streams', expire each stream key this many seconds after the last event is published. Also accepts ENV: EVENT_BUS_STREAMS_RETENTION_SECONDS.", "code_default": 600, "required": false, "applies_when": null }, { "name": "QDRANT_API_KEY", "accepted_names": [ "QDRANT_API_KEY" ], "group": "middleware.vdb.qdrant", "type": "string | null", "description": "API key for authenticating with the Qdrant server", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=qdrant" }, { "name": "QDRANT_CLIENT_TIMEOUT", "accepted_names": [ "QDRANT_CLIENT_TIMEOUT" ], "group": "middleware.vdb.qdrant", "type": "integer", "description": "Timeout in seconds for Qdrant client operations (default is 20 seconds)", "code_default": 20, "required": false, "applies_when": "VECTOR_STORE=qdrant" }, { "name": "QDRANT_GRPC_ENABLED", "accepted_names": [ "QDRANT_GRPC_ENABLED" ], "group": "middleware.vdb.qdrant", "type": "boolean", "description": "Whether to enable gRPC support for Qdrant connection (True for gRPC, False for HTTP)", "code_default": false, "required": false, "applies_when": "VECTOR_STORE=qdrant" }, { "name": "QDRANT_GRPC_PORT", "accepted_names": [ "QDRANT_GRPC_PORT" ], "group": "middleware.vdb.qdrant", "type": "integer", "description": "Port number for gRPC connection to Qdrant server (default is 6334)", "code_default": 6334, "required": false, "applies_when": "VECTOR_STORE=qdrant" }, { "name": "QDRANT_REPLICATION_FACTOR", "accepted_names": [ "QDRANT_REPLICATION_FACTOR" ], "group": "middleware.vdb.qdrant", "type": "integer", "description": "Replication factor for Qdrant collections (default is 1)", "code_default": 1, "required": false, "applies_when": "VECTOR_STORE=qdrant" }, { "name": "QDRANT_URL", "accepted_names": [ "QDRANT_URL" ], "group": "middleware.vdb.qdrant", "type": "string | null", "description": "URL of the Qdrant server (e.g., 'http://localhost:6333' or 'https://qdrant.example.com')", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=qdrant" }, { "name": "QUEUE_MONITOR_ALERT_EMAILS", "accepted_names": [ "QUEUE_MONITOR_ALERT_EMAILS" ], "group": "middleware.dataset-queue-monitor", "type": "string | null", "description": "Emails for dataset queue monitor alert, separated by commas", "code_default": null, "required": false, "applies_when": null }, { "name": "QUEUE_MONITOR_INTERVAL", "accepted_names": [ "QUEUE_MONITOR_INTERVAL" ], "group": "middleware.dataset-queue-monitor", "type": "typing.Annotated[float, Ge(ge=0)] | null", "description": "Interval for dataset queue monitor in minutes", "code_default": 30, "required": false, "applies_when": null }, { "name": "QUEUE_MONITOR_THRESHOLD", "accepted_names": [ "QUEUE_MONITOR_THRESHOLD" ], "group": "middleware.dataset-queue-monitor", "type": "typing.Annotated[int, Ge(ge=0)] | null", "description": "Threshold for dataset queue monitor", "code_default": 200, "required": false, "applies_when": null }, { "name": "REDIS_CLUSTERS", "accepted_names": [ "REDIS_CLUSTERS" ], "group": "middleware.cache.redis", "type": "string | null", "description": "Comma-separated list of Redis Clusters nodes (host:port)", "code_default": null, "required": false, "applies_when": null }, { "name": "REDIS_CLUSTERS_PASSWORD", "accepted_names": [ "REDIS_CLUSTERS_PASSWORD" ], "group": "middleware.cache.redis", "type": "string | null", "description": "Password for Redis Clusters authentication (if required)", "code_default": null, "required": false, "applies_when": null }, { "name": "REDIS_DB", "accepted_names": [ "REDIS_DB" ], "group": "middleware.cache.redis", "type": "integer", "description": "Redis database number to use (0-15)", "code_default": 0, "required": false, "applies_when": null }, { "name": "REDIS_ENABLE_CLIENT_SIDE_CACHE", "accepted_names": [ "REDIS_ENABLE_CLIENT_SIDE_CACHE" ], "group": "middleware.cache.redis", "type": "boolean", "description": "Enable client side cache in redis", "code_default": false, "required": false, "applies_when": null }, { "name": "REDIS_HEALTH_CHECK_INTERVAL", "accepted_names": [ "REDIS_HEALTH_CHECK_INTERVAL" ], "group": "middleware.cache.redis", "type": "integer", "description": "Interval in seconds between Redis connection health checks (0 to disable)", "code_default": 30, "required": false, "applies_when": null }, { "name": "REDIS_HOST", "accepted_names": [ "REDIS_HOST" ], "group": "middleware.cache.redis", "type": "string", "description": "Hostname or IP address of the Redis server", "code_default": "localhost", "required": false, "applies_when": null }, { "name": "REDIS_KEY_PREFIX", "accepted_names": [ "REDIS_KEY_PREFIX" ], "group": "middleware.cache.redis", "type": "string", "description": "Optional global prefix for Redis keys, topics, and transport artifacts", "code_default": "", "required": false, "applies_when": null }, { "name": "REDIS_MAX_CONNECTIONS", "accepted_names": [ "REDIS_MAX_CONNECTIONS" ], "group": "middleware.cache.redis", "type": "typing.Annotated[int, Gt(gt=0)] | null", "description": "Maximum connections in the Redis connection pool (unset for library default)", "code_default": null, "required": false, "applies_when": null }, { "name": "REDIS_PASSWORD", "accepted_names": [ "REDIS_PASSWORD" ], "group": "middleware.cache.redis", "type": "string | null", "description": "Password for Redis authentication (if required)", "code_default": null, "required": false, "applies_when": null }, { "name": "REDIS_PORT", "accepted_names": [ "REDIS_PORT" ], "group": "middleware.cache.redis", "type": "integer", "description": "Port number on which the Redis server is listening", "code_default": 6379, "required": false, "applies_when": null }, { "name": "REDIS_RETRY_BACKOFF_BASE", "accepted_names": [ "REDIS_RETRY_BACKOFF_BASE" ], "group": "middleware.cache.redis", "type": "float", "description": "Base delay in seconds for exponential backoff between retries", "code_default": 1.0, "required": false, "applies_when": null }, { "name": "REDIS_RETRY_BACKOFF_CAP", "accepted_names": [ "REDIS_RETRY_BACKOFF_CAP" ], "group": "middleware.cache.redis", "type": "float", "description": "Maximum backoff delay in seconds between retries", "code_default": 10.0, "required": false, "applies_when": null }, { "name": "REDIS_RETRY_RETRIES", "accepted_names": [ "REDIS_RETRY_RETRIES" ], "group": "middleware.cache.redis", "type": "integer", "description": "Maximum number of retries per Redis command on transient failures (ConnectionError, TimeoutError, socket.timeout)", "code_default": 3, "required": false, "applies_when": null }, { "name": "REDIS_SENTINELS", "accepted_names": [ "REDIS_SENTINELS" ], "group": "middleware.cache.redis", "type": "string | null", "description": "Comma-separated list of Redis Sentinel nodes (host:port)", "code_default": null, "required": false, "applies_when": null }, { "name": "REDIS_SENTINEL_PASSWORD", "accepted_names": [ "REDIS_SENTINEL_PASSWORD" ], "group": "middleware.cache.redis", "type": "string | null", "description": "Password for Redis Sentinel authentication (if required)", "code_default": null, "required": false, "applies_when": null }, { "name": "REDIS_SENTINEL_SERVICE_NAME", "accepted_names": [ "REDIS_SENTINEL_SERVICE_NAME" ], "group": "middleware.cache.redis", "type": "string | null", "description": "Name of the Redis Sentinel service to monitor", "code_default": null, "required": false, "applies_when": null }, { "name": "REDIS_SENTINEL_SOCKET_TIMEOUT", "accepted_names": [ "REDIS_SENTINEL_SOCKET_TIMEOUT" ], "group": "middleware.cache.redis", "type": "typing.Annotated[float, Gt(gt=0)] | null", "description": "Socket timeout in seconds for Redis Sentinel connections", "code_default": 0.1, "required": false, "applies_when": null }, { "name": "REDIS_SENTINEL_USERNAME", "accepted_names": [ "REDIS_SENTINEL_USERNAME" ], "group": "middleware.cache.redis", "type": "string | null", "description": "Username for Redis Sentinel authentication (if required)", "code_default": null, "required": false, "applies_when": null }, { "name": "REDIS_SERIALIZATION_PROTOCOL", "accepted_names": [ "REDIS_SERIALIZATION_PROTOCOL" ], "group": "middleware.cache.redis", "type": "integer", "description": "Redis serialization protocol (RESP) version", "code_default": 3, "required": false, "applies_when": null }, { "name": "REDIS_SOCKET_CONNECT_TIMEOUT", "accepted_names": [ "REDIS_SOCKET_CONNECT_TIMEOUT" ], "group": "middleware.cache.redis", "type": "typing.Annotated[float, Gt(gt=0)] | null", "description": "Socket timeout in seconds for Redis connection establishment", "code_default": 5.0, "required": false, "applies_when": null }, { "name": "REDIS_SOCKET_TIMEOUT", "accepted_names": [ "REDIS_SOCKET_TIMEOUT" ], "group": "middleware.cache.redis", "type": "typing.Annotated[float, Gt(gt=0)] | null", "description": "Socket timeout in seconds for Redis read/write operations", "code_default": 5.0, "required": false, "applies_when": null }, { "name": "REDIS_SSL_CA_CERTS", "accepted_names": [ "REDIS_SSL_CA_CERTS" ], "group": "middleware.cache.redis", "type": "string | null", "description": "Path to the CA certificate file for SSL verification", "code_default": null, "required": false, "applies_when": null }, { "name": "REDIS_SSL_CERTFILE", "accepted_names": [ "REDIS_SSL_CERTFILE" ], "group": "middleware.cache.redis", "type": "string | null", "description": "Path to the client certificate file for SSL authentication", "code_default": null, "required": false, "applies_when": null }, { "name": "REDIS_SSL_CERT_REQS", "accepted_names": [ "REDIS_SSL_CERT_REQS" ], "group": "middleware.cache.redis", "type": "string", "description": "SSL certificate requirements (CERT_NONE, CERT_OPTIONAL, CERT_REQUIRED)", "code_default": "CERT_NONE", "required": false, "applies_when": null }, { "name": "REDIS_SSL_KEYFILE", "accepted_names": [ "REDIS_SSL_KEYFILE" ], "group": "middleware.cache.redis", "type": "string | null", "description": "Path to the client private key file for SSL authentication", "code_default": null, "required": false, "applies_when": null }, { "name": "REDIS_USERNAME", "accepted_names": [ "REDIS_USERNAME" ], "group": "middleware.cache.redis", "type": "string | null", "description": "Username for Redis authentication (if required)", "code_default": null, "required": false, "applies_when": null }, { "name": "REDIS_USE_CLUSTERS", "accepted_names": [ "REDIS_USE_CLUSTERS" ], "group": "middleware.cache.redis", "type": "boolean", "description": "Enable Redis Clusters mode for high availability", "code_default": false, "required": false, "applies_when": null }, { "name": "REDIS_USE_SENTINEL", "accepted_names": [ "REDIS_USE_SENTINEL" ], "group": "middleware.cache.redis", "type": "boolean | null", "description": "Enable Redis Sentinel mode for high availability", "code_default": false, "required": false, "applies_when": null }, { "name": "REDIS_USE_SSL", "accepted_names": [ "REDIS_USE_SSL" ], "group": "middleware.cache.redis", "type": "boolean", "description": "Enable SSL/TLS for the Redis connection", "code_default": false, "required": false, "applies_when": null }, { "name": "REFRESH_TOKEN_EXPIRE_DAYS", "accepted_names": [ "REFRESH_TOKEN_EXPIRE_DAYS" ], "group": "feature.auth", "type": "float", "description": "Expiration time for refresh tokens in days", "code_default": 30, "required": false, "applies_when": null }, { "name": "RELYT_DATABASE", "accepted_names": [ "RELYT_DATABASE" ], "group": "middleware.vdb.relyt", "type": "string | null", "description": "Name of the Relyt database to connect to (default is 'default')", "code_default": "default", "required": false, "applies_when": "VECTOR_STORE=relyt" }, { "name": "RELYT_HOST", "accepted_names": [ "RELYT_HOST" ], "group": "middleware.vdb.relyt", "type": "string | null", "description": "Hostname or IP address of the Relyt server (e.g., 'localhost' or 'relyt.example.com')", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=relyt" }, { "name": "RELYT_PASSWORD", "accepted_names": [ "RELYT_PASSWORD" ], "group": "middleware.vdb.relyt", "type": "string | null", "description": "Password for authenticating with the Relyt database", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=relyt" }, { "name": "RELYT_PORT", "accepted_names": [ "RELYT_PORT" ], "group": "middleware.vdb.relyt", "type": "integer", "description": "Port number on which the Relyt server is listening (default is 9200)", "code_default": 9200, "required": false, "applies_when": "VECTOR_STORE=relyt" }, { "name": "RELYT_USER", "accepted_names": [ "RELYT_USER" ], "group": "middleware.vdb.relyt", "type": "string | null", "description": "Username for authenticating with the Relyt database", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=relyt" }, { "name": "REMOTE_SETTINGS_SOURCE_NAME", "accepted_names": [ "REMOTE_SETTINGS_SOURCE_NAME" ], "group": "remote_settings_sources.remote-settings-source", "type": "enum | string", "description": "name of remote config source", "code_default": "", "required": false, "applies_when": null }, { "name": "RESEND_API_KEY", "accepted_names": [ "RESEND_API_KEY" ], "group": "feature.mail", "type": "string | null", "description": "API key for Resend email service", "code_default": null, "required": false, "applies_when": null }, { "name": "RESEND_API_URL", "accepted_names": [ "RESEND_API_URL" ], "group": "feature.mail", "type": "string | null", "description": "API URL for Resend email service", "code_default": null, "required": false, "applies_when": null }, { "name": "RESET_PASSWORD_TOKEN_EXPIRY_MINUTES", "accepted_names": [ "RESET_PASSWORD_TOKEN_EXPIRY_MINUTES" ], "group": "feature.security", "type": "integer", "description": "Duration in minutes for which a password reset token remains valid", "code_default": 5, "required": false, "applies_when": null }, { "name": "RESPECT_XFORWARD_HEADERS_ENABLED", "accepted_names": [ "RESPECT_XFORWARD_HEADERS_ENABLED" ], "group": "feature.http", "type": "boolean", "description": "Enable handling of X-Forwarded-For, X-Forwarded-Proto, and X-Forwarded-Port headers when the app is behind a single trusted reverse proxy.", "code_default": false, "required": false, "applies_when": null }, { "name": "RETRIEVAL_SERVICE_EXECUTORS", "accepted_names": [ "RETRIEVAL_SERVICE_EXECUTORS" ], "group": "middleware.database", "type": "integer", "description": "Number of processes for the retrieval service, default to CPU cores.", "code_default": 10, "required": false, "applies_when": null }, { "name": "S3_ACCESS_KEY", "accepted_names": [ "S3_ACCESS_KEY" ], "group": "middleware.storage.s3-storage", "type": "string | null", "description": "Access key ID for authenticating with the S3 service", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=s3" }, { "name": "S3_ADDRESS_STYLE", "accepted_names": [ "S3_ADDRESS_STYLE" ], "group": "middleware.storage.s3-storage", "type": "literal['auto', 'virtual', 'path']", "description": "S3 addressing style: 'auto', 'path', or 'virtual'", "code_default": "auto", "required": false, "applies_when": "STORAGE_TYPE=s3" }, { "name": "S3_BUCKET_NAME", "accepted_names": [ "S3_BUCKET_NAME" ], "group": "middleware.storage.s3-storage", "type": "string | null", "description": "Name of the S3 bucket to store and retrieve objects", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=s3" }, { "name": "S3_ENDPOINT", "accepted_names": [ "S3_ENDPOINT" ], "group": "middleware.storage.s3-storage", "type": "string | null", "description": "URL of the S3-compatible storage endpoint (e.g., 'https://s3.amazonaws.com')", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=s3" }, { "name": "S3_REGION", "accepted_names": [ "S3_REGION" ], "group": "middleware.storage.s3-storage", "type": "string | null", "description": "Region where the S3 bucket is located (e.g., 'us-east-1')", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=s3" }, { "name": "S3_SECRET_KEY", "accepted_names": [ "S3_SECRET_KEY" ], "group": "middleware.storage.s3-storage", "type": "string | null", "description": "Secret access key for authenticating with the S3 service", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=s3" }, { "name": "S3_USE_AWS_MANAGED_IAM", "accepted_names": [ "S3_USE_AWS_MANAGED_IAM" ], "group": "middleware.storage.s3-storage", "type": "boolean", "description": "Use AWS managed IAM roles for authentication instead of access/secret keys", "code_default": false, "required": false, "applies_when": "STORAGE_TYPE=s3" }, { "name": "SANDBOX_EXPIRED_RECORDS_CLEAN_BATCH_MAX_INTERVAL", "accepted_names": [ "SANDBOX_EXPIRED_RECORDS_CLEAN_BATCH_MAX_INTERVAL" ], "group": "feature.sandbox-expired-records-clean", "type": "integer", "description": "Maximum interval in milliseconds between batches", "code_default": 200, "required": false, "applies_when": null }, { "name": "SANDBOX_EXPIRED_RECORDS_CLEAN_BATCH_SIZE", "accepted_names": [ "SANDBOX_EXPIRED_RECORDS_CLEAN_BATCH_SIZE" ], "group": "feature.sandbox-expired-records-clean", "type": "integer", "description": "Maximum number of records to process in each batch", "code_default": 1000, "required": false, "applies_when": null }, { "name": "SANDBOX_EXPIRED_RECORDS_CLEAN_GRACEFUL_PERIOD", "accepted_names": [ "SANDBOX_EXPIRED_RECORDS_CLEAN_GRACEFUL_PERIOD" ], "group": "feature.sandbox-expired-records-clean", "type": "integer", "description": "Graceful period in days for sandbox records clean after subscription expiration", "code_default": 21, "required": false, "applies_when": null }, { "name": "SANDBOX_EXPIRED_RECORDS_CLEAN_TASK_LOCK_TTL", "accepted_names": [ "SANDBOX_EXPIRED_RECORDS_CLEAN_TASK_LOCK_TTL" ], "group": "feature.sandbox-expired-records-clean", "type": "integer", "description": "Lock TTL for sandbox expired records clean task in seconds", "code_default": 90000, "required": false, "applies_when": null }, { "name": "SANDBOX_EXPIRED_RECORDS_RETENTION_DAYS", "accepted_names": [ "SANDBOX_EXPIRED_RECORDS_RETENTION_DAYS" ], "group": "feature.sandbox-expired-records-clean", "type": "integer", "description": "Retention days for sandbox expired workflow_run records and message records", "code_default": 30, "required": false, "applies_when": null }, { "name": "SCARF_NO_ANALYTICS", "accepted_names": [ "SCARF_NO_ANALYTICS" ], "group": "feature.rag-etl", "type": "string | null", "description": "This is about whether to disable Scarf analytics in Unstructured library.", "code_default": "false", "required": false, "applies_when": null }, { "name": "SECRET_KEY", "accepted_names": [ "SECRET_KEY" ], "group": "feature.security", "type": "string", "description": "Secret key for secure session cookie signing.Make sure you are changing this key for your deployment with a strong key.Generate a strong key using `openssl rand -base64 42` or set via the `SECRET_KEY` environment variable.", "code_default": "", "required": false, "applies_when": null }, { "name": "SENDGRID_API_KEY", "accepted_names": [ "SENDGRID_API_KEY" ], "group": "feature.mail", "type": "string | null", "description": "API key for SendGrid service", "code_default": null, "required": false, "applies_when": null }, { "name": "SENTRY_DSN", "accepted_names": [ "SENTRY_DSN" ], "group": "extra.sentry", "type": "string | null", "description": "Sentry Data Source Name (DSN). This is the unique identifier of your Sentry project, used to send events to the correct project.", "code_default": null, "required": false, "applies_when": null }, { "name": "SENTRY_PROFILES_SAMPLE_RATE", "accepted_names": [ "SENTRY_PROFILES_SAMPLE_RATE" ], "group": "extra.sentry", "type": "float", "description": "Sample rate for Sentry profiling. Value between 0.0 and 1.0, where 1.0 means 100% of profiles are sent to Sentry.", "code_default": 1.0, "required": false, "applies_when": null }, { "name": "SENTRY_TRACES_SAMPLE_RATE", "accepted_names": [ "SENTRY_TRACES_SAMPLE_RATE" ], "group": "extra.sentry", "type": "float", "description": "Sample rate for Sentry performance monitoring traces. Value between 0.0 and 1.0, where 1.0 means 100% of traces are sent to Sentry.", "code_default": 1.0, "required": false, "applies_when": null }, { "name": "SERVICE_API_URL", "accepted_names": [ "SERVICE_API_URL" ], "group": "feature.endpoint", "type": "string", "description": "Base URL for the service API, displayed to users for API access", "code_default": "", "required": false, "applies_when": null }, { "name": "SINGLE_CHUNK_ATTACHMENT_LIMIT", "accepted_names": [ "SINGLE_CHUNK_ATTACHMENT_LIMIT" ], "group": "feature.file-upload", "type": "integer", "description": "Maximum number of files allowed in a single chunk attachment", "code_default": 10, "required": false, "applies_when": null }, { "name": "SMTP_LOCAL_HOSTNAME", "accepted_names": [ "SMTP_LOCAL_HOSTNAME" ], "group": "feature.mail", "type": "string | null", "description": "Override the local hostname used in SMTP HELO/EHLO. Useful behind NAT or when the default hostname causes rejections.", "code_default": null, "required": false, "applies_when": null }, { "name": "SMTP_OPPORTUNISTIC_TLS", "accepted_names": [ "SMTP_OPPORTUNISTIC_TLS" ], "group": "feature.mail", "type": "boolean", "description": "Enable opportunistic TLS for SMTP connections", "code_default": false, "required": false, "applies_when": null }, { "name": "SMTP_PASSWORD", "accepted_names": [ "SMTP_PASSWORD" ], "group": "feature.mail", "type": "string | null", "description": "Password for SMTP authentication", "code_default": null, "required": false, "applies_when": null }, { "name": "SMTP_PORT", "accepted_names": [ "SMTP_PORT" ], "group": "feature.mail", "type": "integer | null", "description": "SMTP server port number", "code_default": 465, "required": false, "applies_when": null }, { "name": "SMTP_SERVER", "accepted_names": [ "SMTP_SERVER" ], "group": "feature.mail", "type": "string | null", "description": "SMTP server hostname", "code_default": null, "required": false, "applies_when": null }, { "name": "SMTP_USERNAME", "accepted_names": [ "SMTP_USERNAME" ], "group": "feature.mail", "type": "string | null", "description": "Username for SMTP authentication", "code_default": null, "required": false, "applies_when": null }, { "name": "SMTP_USE_TLS", "accepted_names": [ "SMTP_USE_TLS" ], "group": "feature.mail", "type": "boolean", "description": "Enable TLS encryption for SMTP connections", "code_default": false, "required": false, "applies_when": null }, { "name": "SQLALCHEMY_ECHO", "accepted_names": [ "SQLALCHEMY_ECHO" ], "group": "middleware.database", "type": "boolean | string", "description": "If True, SQLAlchemy will log all SQL statements.", "code_default": false, "required": false, "applies_when": null }, { "name": "SQLALCHEMY_MAX_OVERFLOW", "accepted_names": [ "SQLALCHEMY_MAX_OVERFLOW" ], "group": "middleware.database", "type": "integer", "description": "Maximum number of connections that can be created beyond the pool_size.", "code_default": 10, "required": false, "applies_when": null }, { "name": "SQLALCHEMY_POOL_PRE_PING", "accepted_names": [ "SQLALCHEMY_POOL_PRE_PING" ], "group": "middleware.database", "type": "boolean", "description": "If True, enables connection pool pre-ping feature to check connections.", "code_default": false, "required": false, "applies_when": null }, { "name": "SQLALCHEMY_POOL_RECYCLE", "accepted_names": [ "SQLALCHEMY_POOL_RECYCLE" ], "group": "middleware.database", "type": "integer", "description": "Number of seconds after which a connection is automatically recycled.", "code_default": 3600, "required": false, "applies_when": null }, { "name": "SQLALCHEMY_POOL_SIZE", "accepted_names": [ "SQLALCHEMY_POOL_SIZE" ], "group": "middleware.database", "type": "integer", "description": "Maximum number of database connections in the pool.", "code_default": 30, "required": false, "applies_when": null }, { "name": "SQLALCHEMY_POOL_TIMEOUT", "accepted_names": [ "SQLALCHEMY_POOL_TIMEOUT" ], "group": "middleware.database", "type": "integer", "description": "Number of seconds to wait for a connection from the pool before raising a timeout error.", "code_default": 30, "required": false, "applies_when": null }, { "name": "SQLALCHEMY_POOL_USE_LIFO", "accepted_names": [ "SQLALCHEMY_POOL_USE_LIFO" ], "group": "middleware.database", "type": "boolean", "description": "If True, SQLAlchemy will use last-in-first-out way to retrieve connections from pool.", "code_default": false, "required": false, "applies_when": null }, { "name": "SSRF_DEFAULT_CONNECT_TIME_OUT", "accepted_names": [ "SSRF_DEFAULT_CONNECT_TIME_OUT" ], "group": "feature.http", "type": "float", "description": "The default connect timeout period used for network requests (SSRF)", "code_default": 5, "required": false, "applies_when": null }, { "name": "SSRF_DEFAULT_MAX_RETRIES", "accepted_names": [ "SSRF_DEFAULT_MAX_RETRIES" ], "group": "feature.http", "type": "integer", "description": "Maximum number of retries for network requests (SSRF)", "code_default": 3, "required": false, "applies_when": null }, { "name": "SSRF_DEFAULT_READ_TIME_OUT", "accepted_names": [ "SSRF_DEFAULT_READ_TIME_OUT" ], "group": "feature.http", "type": "float", "description": "The default read timeout period used for network requests (SSRF)", "code_default": 5, "required": false, "applies_when": null }, { "name": "SSRF_DEFAULT_TIME_OUT", "accepted_names": [ "SSRF_DEFAULT_TIME_OUT" ], "group": "feature.http", "type": "float", "description": "The default timeout period used for network requests (SSRF)", "code_default": 5, "required": false, "applies_when": null }, { "name": "SSRF_DEFAULT_WRITE_TIME_OUT", "accepted_names": [ "SSRF_DEFAULT_WRITE_TIME_OUT" ], "group": "feature.http", "type": "float", "description": "The default write timeout period used for network requests (SSRF)", "code_default": 5, "required": false, "applies_when": null }, { "name": "SSRF_POOL_KEEPALIVE_EXPIRY", "accepted_names": [ "SSRF_POOL_KEEPALIVE_EXPIRY" ], "group": "feature.http", "type": "typing.Annotated[float, Gt(gt=0)] | null", "description": "Keep-alive expiry in seconds for idle SSRF connections (set to None to disable)", "code_default": 5.0, "required": false, "applies_when": null }, { "name": "SSRF_POOL_MAX_CONNECTIONS", "accepted_names": [ "SSRF_POOL_MAX_CONNECTIONS" ], "group": "feature.http", "type": "integer", "description": "Maximum number of concurrent connections for the SSRF HTTP client", "code_default": 100, "required": false, "applies_when": null }, { "name": "SSRF_POOL_MAX_KEEPALIVE_CONNECTIONS", "accepted_names": [ "SSRF_POOL_MAX_KEEPALIVE_CONNECTIONS" ], "group": "feature.http", "type": "integer", "description": "Maximum number of persistent keep-alive connections for the SSRF HTTP client", "code_default": 20, "required": false, "applies_when": null }, { "name": "SSRF_PROXY_ALL_URL", "accepted_names": [ "SSRF_PROXY_ALL_URL" ], "group": "feature.http", "type": "string | null", "description": "Proxy URL for HTTP or HTTPS requests to prevent Server-Side Request Forgery (SSRF)", "code_default": null, "required": false, "applies_when": null }, { "name": "SSRF_PROXY_HTTPS_URL", "accepted_names": [ "SSRF_PROXY_HTTPS_URL" ], "group": "feature.http", "type": "string | null", "description": "Proxy URL for HTTPS requests to prevent Server-Side Request Forgery (SSRF)", "code_default": null, "required": false, "applies_when": null }, { "name": "SSRF_PROXY_HTTP_URL", "accepted_names": [ "SSRF_PROXY_HTTP_URL" ], "group": "feature.http", "type": "string | null", "description": "Proxy URL for HTTP requests to prevent Server-Side Request Forgery (SSRF)", "code_default": null, "required": false, "applies_when": null }, { "name": "STORAGE_LOCAL_PATH", "accepted_names": [ "STORAGE_LOCAL_PATH" ], "group": "middleware.storage", "type": "string", "description": "Path for local storage when STORAGE_TYPE is set to 'local'.", "code_default": "storage", "required": false, "applies_when": "STORAGE_TYPE=local" }, { "name": "STORAGE_TYPE", "accepted_names": [ "STORAGE_TYPE" ], "group": "middleware.storage", "type": "literal['opendal', 's3', 'aliyun-oss', 'azure-blob', 'baidu-obs', 'clickzetta-volume', 'google-storage', 'huawei-obs', 'oci-storage', 'tencent-cos', 'volcengine-tos', 'supabase', 'local']", "description": "Type of storage to use. Options: 'opendal', '(deprecated) local', 's3', 'aliyun-oss', 'azure-blob', 'baidu-obs', 'clickzetta-volume', 'google-storage', 'huawei-obs', 'oci-storage', 'tencent-cos', 'volcengine-tos', 'supabase'. Default is 'opendal'.", "code_default": "opendal", "required": false, "applies_when": null }, { "name": "SUPABASE_API_KEY", "accepted_names": [ "SUPABASE_API_KEY" ], "group": "middleware.storage.supabase-storage", "type": "string | null", "description": "API KEY for authenticating with Supabase", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=supabase" }, { "name": "SUPABASE_BUCKET_NAME", "accepted_names": [ "SUPABASE_BUCKET_NAME" ], "group": "middleware.storage.supabase-storage", "type": "string | null", "description": "Name of the Supabase bucket to store and retrieve objects (e.g., 'dify-bucket')", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=supabase" }, { "name": "SUPABASE_URL", "accepted_names": [ "SUPABASE_URL" ], "group": "middleware.storage.supabase-storage", "type": "string | null", "description": "URL of the Supabase", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=supabase" }, { "name": "SWAGGER_UI_ENABLED", "accepted_names": [ "SWAGGER_UI_ENABLED" ], "group": "feature.swagger-u-i", "type": "boolean", "description": "Whether to enable Swagger UI in api module", "code_default": true, "required": false, "applies_when": null }, { "name": "SWAGGER_UI_PATH", "accepted_names": [ "SWAGGER_UI_PATH" ], "group": "feature.swagger-u-i", "type": "string", "description": "Swagger UI page path in api module", "code_default": "/swagger-ui.html", "required": false, "applies_when": null }, { "name": "TABLESTORE_ACCESS_KEY_ID", "accepted_names": [ "TABLESTORE_ACCESS_KEY_ID" ], "group": "middleware.vdb.table-store", "type": "string | null", "description": "AccessKey id for the instance name", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=tablestore" }, { "name": "TABLESTORE_ACCESS_KEY_SECRET", "accepted_names": [ "TABLESTORE_ACCESS_KEY_SECRET" ], "group": "middleware.vdb.table-store", "type": "string | null", "description": "AccessKey secret for the instance name", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=tablestore" }, { "name": "TABLESTORE_ENDPOINT", "accepted_names": [ "TABLESTORE_ENDPOINT" ], "group": "middleware.vdb.table-store", "type": "string | null", "description": "Endpoint address of the TableStore server (e.g. 'https://instance-name.cn-hangzhou.ots.aliyuncs.com')", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=tablestore" }, { "name": "TABLESTORE_INSTANCE_NAME", "accepted_names": [ "TABLESTORE_INSTANCE_NAME" ], "group": "middleware.vdb.table-store", "type": "string | null", "description": "Instance name to access TableStore server (eg. 'instance-name')", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=tablestore" }, { "name": "TABLESTORE_NORMALIZE_FULLTEXT_BM25_SCORE", "accepted_names": [ "TABLESTORE_NORMALIZE_FULLTEXT_BM25_SCORE" ], "group": "middleware.vdb.table-store", "type": "boolean", "description": "Whether to normalize full-text search scores to [0, 1]", "code_default": false, "required": false, "applies_when": "VECTOR_STORE=tablestore" }, { "name": "TEMPLATE_TRANSFORM_MAX_LENGTH", "accepted_names": [ "TEMPLATE_TRANSFORM_MAX_LENGTH" ], "group": "feature.workflow", "type": "integer", "description": "Maximum number of characters allowed in Template Transform node output", "code_default": 400000, "required": false, "applies_when": null }, { "name": "TENANT_ISOLATED_TASK_CONCURRENCY", "accepted_names": [ "TENANT_ISOLATED_TASK_CONCURRENCY" ], "group": "feature.tenant-isolated-task-queue", "type": "integer", "description": "Number of tasks allowed to be delivered concurrently from isolated queue per tenant", "code_default": 1, "required": false, "applies_when": null }, { "name": "TENCENT_COS_BUCKET_NAME", "accepted_names": [ "TENCENT_COS_BUCKET_NAME" ], "group": "middleware.storage.tencent-cloud-c-o-s-storage", "type": "string | null", "description": "Name of the Tencent Cloud COS bucket to store and retrieve objects", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=tencent-cos" }, { "name": "TENCENT_COS_CUSTOM_DOMAIN", "accepted_names": [ "TENCENT_COS_CUSTOM_DOMAIN" ], "group": "middleware.storage.tencent-cloud-c-o-s-storage", "type": "string | null", "description": "Tencent Cloud COS custom domain setting", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=tencent-cos" }, { "name": "TENCENT_COS_REGION", "accepted_names": [ "TENCENT_COS_REGION" ], "group": "middleware.storage.tencent-cloud-c-o-s-storage", "type": "string | null", "description": "Tencent Cloud region where the COS bucket is located (e.g., 'ap-guangzhou')", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=tencent-cos" }, { "name": "TENCENT_COS_SCHEME", "accepted_names": [ "TENCENT_COS_SCHEME" ], "group": "middleware.storage.tencent-cloud-c-o-s-storage", "type": "string | null", "description": "Protocol scheme for COS requests: 'https' (recommended) or 'http'", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=tencent-cos" }, { "name": "TENCENT_COS_SECRET_ID", "accepted_names": [ "TENCENT_COS_SECRET_ID" ], "group": "middleware.storage.tencent-cloud-c-o-s-storage", "type": "string | null", "description": "SecretId for authenticating with Tencent Cloud COS (part of API credentials)", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=tencent-cos" }, { "name": "TENCENT_COS_SECRET_KEY", "accepted_names": [ "TENCENT_COS_SECRET_KEY" ], "group": "middleware.storage.tencent-cloud-c-o-s-storage", "type": "string | null", "description": "SecretKey for authenticating with Tencent Cloud COS (part of API credentials)", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=tencent-cos" }, { "name": "TENCENT_VECTOR_DB_API_KEY", "accepted_names": [ "TENCENT_VECTOR_DB_API_KEY" ], "group": "middleware.vdb.tencent-vector-d-b", "type": "string | null", "description": "API key for authenticating with the Tencent Vector Database service", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=tencent" }, { "name": "TENCENT_VECTOR_DB_DATABASE", "accepted_names": [ "TENCENT_VECTOR_DB_DATABASE" ], "group": "middleware.vdb.tencent-vector-d-b", "type": "string | null", "description": "Name of the specific Tencent Vector Database to connect to", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=tencent" }, { "name": "TENCENT_VECTOR_DB_ENABLE_HYBRID_SEARCH", "accepted_names": [ "TENCENT_VECTOR_DB_ENABLE_HYBRID_SEARCH" ], "group": "middleware.vdb.tencent-vector-d-b", "type": "boolean", "description": "Enable hybrid search features", "code_default": false, "required": false, "applies_when": "VECTOR_STORE=tencent" }, { "name": "TENCENT_VECTOR_DB_PASSWORD", "accepted_names": [ "TENCENT_VECTOR_DB_PASSWORD" ], "group": "middleware.vdb.tencent-vector-d-b", "type": "string | null", "description": "Password for authenticating with the Tencent Vector Database (if required)", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=tencent" }, { "name": "TENCENT_VECTOR_DB_REPLICAS", "accepted_names": [ "TENCENT_VECTOR_DB_REPLICAS" ], "group": "middleware.vdb.tencent-vector-d-b", "type": "integer", "description": "Number of replicas for the Tencent Vector Database (default is 2)", "code_default": 2, "required": false, "applies_when": "VECTOR_STORE=tencent" }, { "name": "TENCENT_VECTOR_DB_SHARD", "accepted_names": [ "TENCENT_VECTOR_DB_SHARD" ], "group": "middleware.vdb.tencent-vector-d-b", "type": "integer", "description": "Number of shards for the Tencent Vector Database (default is 1)", "code_default": 1, "required": false, "applies_when": "VECTOR_STORE=tencent" }, { "name": "TENCENT_VECTOR_DB_TIMEOUT", "accepted_names": [ "TENCENT_VECTOR_DB_TIMEOUT" ], "group": "middleware.vdb.tencent-vector-d-b", "type": "integer", "description": "Timeout in seconds for Tencent Vector Database operations (default is 30 seconds)", "code_default": 30, "required": false, "applies_when": "VECTOR_STORE=tencent" }, { "name": "TENCENT_VECTOR_DB_URL", "accepted_names": [ "TENCENT_VECTOR_DB_URL" ], "group": "middleware.vdb.tencent-vector-d-b", "type": "string | null", "description": "URL of the Tencent Vector Database service (e.g., 'https://vectordb.tencentcloudapi.com')", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=tencent" }, { "name": "TENCENT_VECTOR_DB_USERNAME", "accepted_names": [ "TENCENT_VECTOR_DB_USERNAME" ], "group": "middleware.vdb.tencent-vector-d-b", "type": "string | null", "description": "Username for authenticating with the Tencent Vector Database (if required)", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=tencent" }, { "name": "TIDB_API_URL", "accepted_names": [ "TIDB_API_URL" ], "group": "middleware.vdb.tidb-on-qdrant", "type": "string | null", "description": "Tidb API url", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=tidb_on_qdrant" }, { "name": "TIDB_IAM_API_URL", "accepted_names": [ "TIDB_IAM_API_URL" ], "group": "middleware.vdb.tidb-on-qdrant", "type": "string | null", "description": "Tidb IAM API url", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=tidb_on_qdrant" }, { "name": "TIDB_ON_QDRANT_API_KEY", "accepted_names": [ "TIDB_ON_QDRANT_API_KEY" ], "group": "middleware.vdb.tidb-on-qdrant", "type": "string | null", "description": "Tidb on Qdrant api key", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=tidb_on_qdrant" }, { "name": "TIDB_ON_QDRANT_CLIENT_TIMEOUT", "accepted_names": [ "TIDB_ON_QDRANT_CLIENT_TIMEOUT" ], "group": "middleware.vdb.tidb-on-qdrant", "type": "integer", "description": "Tidb on Qdrant client timeout in seconds", "code_default": 20, "required": false, "applies_when": "VECTOR_STORE=tidb_on_qdrant" }, { "name": "TIDB_ON_QDRANT_GRPC_ENABLED", "accepted_names": [ "TIDB_ON_QDRANT_GRPC_ENABLED" ], "group": "middleware.vdb.tidb-on-qdrant", "type": "boolean", "description": "whether enable grpc support for Tidb on Qdrant connection", "code_default": false, "required": false, "applies_when": "VECTOR_STORE=tidb_on_qdrant" }, { "name": "TIDB_ON_QDRANT_GRPC_PORT", "accepted_names": [ "TIDB_ON_QDRANT_GRPC_PORT" ], "group": "middleware.vdb.tidb-on-qdrant", "type": "integer", "description": "Tidb on Qdrant grpc port", "code_default": 6334, "required": false, "applies_when": "VECTOR_STORE=tidb_on_qdrant" }, { "name": "TIDB_ON_QDRANT_URL", "accepted_names": [ "TIDB_ON_QDRANT_URL" ], "group": "middleware.vdb.tidb-on-qdrant", "type": "string | null", "description": "Tidb on Qdrant url", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=tidb_on_qdrant" }, { "name": "TIDB_PRIVATE_KEY", "accepted_names": [ "TIDB_PRIVATE_KEY" ], "group": "middleware.vdb.tidb-on-qdrant", "type": "string | null", "description": "Tidb account private key", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=tidb_on_qdrant" }, { "name": "TIDB_PROJECT_ID", "accepted_names": [ "TIDB_PROJECT_ID" ], "group": "middleware.vdb.tidb-on-qdrant", "type": "string | null", "description": "Tidb project id", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=tidb_on_qdrant" }, { "name": "TIDB_PUBLIC_KEY", "accepted_names": [ "TIDB_PUBLIC_KEY" ], "group": "middleware.vdb.tidb-on-qdrant", "type": "string | null", "description": "Tidb account public key", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=tidb_on_qdrant" }, { "name": "TIDB_REGION", "accepted_names": [ "TIDB_REGION" ], "group": "middleware.vdb.tidb-on-qdrant", "type": "string | null", "description": "Tidb serverless region", "code_default": "regions/aws-us-east-1", "required": false, "applies_when": "VECTOR_STORE=tidb_on_qdrant" }, { "name": "TIDB_SERVERLESS_NUMBER", "accepted_names": [ "TIDB_SERVERLESS_NUMBER" ], "group": "feature.data-set", "type": "integer", "description": "number of tidb serverless cluster", "code_default": 500, "required": false, "applies_when": null }, { "name": "TIDB_SPEND_LIMIT", "accepted_names": [ "TIDB_SPEND_LIMIT" ], "group": "middleware.vdb.tidb-on-qdrant", "type": "integer | null", "description": "Tidb spend limit", "code_default": 100, "required": false, "applies_when": "VECTOR_STORE=tidb_on_qdrant" }, { "name": "TIDB_VECTOR_DATABASE", "accepted_names": [ "TIDB_VECTOR_DATABASE" ], "group": "middleware.vdb.ti-d-b-vector", "type": "string | null", "description": "Name of the TiDB Vector database to connect to", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=tidb_vector" }, { "name": "TIDB_VECTOR_HOST", "accepted_names": [ "TIDB_VECTOR_HOST" ], "group": "middleware.vdb.ti-d-b-vector", "type": "string | null", "description": "Hostname or IP address of the TiDB Vector server (e.g., 'localhost' or 'tidb.example.com')", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=tidb_vector" }, { "name": "TIDB_VECTOR_PASSWORD", "accepted_names": [ "TIDB_VECTOR_PASSWORD" ], "group": "middleware.vdb.ti-d-b-vector", "type": "string | null", "description": "Password for authenticating with the TiDB Vector database", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=tidb_vector" }, { "name": "TIDB_VECTOR_PORT", "accepted_names": [ "TIDB_VECTOR_PORT" ], "group": "middleware.vdb.ti-d-b-vector", "type": "typing.Annotated[int, Gt(gt=0)] | null", "description": "Port number on which the TiDB Vector server is listening (default is 4000)", "code_default": 4000, "required": false, "applies_when": "VECTOR_STORE=tidb_vector" }, { "name": "TIDB_VECTOR_USER", "accepted_names": [ "TIDB_VECTOR_USER" ], "group": "middleware.vdb.ti-d-b-vector", "type": "string | null", "description": "Username for authenticating with the TiDB Vector database", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=tidb_vector" }, { "name": "TOOL_ICON_CACHE_MAX_AGE", "accepted_names": [ "TOOL_ICON_CACHE_MAX_AGE" ], "group": "feature.tool", "type": "integer", "description": "Maximum age in seconds for caching tool icons", "code_default": 3600, "required": false, "applies_when": null }, { "name": "TRIGGER_PROVIDER_CREDENTIAL_THRESHOLD_SECONDS", "accepted_names": [ "TRIGGER_PROVIDER_CREDENTIAL_THRESHOLD_SECONDS" ], "group": "feature.celery-schedule-tasks", "type": "integer", "description": "Proactive credential refresh threshold in seconds", "code_default": 3600, "required": false, "applies_when": null }, { "name": "TRIGGER_PROVIDER_REFRESH_BATCH_SIZE", "accepted_names": [ "TRIGGER_PROVIDER_REFRESH_BATCH_SIZE" ], "group": "feature.celery-schedule-tasks", "type": "integer", "description": "Max trigger subscriptions to process per tick", "code_default": 200, "required": false, "applies_when": null }, { "name": "TRIGGER_PROVIDER_REFRESH_INTERVAL", "accepted_names": [ "TRIGGER_PROVIDER_REFRESH_INTERVAL" ], "group": "feature.celery-schedule-tasks", "type": "integer", "description": "Trigger provider refresh poller interval in minutes", "code_default": 1, "required": false, "applies_when": null }, { "name": "TRIGGER_PROVIDER_SUBSCRIPTION_THRESHOLD_SECONDS", "accepted_names": [ "TRIGGER_PROVIDER_SUBSCRIPTION_THRESHOLD_SECONDS" ], "group": "feature.celery-schedule-tasks", "type": "integer", "description": "Proactive subscription refresh threshold in seconds", "code_default": 3600, "required": false, "applies_when": null }, { "name": "TRIGGER_URL", "accepted_names": [ "TRIGGER_URL" ], "group": "feature.endpoint", "type": "string", "description": "Template url for triggers", "code_default": "http://localhost:5001", "required": false, "applies_when": null }, { "name": "UNSTRUCTURED_API_KEY", "accepted_names": [ "UNSTRUCTURED_API_KEY" ], "group": "feature.rag-etl", "type": "string | null", "description": "API key for Unstructured.io service", "code_default": "", "required": false, "applies_when": null }, { "name": "UNSTRUCTURED_API_URL", "accepted_names": [ "UNSTRUCTURED_API_URL" ], "group": "feature.rag-etl", "type": "string | null", "description": "API URL for Unstructured.io service", "code_default": null, "required": false, "applies_when": null }, { "name": "UPLOAD_AUDIO_FILE_SIZE_LIMIT", "accepted_names": [ "UPLOAD_AUDIO_FILE_SIZE_LIMIT" ], "group": "feature.file-upload", "type": "integer", "description": "audio file size limit in Megabytes for uploading files", "code_default": 50, "required": false, "applies_when": null }, { "name": "UPLOAD_FILE_BATCH_LIMIT", "accepted_names": [ "UPLOAD_FILE_BATCH_LIMIT" ], "group": "feature.file-upload", "type": "integer", "description": "Maximum number of files allowed in a single upload batch", "code_default": 5, "required": false, "applies_when": null }, { "name": "UPLOAD_FILE_SIZE_LIMIT", "accepted_names": [ "UPLOAD_FILE_SIZE_LIMIT" ], "group": "feature.file-upload", "type": "integer", "description": "Maximum allowed file size for uploads in megabytes", "code_default": 15, "required": false, "applies_when": null }, { "name": "UPLOAD_IMAGE_FILE_SIZE_LIMIT", "accepted_names": [ "UPLOAD_IMAGE_FILE_SIZE_LIMIT" ], "group": "feature.file-upload", "type": "integer", "description": "Maximum allowed image file size for uploads in megabytes", "code_default": 10, "required": false, "applies_when": null }, { "name": "UPLOAD_VIDEO_FILE_SIZE_LIMIT", "accepted_names": [ "UPLOAD_VIDEO_FILE_SIZE_LIMIT" ], "group": "feature.file-upload", "type": "integer", "description": "video file size limit in Megabytes for uploading files", "code_default": 100, "required": false, "applies_when": null }, { "name": "UPSTASH_VECTOR_TOKEN", "accepted_names": [ "UPSTASH_VECTOR_TOKEN" ], "group": "middleware.vdb.upstash", "type": "string | null", "description": "Token for authenticating with the upstash server", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=upstash" }, { "name": "UPSTASH_VECTOR_URL", "accepted_names": [ "UPSTASH_VECTOR_URL" ], "group": "middleware.vdb.upstash", "type": "string | null", "description": "URL of the upstash server (e.g., 'https://vector.upstash.io')", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=upstash" }, { "name": "VASTBASE_DATABASE", "accepted_names": [ "VASTBASE_DATABASE" ], "group": "middleware.vdb.vastbase-vector", "type": "string | null", "description": "Name of the Vastbase database to connect to", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=vastbase" }, { "name": "VASTBASE_HOST", "accepted_names": [ "VASTBASE_HOST" ], "group": "middleware.vdb.vastbase-vector", "type": "string | null", "description": "Hostname or IP address of the Vastbase server with Vector extension (e.g., 'localhost')", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=vastbase" }, { "name": "VASTBASE_MAX_CONNECTION", "accepted_names": [ "VASTBASE_MAX_CONNECTION" ], "group": "middleware.vdb.vastbase-vector", "type": "integer", "description": "Max connection of the Vastbase database", "code_default": 5, "required": false, "applies_when": "VECTOR_STORE=vastbase" }, { "name": "VASTBASE_MIN_CONNECTION", "accepted_names": [ "VASTBASE_MIN_CONNECTION" ], "group": "middleware.vdb.vastbase-vector", "type": "integer", "description": "Min connection of the Vastbase database", "code_default": 1, "required": false, "applies_when": "VECTOR_STORE=vastbase" }, { "name": "VASTBASE_PASSWORD", "accepted_names": [ "VASTBASE_PASSWORD" ], "group": "middleware.vdb.vastbase-vector", "type": "string | null", "description": "Password for authenticating with the Vastbase database", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=vastbase" }, { "name": "VASTBASE_PORT", "accepted_names": [ "VASTBASE_PORT" ], "group": "middleware.vdb.vastbase-vector", "type": "integer", "description": "Port number on which the Vastbase server is listening (default is 5432)", "code_default": 5432, "required": false, "applies_when": "VECTOR_STORE=vastbase" }, { "name": "VASTBASE_USER", "accepted_names": [ "VASTBASE_USER" ], "group": "middleware.vdb.vastbase-vector", "type": "string | null", "description": "Username for authenticating with the Vastbase database", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=vastbase" }, { "name": "VECTOR_INDEX_NAME_PREFIX", "accepted_names": [ "VECTOR_INDEX_NAME_PREFIX" ], "group": "middleware.vector-store", "type": "string | null", "description": "Prefix used to create collection name in vector database", "code_default": "Vector_index", "required": false, "applies_when": null }, { "name": "VECTOR_STORE", "accepted_names": [ "VECTOR_STORE" ], "group": "middleware.vector-store", "type": "string | null", "description": "Type of vector store to use for efficient similarity search. Set to None if not using a vector store.", "code_default": null, "required": false, "applies_when": null }, { "name": "VECTOR_STORE_WHITELIST_ENABLE", "accepted_names": [ "VECTOR_STORE_WHITELIST_ENABLE" ], "group": "middleware.vector-store", "type": "boolean | null", "description": "Enable whitelist for vector store.", "code_default": false, "required": false, "applies_when": null }, { "name": "VIKINGDB_ACCESS_KEY", "accepted_names": [ "VIKINGDB_ACCESS_KEY" ], "group": "middleware.vdb.viking-d-b", "type": "string | null", "description": "The Access Key provided by Volcengine VikingDB for API authentication.Refer to the following documentation for details on obtaining credentials:https://www.volcengine.com/docs/6291/65568", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=vikingdb" }, { "name": "VIKINGDB_CONNECTION_TIMEOUT", "accepted_names": [ "VIKINGDB_CONNECTION_TIMEOUT" ], "group": "middleware.vdb.viking-d-b", "type": "integer", "description": "The connection timeout of the Volcengine VikingDB service.", "code_default": 30, "required": false, "applies_when": "VECTOR_STORE=vikingdb" }, { "name": "VIKINGDB_HOST", "accepted_names": [ "VIKINGDB_HOST" ], "group": "middleware.vdb.viking-d-b", "type": "string", "description": "The host of the Volcengine VikingDB service.(e.g., 'api-vikingdb.volces.com', 'api-vikingdb.mlp.cn-shanghai.volces.com')", "code_default": "api-vikingdb.mlp.cn-shanghai.volces.com", "required": false, "applies_when": "VECTOR_STORE=vikingdb" }, { "name": "VIKINGDB_REGION", "accepted_names": [ "VIKINGDB_REGION" ], "group": "middleware.vdb.viking-d-b", "type": "string", "description": "The region of the Volcengine VikingDB service.(e.g., 'cn-shanghai', 'cn-beijing').", "code_default": "cn-shanghai", "required": false, "applies_when": "VECTOR_STORE=vikingdb" }, { "name": "VIKINGDB_SCHEME", "accepted_names": [ "VIKINGDB_SCHEME" ], "group": "middleware.vdb.viking-d-b", "type": "string", "description": "The scheme of the Volcengine VikingDB service.(e.g., 'http', 'https').", "code_default": "http", "required": false, "applies_when": "VECTOR_STORE=vikingdb" }, { "name": "VIKINGDB_SECRET_KEY", "accepted_names": [ "VIKINGDB_SECRET_KEY" ], "group": "middleware.vdb.viking-d-b", "type": "string | null", "description": "The Secret Key provided by Volcengine VikingDB for API authentication.", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=vikingdb" }, { "name": "VIKINGDB_SOCKET_TIMEOUT", "accepted_names": [ "VIKINGDB_SOCKET_TIMEOUT" ], "group": "middleware.vdb.viking-d-b", "type": "integer", "description": "The socket timeout of the Volcengine VikingDB service.", "code_default": 30, "required": false, "applies_when": "VECTOR_STORE=vikingdb" }, { "name": "VOLCENGINE_TOS_ACCESS_KEY", "accepted_names": [ "VOLCENGINE_TOS_ACCESS_KEY" ], "group": "middleware.storage.volcengine-t-o-s-storage", "type": "string | null", "description": "Access Key ID for authenticating with Volcengine TOS", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=volcengine-tos" }, { "name": "VOLCENGINE_TOS_BUCKET_NAME", "accepted_names": [ "VOLCENGINE_TOS_BUCKET_NAME" ], "group": "middleware.storage.volcengine-t-o-s-storage", "type": "string | null", "description": "Name of the Volcengine TOS bucket to store and retrieve objects (e.g., 'my-tos-bucket')", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=volcengine-tos" }, { "name": "VOLCENGINE_TOS_ENDPOINT", "accepted_names": [ "VOLCENGINE_TOS_ENDPOINT" ], "group": "middleware.storage.volcengine-t-o-s-storage", "type": "string | null", "description": "URL of the Volcengine TOS endpoint (e.g., 'https://tos-cn-beijing.volces.com')", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=volcengine-tos" }, { "name": "VOLCENGINE_TOS_REGION", "accepted_names": [ "VOLCENGINE_TOS_REGION" ], "group": "middleware.storage.volcengine-t-o-s-storage", "type": "string | null", "description": "Volcengine region where the TOS bucket is located (e.g., 'cn-beijing')", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=volcengine-tos" }, { "name": "VOLCENGINE_TOS_SECRET_KEY", "accepted_names": [ "VOLCENGINE_TOS_SECRET_KEY" ], "group": "middleware.storage.volcengine-t-o-s-storage", "type": "string | null", "description": "Secret Access Key for authenticating with Volcengine TOS", "code_default": null, "required": false, "applies_when": "STORAGE_TYPE=volcengine-tos" }, { "name": "WEAVIATE_API_KEY", "accepted_names": [ "WEAVIATE_API_KEY" ], "group": "middleware.vdb.weaviate", "type": "string | null", "description": "API key for authenticating with the Weaviate server", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=weaviate" }, { "name": "WEAVIATE_BATCH_SIZE", "accepted_names": [ "WEAVIATE_BATCH_SIZE" ], "group": "middleware.vdb.weaviate", "type": "integer", "description": "Number of objects to be processed in a single batch operation (default is 100)", "code_default": 100, "required": false, "applies_when": "VECTOR_STORE=weaviate" }, { "name": "WEAVIATE_ENDPOINT", "accepted_names": [ "WEAVIATE_ENDPOINT" ], "group": "middleware.vdb.weaviate", "type": "string | null", "description": "URL of the Weaviate server (e.g., 'http://localhost:8080' or 'https://weaviate.example.com')", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=weaviate" }, { "name": "WEAVIATE_GRPC_ENDPOINT", "accepted_names": [ "WEAVIATE_GRPC_ENDPOINT" ], "group": "middleware.vdb.weaviate", "type": "string | null", "description": "URL of the Weaviate gRPC server (e.g., 'grpc://localhost:50051' or 'grpcs://weaviate.example.com:443')", "code_default": null, "required": false, "applies_when": "VECTOR_STORE=weaviate" }, { "name": "WEAVIATE_TOKENIZATION", "accepted_names": [ "WEAVIATE_TOKENIZATION" ], "group": "middleware.vdb.weaviate", "type": "string | null", "description": "Tokenization for Weaviate (default is word)", "code_default": "word", "required": false, "applies_when": "VECTOR_STORE=weaviate" }, { "name": "WEBHOOK_REQUEST_BODY_MAX_SIZE", "accepted_names": [ "WEBHOOK_REQUEST_BODY_MAX_SIZE" ], "group": "feature.trigger", "type": "integer", "description": "Maximum allowed size for webhook request bodies in bytes", "code_default": 10485760, "required": false, "applies_when": null }, { "name": "WEB_FORM_SUBMIT_RATE_LIMIT_MAX_ATTEMPTS", "accepted_names": [ "WEB_FORM_SUBMIT_RATE_LIMIT_MAX_ATTEMPTS" ], "group": "feature.security", "type": "integer", "description": "Maximum number of web form submissions allowed per IP within the rate limit window", "code_default": 30, "required": false, "applies_when": null }, { "name": "WEB_FORM_SUBMIT_RATE_LIMIT_WINDOW_SECONDS", "accepted_names": [ "WEB_FORM_SUBMIT_RATE_LIMIT_WINDOW_SECONDS" ], "group": "feature.security", "type": "integer", "description": "Time window in seconds for web form submission rate limiting", "code_default": 60, "required": false, "applies_when": null }, { "name": "WORKFLOW_CALL_MAX_DEPTH", "accepted_names": [ "WORKFLOW_CALL_MAX_DEPTH" ], "group": "feature.workflow", "type": "integer", "description": "Maximum allowed depth for nested workflow calls", "code_default": 5, "required": false, "applies_when": null }, { "name": "WORKFLOW_FILE_UPLOAD_LIMIT", "accepted_names": [ "WORKFLOW_FILE_UPLOAD_LIMIT" ], "group": "feature.file-upload", "type": "integer", "description": "Maximum number of files allowed in a workflow upload operation", "code_default": 10, "required": false, "applies_when": null }, { "name": "WORKFLOW_LOG_CLEANUP_BATCH_SIZE", "accepted_names": [ "WORKFLOW_LOG_CLEANUP_BATCH_SIZE" ], "group": "feature.workflow-log", "type": "integer", "description": "Batch size for workflow run log cleanup operations", "code_default": 100, "required": false, "applies_when": null }, { "name": "WORKFLOW_LOG_CLEANUP_ENABLED", "accepted_names": [ "WORKFLOW_LOG_CLEANUP_ENABLED" ], "group": "feature.workflow-log", "type": "boolean", "description": "Enable workflow run log cleanup", "code_default": false, "required": false, "applies_when": null }, { "name": "WORKFLOW_LOG_CLEANUP_SPECIFIC_WORKFLOW_IDS", "accepted_names": [ "WORKFLOW_LOG_CLEANUP_SPECIFIC_WORKFLOW_IDS" ], "group": "feature.workflow-log", "type": "string", "description": "Comma-separated list of workflow IDs to clean logs for", "code_default": "", "required": false, "applies_when": null }, { "name": "WORKFLOW_LOG_RETENTION_DAYS", "accepted_names": [ "WORKFLOW_LOG_RETENTION_DAYS" ], "group": "feature.workflow-log", "type": "integer", "description": "Retention days for workflow run logs", "code_default": 30, "required": false, "applies_when": null }, { "name": "WORKFLOW_MAX_EXECUTION_STEPS", "accepted_names": [ "WORKFLOW_MAX_EXECUTION_STEPS" ], "group": "feature.workflow", "type": "integer", "description": "Maximum number of steps allowed in a single workflow execution", "code_default": 500, "required": false, "applies_when": null }, { "name": "WORKFLOW_MAX_EXECUTION_TIME", "accepted_names": [ "WORKFLOW_MAX_EXECUTION_TIME" ], "group": "feature.workflow", "type": "integer", "description": "Maximum execution time in seconds for a single workflow", "code_default": 1200, "required": false, "applies_when": null }, { "name": "WORKFLOW_NODE_EXECUTION_STORAGE", "accepted_names": [ "WORKFLOW_NODE_EXECUTION_STORAGE" ], "group": "feature.workflow-node-execution", "type": "string", "description": "Storage backend for WorkflowNodeExecution. Options: 'rdbms', 'hybrid'", "code_default": "rdbms", "required": false, "applies_when": null }, { "name": "WORKFLOW_SCHEDULE_MAX_DISPATCH_PER_TICK", "accepted_names": [ "WORKFLOW_SCHEDULE_MAX_DISPATCH_PER_TICK" ], "group": "feature.celery-schedule-tasks", "type": "integer", "description": "Maximum schedules to dispatch per tick (0=unlimited, circuit breaker)", "code_default": 0, "required": false, "applies_when": null }, { "name": "WORKFLOW_SCHEDULE_POLLER_BATCH_SIZE", "accepted_names": [ "WORKFLOW_SCHEDULE_POLLER_BATCH_SIZE" ], "group": "feature.celery-schedule-tasks", "type": "integer", "description": "Maximum number of schedules to process in each poll batch", "code_default": 100, "required": false, "applies_when": null }, { "name": "WORKFLOW_SCHEDULE_POLLER_INTERVAL", "accepted_names": [ "WORKFLOW_SCHEDULE_POLLER_INTERVAL" ], "group": "feature.celery-schedule-tasks", "type": "integer", "description": "Workflow schedule poller interval in minutes", "code_default": 1, "required": false, "applies_when": null }, { "name": "WORKFLOW_VARIABLE_TRUNCATION_ARRAY_LENGTH", "accepted_names": [ "WORKFLOW_VARIABLE_TRUNCATION_ARRAY_LENGTH" ], "group": "feature.workflow-variable-truncation", "type": "integer", "description": "maximum length for array to trigger truncation.", "code_default": 1000, "required": false, "applies_when": null }, { "name": "WORKFLOW_VARIABLE_TRUNCATION_MAX_SIZE", "accepted_names": [ "WORKFLOW_VARIABLE_TRUNCATION_MAX_SIZE" ], "group": "feature.workflow-variable-truncation", "type": "integer", "description": "Maximum size for variable to trigger final truncation.", "code_default": 1024000, "required": false, "applies_when": null }, { "name": "WORKFLOW_VARIABLE_TRUNCATION_STRING_LENGTH", "accepted_names": [ "WORKFLOW_VARIABLE_TRUNCATION_STRING_LENGTH" ], "group": "feature.workflow-variable-truncation", "type": "integer", "description": "maximum length for string to trigger tuncation, measure in number of characters", "code_default": 100000, "required": false, "applies_when": null } ] }