# Server
export LISTEN_ADDR=":8888"
export LOG_LEVEL="error"
export MAX_REQUEST_BODY_SIZE=1073741824
export SERVER_HOST="https://testcoze.kejiankejian.com"             #  "http://localhost${LISTEN_ADDR}"
export USE_SSL="true"
export SSL_CERT_FILE="_.kejiankejian.com_chain.pem"
export SSL_KEY_FILE="_.kejiankejian.com_key.key"
export WEB_LISTEN_ADDR="0.0.0.0:8888" # To enable remote access, use 0.0.0.0:8888.

# MySQL
export MYSQL_ROOT_PASSWORD=root
export MYSQL_DATABASE=opencoze
export MYSQL_USER=coze
export MYSQL_PASSWORD=coze123
export MYSQL_HOST=mysql
export MYSQL_PORT=3306
export MYSQL_DSN="${MYSQL_USER}:${MYSQL_PASSWORD}@tcp(${MYSQL_HOST}:${MYSQL_PORT})/${MYSQL_DATABASE}?charset=utf8mb4&parseTime=True"
export ATLAS_URL="mysql://${MYSQL_USER}:${MYSQL_PASSWORD}@${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DATABASE}?charset=utf8mb4&parseTime=True"

# Redis
export REDIS_AOF_ENABLED=no
export REDIS_IO_THREADS=4
export ALLOW_EMPTY_PASSWORD=yes
export REDIS_ADDR="redis:6379"
export REDIS_PASSWORD=""

# This Upload component used in Agent / workflow File/Image With LLM  , support the component of imagex / storage
# default: storage, use the settings of storage component
# if imagex, you must finish the configuration of <VolcEngine ImageX>
export FILE_UPLOAD_COMPONENT_TYPE="storage"

# VolcEngine ImageX
export VE_IMAGEX_AK=""
export VE_IMAGEX_SK=""
export VE_IMAGEX_SERVER_ID=""
export VE_IMAGEX_DOMAIN=""
export VE_IMAGEX_TEMPLATE=""
export VE_IMAGEX_UPLOAD_HOST="https://imagex.volcengineapi.com"

# Storage component
export STORAGE_TYPE="minio" # minio / tos / s3
export STORAGE_UPLOAD_HTTP_SCHEME="https" # http / https. If coze studio website is https, you must set it to https
export STORAGE_BUCKET="opencoze"
# MiniIO
export MINIO_ROOT_USER=minioadmin
export MINIO_ROOT_PASSWORD=minioadmin123
export MINIO_DEFAULT_BUCKETS=milvus
export MINIO_AK=$MINIO_ROOT_USER
export MINIO_SK=$MINIO_ROOT_PASSWORD
export MINIO_ENDPOINT="coze-minio:9000"
export MINIO_API_HOST="https://testcoze.kejiankejian.com/local_storage"   #  "http://${MINIO_ENDPOINT}"

# TOS
export TOS_ACCESS_KEY=
export TOS_SECRET_KEY=
export TOS_ENDPOINT=https://tos-cn-beijing.volces.com
export TOS_REGION=cn-beijing

# S3
export S3_ACCESS_KEY=
export S3_SECRET_KEY=
export S3_ENDPOINT=
export S3_BUCKET_ENDPOINT=
export S3_REGION=

# Elasticsearch
export ES_ADDR="http://elasticsearch:9200"
export ES_VERSION="v8"
export ES_USERNAME=""
export ES_PASSWORD=""
export ES_NUMBER_OF_SHARDS="1"
export ES_NUMBER_OF_REPLICAS="1"

# Backend Event Bus
export COZE_MQ_TYPE="nsq" # nsq / kafka / rmq / pulsar / nats
export MQ_NAME_SERVER="nsqd:4150"
# RocketMQ
export RMQ_ACCESS_KEY=""
export RMQ_SECRET_KEY=""
# Pulsar
# Use Pulsar as backend eventbus, MQ_NAME_SERVER example is: "pulsar:6650"
# Fill PULSAR_JWT_TOKEN for JWT auth, leave empty for no auth
export PULSAR_SERVICE_URL="pulsar://pulsar-service:6650"
export PULSAR_JWT_TOKEN=""
# NATS
# Use NATS as backend eventbus with JetStream support
# Set COZE_MQ_TYPE="nats" and MQ_NAME_SERVER="nats:4222" to enable NATS
# NATS_SERVER_URL: NATS server connection URL, supports nats:// and tls:// protocols
# For cluster setup, use comma-separated URLs: "nats://nats1:4222,nats://nats2:4222"
# For TLS connection: "tls://nats:4222"
export NATS_SERVER_URL="nats://nats:4222"
# NATS_JWT_TOKEN: JWT token for NATS authentication (leave empty for no auth)
export NATS_JWT_TOKEN=""
# NATS_NKEY_SEED: Path to NATS seed file for NKey authentication (optional)
export NATS_NKEY_SEED=""
# NATS_USERNAME: Username for NATS authentication (optional)
export NATS_USERNAME=""
# NATS_PASSWORD: Password for NATS authentication (optional)
export NATS_PASSWORD=""
# NATS_TOKEN: Token for NATS authentication (optional)
export NATS_TOKEN=""
# NATS_STREAM_REPLICAS: Number of replicas for JetStream streams (default: 1)
export NATS_STREAM_REPLICAS="1"
# NATS_USE_JETSTREAM: Enable JetStream mode for message persistence and reliability (default: false)
export NATS_USE_JETSTREAM="true"

# Settings for VectorStore
# VectorStore type: milvus / vikingdb / oceanbase
# If you want to use vikingdb, you need to set up the vikingdb configuration.
export VECTOR_STORE_TYPE="milvus"
# milvus vector store
export MILVUS_ADDR="milvus:19530"
export MILVUS_USER=""
export MILVUS_PASSWORD=""
export MILVUS_TOKEN=""
# vikingdb vector store for Volcengine
export VIKING_DB_HOST=""
export VIKING_DB_REGION=""
export VIKING_DB_AK=""
export VIKING_DB_SK=""
export VIKING_DB_SCHEME=""
export VIKING_DB_MODEL_NAME="" # if vikingdb model name is not set, you need to set Embedding settings

# oceanbase vector store
export OCEANBASE_HOST="127.0.0.1"
export OCEANBASE_PORT=2881
export OCEANBASE_USER="root@test"
export OCEANBASE_PASSWORD="coze123"
export OCEANBASE_DATABASE="test"

# Settings for Embedding
# The Embedding model relied on by knowledge base vectorization does not need to be configured
# if the vector database comes with built-in Embedding functionality (such as VikingDB). Currently,
# Coze Studio supports four access methods: openai, ark, ollama, and custom http. Users can simply choose one of them when using
# embedding type: ark / openai / ollama / gemini / http
export EMBEDDING_TYPE="openai"
export EMBEDDING_MAX_BATCH_SIZE=10

# ark embedding by volcengine / byteplus
export ARK_EMBEDDING_BASE_URL="https://ark.cn-beijing.volces.com/api/v3/embeddings" # (string, required) Ark embedding base_url
export ARK_EMBEDDING_MODEL="ep-m-20251126204330-vbhmg"    # (string, required) Ark embedding model
export ARK_EMBEDDING_API_KEY="95635b17-cfb0-456b-8534-b9e586fbcf90"  # (string, required) Ark embedding api_key
export ARK_EMBEDDING_DIMS="2048" # (int,    required) Ark embedding dimensions
export ARK_EMBEDDING_API_TYPE="text_api" # (string, optional) Ark embedding api type, should be "text_api" / "multi_modal_api". Default "text_api".

# openai embedding
export OPENAI_EMBEDDING_BASE_URL="https://dashcope.aliyuncs.com/compatible-mode/v1"       # (string, required) OpenAI embedding base_url
export OPENAI_EMBEDDING_MODEL="text-embedding-v3"          # (string, required) OpenAI embedding model
export OPENAI_EMBEDDING_API_KEY="sk-f4f4a448695548ad9c25717d516e8786"        # (string, required) OpenAI embedding api_key
export OPENAI_EMBEDDING_BY_AZURE=false    # (bool,   optional) OpenAI embedding by_azure
export OPENAI_EMBEDDING_API_VERSION=""    # (string, optional) OpenAI embedding azure api version
export OPENAI_EMBEDDING_DIMS="1024"         # (int,    required) OpenAI embedding dimensions
export OPENAI_EMBEDDING_REQUEST_DIMS=""   # (int,    optional) OpenAI embedding dimensions in requests, need to be empty if api doesn't support specifying dimensions.

# ollama embedding
export OLLAMA_EMBEDDING_BASE_URL="" # (string, required) Ollama embedding base_url
export OLLAMA_EMBEDDING_MODEL=""    # (string, required) Ollama embedding model
export OLLAMA_EMBEDDING_DIMS=""     # (int,    required) Ollama embedding dimensions

# gemini embedding
export GEMINI_EMBEDDING_BASE_URL=""                  # (string, required) Gemini embedding base_url
export GEMINI_EMBEDDING_MODEL="gemini-embedding-001" # (string, required) Gemini embedding model.
export GEMINI_EMBEDDING_API_KEY=""                   # (string, required) Gemini embedding api_key
export GEMINI_EMBEDDING_DIMS=2048                    # (int,    required) Gemini embedding dimensions
export GEMINI_EMBEDDING_BACKEND="1"                  # (string, required) Gemini embedding backend, should be "1" for BackendGeminiAPI / "2" for BackendVertexAI.
export GEMINI_EMBEDDING_PROJECT=""                   # (string, optional) Gemini embedding project
export GEMINI_EMBEDDING_LOCATION=""                  # (string, optional) Gemini embedding location

# http embedding
export HTTP_EMBEDDING_ADDR=""   # (string, required) http embedding address
export HTTP_EMBEDDING_DIMS=1024 # (string, required) http embedding dimensions

# Settings for Rerank
# If you want to use the rerank-related functions in the knowledge base feature，You need to set up the rerank configuration.
export RERANK_TYPE="" # current support `vikingdb`,`rrf`,default:rrf
# vikingdb rerank
export VIKINGDB_RERANK_HOST="" # optional,default:api-knowledgebase.mlp.cn-beijing.volces.com
export VIKINGDB_RERANK_REGION="" # optional,default:cn-north-1
export VIKINGDB_RERANK_AK="" # required
export VIKINGDB_RERANK_SK="" # required
export VIKINGDB_RERANK_MODEL="" # optional,default:base-multilingual-rerank,also support m3-v2-rerank

# Settings for OCR
# If you want to use the OCR-related functions in the knowledge base feature，You need to set up the OCR configuration.
# Currently, Coze Studio has built-in Volcano OCR.
# Supported OCR types: `ve`, `paddleocr`
export OCR_TYPE="ve"
# ve ocr
export VE_OCR_AK=""
export VE_OCR_SK=""
# paddleocr ocr
export PADDLEOCR_OCR_API_URL=""

# Settings for Document Parser
# Supported parser types: `builtin`, `paddleocr`
export PARSER_TYPE="builtin"
# paddleocr structure
export PADDLEOCR_STRUCTURE_API_URL=""

# 智能体/工作流主模型配置
# Settings for Model
# Model for agent & workflow
# add suffix number to add different models
export MODEL_PROTOCOL_0="openai"       # protocol
export MODEL_OPENCOZE_ID_0="100012" # id for record
export MODEL_NAME_0="通义千问-Plus"              # model name for show
export MODEL_ID_0="qwen3-vl-plus"                # model name for connection
export MODEL_API_KEY_0="sk-f4f4a448695548ad9c25717d516e8786"           # model api key
export MODEL_BASE_URL_0="https://dashscope.aliyuncs.com/compatible-mode/v1"           # model base url
export MODEL_MULTIMODAL_0="true"  # 声明该模型支持多模态
export MODEL_IMAGE_PROCESS_0="base64"  # 指定图片传递方式为base64

# 知识库专用子模型配置（NL2SQL/查询重写等）
# Model for knowledge nl2sql, messages2query (rewrite), image annotation, workflow knowledge recall
# add prefix to assign specific model, downgrade to default config when prefix is not configured:
# 1. nl2sql:                    NL2SQL_ (e.g. NL2SQL_BUILTIN_CM_TYPE)
# 2. messages2query:            M2Q_    (e.g. M2Q_BUILTIN_CM_TYPE)
# 3. image annotation:          IA_     (e.g. IA_BUILTIN_CM_TYPE)
# 4. workflow knowledge recall: WKR_    (e.g. WKR_BUILTIN_CM_TYPE)
# supported chat model type: openai / ark / deepseek / ollama / qwen / gemini
export BUILTIN_CM_TYPE="openai"
# type openai
export BUILTIN_CM_OPENAI_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
export BUILTIN_CM_OPENAI_API_KEY="sk-f4f4a448695548ad9c25717d516e8786"
export BUILTIN_CM_OPENAI_BY_AZURE=false
export BUILTIN_CM_OPENAI_MODEL="qwen3-vl-plus"

# type ark
export BUILTIN_CM_ARK_API_KEY=""
export BUILTIN_CM_ARK_MODEL=""
export BUILTIN_CM_ARK_BASE_URL=""

# type deepseek
export BUILTIN_CM_DEEPSEEK_BASE_URL=""
export BUILTIN_CM_DEEPSEEK_API_KEY=""
export BUILTIN_CM_DEEPSEEK_MODEL=""

# type ollama
export BUILTIN_CM_OLLAMA_BASE_URL=""
export BUILTIN_CM_OLLAMA_MODEL=""

# type qwen
export BUILTIN_CM_QWEN_BASE_URL=""
export BUILTIN_CM_QWEN_API_KEY=""
export BUILTIN_CM_QWEN_MODEL=""

# type gemini
export BUILTIN_CM_GEMINI_BACKEND=""
export BUILTIN_CM_GEMINI_API_KEY=""
export BUILTIN_CM_GEMINI_PROJECT=""
export BUILTIN_CM_GEMINI_LOCATION=""
export BUILTIN_CM_GEMINI_BASE_URL=""
export BUILTIN_CM_GEMINI_MODEL=""


# Workflow Code Runner Configuration
# Supported code runner types: sandbox / local
# Default using local
# - sandbox: execute python code in a sandboxed env with deno + pyodide
# - local: using venv, no env isolation
export CODE_RUNNER_TYPE="local"
# Sandbox sub configuration
# Access restricted to specific environment variables, split with comma, e.g. "PATH,USERNAME"
export CODE_RUNNER_ALLOW_ENV=""
# Read access restricted to specific paths, split with comma, e.g. "/tmp,./data"
export CODE_RUNNER_ALLOW_READ="/www/coze-studio/docker/data/minio,/tmp"
# Write access restricted to specific paths, split with comma, e.g. "/tmp,./data"
export CODE_RUNNER_ALLOW_WRITE="/tmp"
# Subprocess execution restricted to specific commands, split with comma, e.g. "python,git"
export CODE_RUNNER_ALLOW_RUN=""
# Network access restricted to specific domains/IPs, split with comma, e.g. "api.test.com,api.test.org:8080"
# The following CDN supports downloading the packages required for pyodide to run Python code. Sandbox may not work properly if removed.
export CODE_RUNNER_ALLOW_NET="cdn.jsdelivr.net,jsr.io,pypi.org,files.pythonhosted.org,coze-minio:9000"
# Foreign Function Interface access to specific libraries, split with comma, e.g. "/usr/lib/libm.so"
export CODE_RUNNER_ALLOW_FFI=""
# Directory for deno modules, default using pwd. e.g. "/tmp/path/node_modules"
export CODE_RUNNER_NODE_MODULES_DIR=""
# Code execution timeout, default 60 seconds. e.g. "2.56"
export CODE_RUNNER_TIMEOUT_SECONDS=""
# Code execution memory limit, default 100MB. e.g. "256"
export CODE_RUNNER_MEMORY_LIMIT_MB=""

# The function of registration controller
# If you want to disable the registration feature, set DISABLE_USER_REGISTRATION to true. You can then control allowed registrations via a whitelist with ALLOW_REGISTRATION_EMAIL.
export DISABLE_USER_REGISTRATION="" # default "", if you want to disable, set to true
export ALLOW_REGISTRATION_EMAIL=""  #  is a list of email addresses, separated by ",". Example: "11@example.com,22@example.com"

# Plugin AES secret.
# PLUGIN_AES_AUTH_SECRET is the secret of used to encrypt plugin authorization payload.
# The size of secret must be 16, 24 or 32 bytes.
export PLUGIN_AES_AUTH_SECRET='^*6x3hdu2nc%-p38'
# PLUGIN_AES_STATE_SECRET is the secret of used to encrypt oauth state.
# The size of secret must be 16, 24 or 32 bytes.
export PLUGIN_AES_STATE_SECRET='osj^kfhsd*(z!sno'
# PLUGIN_AES_OAUTH_TOKEN_SECRET is the secret of used to encrypt oauth refresh token and access token.
# The size of secret must be 16, 24 or 32 bytes.
export PLUGIN_AES_OAUTH_TOKEN_SECRET='cn+$PJ(HhJ[5d*z9'

# Coze Saas API Configuration
export COZE_SAAS_PLUGIN_ENABLED="true" # default "", if you want to enable, set to true
export COZE_SAAS_API_BASE_URL="https://testcoze.kejianjejian.com"
export COZE_SAAS_API_KEY="osj^kfhsd*(z!sno"

