# yaml-language-server: $schema=https://schema.zeabur.app/template.json
apiVersion: zeabur.com/v1
kind: Template
metadata:
    name: Astron Agent
spec:
    description: 'Enterprise-grade open-source AI agent development platform: AI workflow orchestration, model management, MCP tool integration, RPA automation and team collaboration. Built by iFLYTEK.'
    coverImage: https://raw.githubusercontent.com/iflytek/astron-agent/main/docs/imgs/Astron_Readme.png
    icon: https://raw.githubusercontent.com/iflytek/astron-agent/main/docs/logo.svg
    variables:
        - key: PUBLIC_DOMAIN
          type: DOMAIN
          name: Application Domain
          description: Domain for the Astron Agent web console (bound to the nginx gateway).
        - key: CASDOOR_DOMAIN
          type: DOMAIN
          name: Casdoor Auth Domain
          description: Domain for the Casdoor authentication service (OAuth2 login).
    tags:
        - AI
        - Agent
        - Workflow
        - LLM
    readme: |
        # Astron Agent

        Astron Agent is an enterprise-grade, commercial-friendly open-source AI agent
        development platform built by iFLYTEK. It integrates AI workflow orchestration,
        model management, AI/MCP tool integration, RPA automation, and team
        collaboration in one platform.

        ## Deployment

        1. Bind two domains:
           - **Application Domain** (`PUBLIC_DOMAIN`) is bound to the `nginx` gateway.
           - **Casdoor Domain** (`CASDOOR_DOMAIN`) is bound to the `casdoor` auth service.
        2. Deploy. The full stack needs roughly **8 GB RAM minimum** (16 GB recommended);
           the 17 services include MySQL, PostgreSQL, Redis, MinIO and Casdoor.
        3. Open the Application Domain. Sign in through Casdoor with the default admin
           account **`admin` / `123`** and change the password immediately.

        ## Notes

        - Database, cache and storage credentials default to the upstream
          docker-compose values and are only reachable on Zeabur's private network.
          Rotate them for production use.
        - AI model credentials (Spark / OpenAI-compatible providers) are not required to
          boot the platform; configure them in the service variables to enable
          generation features.

        ## License

        Apache 2.0 — https://github.com/iflytek/astron-agent
    resourceRequirement:
        minConfig:
            cpu: 4
            ram: 8
        recommendedConfig:
            cpu: 8
            ram: 16
    services:
        - name: postgres
          icon: https://raw.githubusercontent.com/zeabur/service-icons/main/marketplace/postgresql.svg
          template: PREBUILT_V2
          spec:
            id: postgres
            source:
                image: postgres:14
            ports:
                - id: database
                  port: 5432
                  type: TCP
            volumes:
                - id: data
                  dir: /var/lib/postgresql/data
            env:
                PGDATA:
                    default: /var/lib/postgresql/data/pgdata
                POSTGRES_DB:
                    default: sparkdb_manager
                POSTGRES_PASSWORD:
                    default: spark123
                POSTGRES_USER:
                    default: spark
        - name: mysql
          icon: https://raw.githubusercontent.com/zeabur/service-icons/main/marketplace/mysql.svg
          template: PREBUILT_V2
          spec:
            id: mysql
            source:
                image: mysql:8.4.6
            ports:
                - id: database
                  port: 3306
                  type: TCP
            volumes:
                - id: data
                  dir: /var/lib/mysql
            env:
                MYSQL_DATABASE:
                    default: astron_console
                MYSQL_ROOT_PASSWORD:
                    default: root123
            configs:
                - path: /docker-entrypoint-initdb.d/01-init-databases.sql
                  template: |
                    -- Ensure all per-service databases exist (mysql only auto-creates one).
                    CREATE DATABASE IF NOT EXISTS `astron_console` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
                    CREATE DATABASE IF NOT EXISTS `sparkdb_manager` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
                    CREATE DATABASE IF NOT EXISTS `tenant` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
                    CREATE DATABASE IF NOT EXISTS `agent` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
                    CREATE DATABASE IF NOT EXISTS `workflow` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
                    CREATE DATABASE IF NOT EXISTS `spark-link` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
                  permission: null
                  envsubst: null
        - name: redis
          icon: https://raw.githubusercontent.com/zeabur/service-icons/main/marketplace/redis.svg
          template: PREBUILT_V2
          spec:
            id: redis
            source:
                image: redis:7
            ports:
                - id: database
                  port: 6379
                  type: TCP
            volumes:
                - id: data
                  dir: /data
        - name: minio
          icon: https://raw.githubusercontent.com/zeabur/service-icons/main/marketplace/minio.svg
          template: PREBUILT_V2
          spec:
            id: minio
            source:
                image: minio/minio:RELEASE.2025-07-23T15-54-02Z
            ports:
                - id: api
                  port: 9000
                  type: TCP
                - id: console
                  port: 9001
                  type: HTTP
            volumes:
                - id: data
                  dir: /data
            env:
                MINIO_ROOT_PASSWORD:
                    default: minioadmin123
                MINIO_ROOT_USER:
                    default: minioadmin
        - name: casdoor-mysql
          icon: https://raw.githubusercontent.com/zeabur/service-icons/main/marketplace/mysql.svg
          template: PREBUILT_V2
          spec:
            id: casdoor-mysql
            source:
                image: mysql:8.4.6
            ports:
                - id: database
                  port: 3306
                  type: TCP
            volumes:
                - id: data
                  dir: /var/lib/mysql
            env:
                MYSQL_DATABASE:
                    default: casdoor
                MYSQL_ROOT_PASSWORD:
                    default: root123
        - name: casdoor
          icon: https://raw.githubusercontent.com/zeabur/service-icons/main/marketplace/casdoor.svg
          template: PREBUILT_V2
          spec:
            id: casdoor
            source:
                image: casbin/casdoor:v2.67.0
            ports:
                - id: web
                  port: 8000
                  type: HTTP
            env:
                CONSOLE_DOMAIN:
                    default: https://${PUBLIC_DOMAIN}
                GIN_MODE:
                    default: release
                HOST_BASE_ADDRESS:
                    default: ${ZEABUR_WEB_URL}
                origin:
                    default: ${ZEABUR_WEB_URL}
                originFrontend:
                    default: ${ZEABUR_WEB_URL}
            configs:
                - path: /conf/app.conf
                  template: |-
                    appname = casdoor
                    httpport = 8000
                    runmode = dev
                    copyrequestbody = true
                    driverName = mysql
                    dataSourceName = root:root123@tcp(casdoor-mysql.zeabur.internal:3306)/
                    dbName = casdoor
                    tableNamePrefix =
                    showSql = false
                    redisEndpoint =
                    defaultStorageProvider =
                    isCloudIntranet = false
                    authState = "casdoor"
                    socks5Proxy = "127.0.0.1:10808"
                    verificationCodeTimeout = 10
                    initScore = 0
                    logPostOnly = true
                    isUsernameLowered = false
                    origin =
                    originFrontend =
                    staticBaseUrl = "https://cdn.casbin.org"
                    isDemoMode = false
                    batchSize = 100
                    enableErrorMask = false
                    enableGzip = true
                    inactiveTimeoutMinutes =
                    ldapServerPort = 1389
                    ldapsCertId = ""
                    ldapsServerPort = 636
                    radiusServerPort = 1812
                    radiusDefaultOrganization = "built-in"
                    radiusSecret = "secret"
                    quota = {"organization": -1, "user": -1, "application": -1, "provider": -1}
                    logConfig = {"adapter":"file", "filename": "logs/casdoor.log", "maxdays":99999, "perm":"0770"}
                    initDataNewOnly = true
                    initDataFile = "/conf/init_data.json"
                    frontendBaseDir = "../cc_0"
                  permission: null
                  envsubst: null
                - path: /entrypoint.sh
                  template: |
                    #!/bin/sh
                    set -e

                    echo "===== Initializing Casdoor Configuration ====="
                    echo "CONSOLE_DOMAIN: ${CONSOLE_DOMAIN}"
                    echo "HOST_BASE_ADDRESS: ${HOST_BASE_ADDRESS}"

                    mkdir -p /conf

                    # init_data.json is ~180KB; fetch it at startup instead of inlining it here.
                    echo "Downloading init_data.json template..."
                    wget -qO /tmp/init_data.json.template "https://raw.githubusercontent.com/iflytek/astron-agent/main/docker/astronAgent/casdoor/conf/init_data.json.template"

                    sed -e "s|\${CONSOLE_DOMAIN}|${CONSOLE_DOMAIN}|g" \
                        -e "s|\${HOST_BASE_ADDRESS}|${HOST_BASE_ADDRESS}|g" \
                        /tmp/init_data.json.template > /conf/init_data.json

                    echo "Casdoor configuration ready."
                    exec /server --createDatabase=true
                  permission: 493
                  envsubst: null
          domainKey: CASDOOR_DOMAIN
        - name: core-tenant
          icon: https://raw.githubusercontent.com/iflytek/astron-agent/main/docs/logo.svg
          template: PREBUILT_V2
          spec:
            id: core-tenant
            source:
                image: ghcr.io/iflytek/astron-agent/core-tenant:1.0.9
            ports:
                - id: web
                  port: 5052
                  type: HTTP
            env:
                DATABASE_DB_TYPE:
                    default: mysql
                DATABASE_MAX_IDLE_CONNS:
                    default: "5"
                DATABASE_MAX_OPEN_CONNS:
                    default: "5"
                DATABASE_PASSWORD:
                    default: root123
                DATABASE_URL:
                    default: (mysql.zeabur.internal:3306)/tenant
                DATABASE_USERNAME:
                    default: root
                LOG_PATH:
                    default: log.txt
                SERVICE_LOCATION:
                    default: hf
                SERVICE_PORT:
                    default: "5052"
            configs:
                - path: /opt/tenant/config/config.toml
                  template: |
                    [server]
                    port = 5052
                    location = "ss"

                    [database]
                    dbType = "mysql"
                    username = ""
                    password = ""
                    url = ""
                    maxOpenConns = 10
                    maxIdleConns = 5

                    [log]
                    logFile = "./logs/app.log"
                  permission: null
                  envsubst: null
        - name: core-database
          icon: https://raw.githubusercontent.com/iflytek/astron-agent/main/docs/logo.svg
          template: PREBUILT_V2
          spec:
            id: core-database
            source:
                image: ghcr.io/iflytek/astron-agent/core-database:1.0.9
            ports:
                - id: web
                  port: 7990
                  type: HTTP
            env:
                DB_TYPE:
                    default: postgresql
                MYSQL_DATABASE:
                    default: sparkdb_manager
                MYSQL_HOST:
                    default: mysql.zeabur.internal
                MYSQL_PASSWORD:
                    default: root123
                MYSQL_PORT:
                    default: "3306"
                MYSQL_USER:
                    default: root
                OTLP_ENABLE:
                    default: "0"
                OTLP_ENDPOINT:
                    default: 127.0.0.1:4317
                PGSQL_DATABASE:
                    default: sparkdb_manager
                PGSQL_HOST:
                    default: postgres.zeabur.internal
                PGSQL_PASSWORD:
                    default: spark123
                PGSQL_PORT:
                    default: "5432"
                PGSQL_USER:
                    default: spark
                REDIS_ADDR:
                    default: redis.zeabur.internal:6379
                REDIS_CLUSTER_ADDR:
                    default: ""
                REDIS_PASSWORD:
                    default: ""
                SERVICE_PORT:
                    default: "7990"
            configs:
                - path: /opt/core/memory/database/config.env
                  template: |
                    # =============================================================================
                    # Database Service Configuration
                    # =============================================================================

                    # Service Information
                    # Basic service identification and network configuration
                    SERVICE_SUB=mdb
                    SERVICE_NAME=MemoryDB
                    SERVICE_LOCATION=hf
                    SERVICE_PORT=7990

                    # Logging Configuration
                    # Application logging level and optional log file path
                    LOG_LEVEL="INFO"
                    LOG_PATH="./memory/database/logs"
                    # Whether to output logs to stdout, 1=enabled, 0=disabled, default: 0
                    LOG_STDOUT_ENABLE=0

                    # =============================================================================
                    # Database Configuration
                    # =============================================================================

                    # Database type selection: postgresql or mysql
                    DB_TYPE=postgresql

                    # PostgreSQL database configuration (used when DB_TYPE=postgresql)
                    # Database host
                    PGSQL_HOST=127.0.0.1
                    # Database port
                    PGSQL_PORT=5432
                    # Database login username
                    PGSQL_USER=xxxx
                    # Database login password
                    PGSQL_PASSWORD=xxxx
                    # Database name
                    PGSQL_DATABASE=xxxx

                    # MySQL database configuration (used when DB_TYPE=mysql)
                    # Database host
                    MYSQL_HOST=127.0.0.1
                    # Database port
                    MYSQL_PORT=3306
                    # Database login username
                    MYSQL_USER=xxxx
                    # Database login password
                    MYSQL_PASSWORD=xxxx
                    # Database name
                    MYSQL_DATABASE=xxxx

                    # Redis Cache Settings
                    # Redis cluster configuration for caching, session management, and real-time data
                    # Only one cluster address and stand-alone address can be configured, and the cluster address has high priority.
                    # Cluster address
                    REDIS_CLUSTER_ADDR=127.0.0.1:1234,127.0.0.1:1234,127.0.0.1:1234,127.0.0.1:1234,127.0.0.1:1234,127.0.0.1:1234
                    # Stand-alone address
                    #REDIS_ADDR=
                    REDIS_PASSWORD=xxxx
                    # Cache expiration time in seconds (1 hour = 3600 seconds)
                    REDIS_EXPIRE=3600

                    # =============================================================================
                    # OpenTelemetry Observability Configuration
                    # =============================================================================

                    # OTLP (OpenTelemetry Protocol) Configuration
                    # Distributed tracing and metrics collection settings
                    # OTLP endpoint for telemetry data submission
                    OTLP_ENDPOINT=127.0.0.1:1234
                    # Service name for telemetry identification
                    OTLP_SERVICE_NAME=MemoryDB
                    # Data center location for telemetry reporting
                    OTLP_DC=hf
                    # Enable/disable telemetry reporting (1=enabled, 0=disabled)
                    OTLP_ENABLE=1

                    # Metrics Collection Configuration
                    # SDK metric reporting interval, recommended < 30000ms, default: 1000ms
                    OTLP_METRIC_EXPORT_INTERVAL_MILLIS=3000
                    # Metrics export timeout to server in milliseconds, default: 5000ms
                    OTLP_METRIC_EXPORT_TIMEOUT_MILLIS=3000
                    # Server connection establishment timeout in milliseconds, default: 5000ms
                    OTLP_METRIC_TIMEOUT=3000

                    # Distributed Tracing Configuration
                    # Server connection establishment timeout in milliseconds, default: 5000ms
                    OTLP_TRACE_TIMEOUT=3000
                    # Maximum queue size for BatchSpanProcessor data export, default: 2048
                    OTLP_TRACE_MAX_QUEUE_SIZE=2048
                    # Delay interval between consecutive exports in BatchSpanProcessor, default: 5000ms
                    OTLP_TRACE_SCHEDULE_DELAY_MILLIS=3000
                    # Maximum batch size for BatchSpanProcessor data export, default: 512
                    OTLP_TRACE_MAX_EXPORT_BATCH_SIZE=500
                    # Maximum allowed time for data export from BatchSpanProcessor, default: 30000ms
                    OTLP_TRACE_EXPORT_TIMEOUT_MILLIS=3000
                  permission: null
                  envsubst: null
        - name: core-rpa
          icon: https://raw.githubusercontent.com/iflytek/astron-agent/main/docs/logo.svg
          template: PREBUILT_V2
          spec:
            id: core-rpa
            source:
                image: ghcr.io/iflytek/astron-agent/core-rpa:1.0.9
            ports:
                - id: web
                  port: 17198
                  type: HTTP
            env:
                KAFKA_ENABLE:
                    default: "0"
                KAFKA_SERVERS:
                    default: localhost:9092
                OTLP_ENABLE:
                    default: "0"
                OTLP_ENDPOINT:
                    default: 127.0.0.1:4317
                SERVICE_PORT:
                    default: "17198"
                XIAOWU_RPA_TASK_CREATE_URL:
                    default: ""
                XIAOWU_RPA_TASK_QUERY_URL:
                    default: ""
            configs:
                - path: /opt/core/plugin/rpa/config.env
                  template: |-
                    # =============================================================================
                    # RPA Service Configuration
                    # =============================================================================

                    # Service Information
                    # Basic service identification and network configuration
                    SERVICE_SUB=rpa
                    SERVICE_NAME=RPA
                    SERVICE_LOCATION=hf
                    SERVICE_PORT=17198

                    # Logging Configuration
                    # Application logging level and optional log file path
                    LOG_LEVEL=INFO
                    LOG_PATH=logs
                    # Whether to output logs to stdout, 1=enabled, 0=disabled, default: 0
                    LOG_STDOUT_ENABLE=0

                    # =============================================================================
                    # OpenTelemetry Observability Configuration
                    # =============================================================================

                    # OTLP (OpenTelemetry Protocol) Configuration
                    # Distributed tracing and metrics collection settings
                    # OTLP endpoint for telemetry data submission
                    OTLP_ENDPOINT=$YOUR_OTLP_ENDPOINT
                    # Service name for telemetry identification
                    OTLP_SERVICE_NAME=RPA
                    # Data center location for telemetry reporting
                    OTLP_DC=hf
                    # Enable/disable telemetry reporting (1=enabled, 0=disabled)
                    OTLP_ENABLE=1

                    # Metrics Collection Configuration
                    # SDK metric reporting interval, recommended < 30000ms, default: 1000ms
                    OTLP_METRIC_EXPORT_INTERVAL_MILLIS=3000
                    # Metrics export timeout to server in milliseconds, default: 5000ms
                    OTLP_METRIC_EXPORT_TIMEOUT_MILLIS=3000
                    # Server connection establishment timeout in milliseconds, default: 5000ms
                    OTLP_METRIC_TIMEOUT=3000

                    # Distributed Tracing Configuration
                    # Server connection establishment timeout in milliseconds, default: 5000ms
                    OTLP_TRACE_TIMEOUT=3000
                    # Maximum queue size for BatchSpanProcessor data export, default: 2048
                    OTLP_TRACE_MAX_QUEUE_SIZE=2048
                    # Delay interval between consecutive exports in BatchSpanProcessor, default: 5000ms
                    OTLP_TRACE_SCHEDULE_DELAY_MILLIS=3000
                    # Maximum batch size for BatchSpanProcessor data export, default: 512
                    OTLP_TRACE_MAX_EXPORT_BATCH_SIZE=500
                    # Maximum allowed time for data export from BatchSpanProcessor, default: 30000ms
                    OTLP_TRACE_EXPORT_TIMEOUT_MILLIS=3000

                    # =============================================================================
                    # Message Queue
                    # =============================================================================

                    # Apache Kafka Configuration
                    # Message queue settings for asynchronous processing and event streaming
                    KAFKA_SERVERS=$YOUR_KAFKA_SERVERS
                    KAFKA_TIMEOUT=10
                    KAFKA_TOPIC=spark-agent-builder

                    # =============================================================================
                    # External Service Configuration
                    # =============================================================================
                    # Python Environment Configuration
                    PYTHONUNBUFFERED=1
                    # Service env: development prerelease production
                    ENVIRONMENT=development
                    # Polaris Configuration Center
                    USE_POLARIS=false
                    POLARIS_URL=http://YOUR_POLARIS_HOST:8090
                    POLARIS_CLUSTER=dev
                    POLARIS_USERNAME=YOUR_USERNAME
                    POLARIS_PASSWORD=YOUR_POLARIS_PASSWORD
                    # XiaoWuRPA
                    XIAOWU_RPA_TIMEOUT=3000
                    XIAOWU_RPA_PING_INTERVAL=3
                    XIAOWU_RPA_TASK_QUERY_INTERVAL=10
                    XIAOWU_RPA_TASK_CREATE_URL=$XIAOWU_TASK_CREATE_URL
                    XIAOWU_RPA_TASK_QUERY_URL=$XIAOWU_TASK_QUERY_URL
                  permission: null
                  envsubst: null
        - name: core-link
          icon: https://raw.githubusercontent.com/iflytek/astron-agent/main/docs/logo.svg
          template: PREBUILT_V2
          spec:
            id: core-link
            source:
                image: ghcr.io/iflytek/astron-agent/core-link:1.0.9
            ports:
                - id: web
                  port: 18888
                  type: HTTP
            env:
                KAFKA_ENABLE:
                    default: "0"
                KAFKA_SERVERS:
                    default: localhost:9092
                MYSQL_DB:
                    default: spark-link
                MYSQL_HOST:
                    default: mysql.zeabur.internal
                MYSQL_PASSWORD:
                    default: root123
                MYSQL_PORT:
                    default: "3306"
                MYSQL_USER:
                    default: root
                OTLP_ENABLE:
                    default: "0"
                OTLP_ENDPOINT:
                    default: 127.0.0.1:4317
                REDIS_ADDR:
                    default: redis.zeabur.internal:6379
                REDIS_CLUSTER_ADDR:
                    default: ""
                REDIS_IS_CLUSTER:
                    default: "false"
                REDIS_PASSWORD:
                    default: ""
                SERVICE_PORT:
                    default: "18888"
            configs:
                - path: /opt/core/plugin/link/config.env
                  template: |-
                    # =============================================================================
                    # Link Service Configuration
                    # =============================================================================

                    # Service Information
                    # Basic service identification and network configuration
                    SERVICE_SUB=link
                    SERVICE_NAME=Link
                    SERVICE_LOCATION=hf
                    SERVICE_PORT=18888

                    # Logging Configuration
                    # Application logging level and optional log file path
                    LOG_LEVEL=INFO
                    LOG_PATH=logs
                    # Whether to output logs to stdout, 1=enabled, 0=disabled, default: 0
                    LOG_STDOUT_ENABLE=0

                    # =============================================================================
                    # Database Configuration
                    # =============================================================================

                    # MySQL Database Settings
                    # Primary database connection configuration for persistent data storage
                    MYSQL_HOST=$YOUR_MYSQL_HOST
                    MYSQL_PORT=$YOUR_MYSQL_POST
                    MYSQL_USER=$YOUR_MYSQL_USER
                    MYSQL_PASSWORD=$YOUR_MYSQL_PASSWORD
                    MYSQL_DB=$YOUR_MYSQL_DB

                    # Redis Cache Settings
                    # Redis cluster configuration for caching, session management, and real-time data
                    # Only one cluster address and stand-alone address can be configured, and the cluster address has high priority.
                    # Cluster address
                    # REDIS_CLUSTER_ADDR=$YOUR_REDIS_CLUSTER_ADDR
                    # Stand-alone address
                    #REDIS_ADDR=
                    REDIS_PASSWORD=$YOUR_REDIS_PASSWORD
                    # Cache expiration time in seconds (1 hour = 3600 seconds)
                    REDIS_EXPIRE=3600

                    # =============================================================================
                    # OpenTelemetry Observability Configuration
                    # =============================================================================

                    # OTLP (OpenTelemetry Protocol) Configuration
                    # Distributed tracing and metrics collection settings
                    # OTLP endpoint for telemetry data submission
                    OTLP_ENDPOINT=$YOUR_OTLP_ENDPOINT
                    # Service name for telemetry identification
                    OTLP_SERVICE_NAME=Link
                    # Data center location for telemetry reporting
                    OTLP_DC=hf
                    # Enable/disable telemetry reporting (1=enabled, 0=disabled)
                    OTLP_ENABLE=1

                    # Metrics Collection Configuration
                    # SDK metric reporting interval, recommended < 30000ms, default: 1000ms
                    OTLP_METRIC_EXPORT_INTERVAL_MILLIS=3000
                    # Metrics export timeout to server in milliseconds, default: 5000ms
                    OTLP_METRIC_EXPORT_TIMEOUT_MILLIS=3000
                    # Server connection establishment timeout in milliseconds, default: 5000ms
                    OTLP_METRIC_TIMEOUT=3000

                    # Distributed Tracing Configuration
                    # Server connection establishment timeout in milliseconds, default: 5000ms
                    OTLP_TRACE_TIMEOUT=3000
                    # Maximum queue size for BatchSpanProcessor data export, default: 2048
                    OTLP_TRACE_MAX_QUEUE_SIZE=2048
                    # Delay interval between consecutive exports in BatchSpanProcessor, default: 5000ms
                    OTLP_TRACE_SCHEDULE_DELAY_MILLIS=3000
                    # Maximum batch size for BatchSpanProcessor data export, default: 512
                    OTLP_TRACE_MAX_EXPORT_BATCH_SIZE=500
                    # Maximum allowed time for data export from BatchSpanProcessor, default: 30000ms
                    OTLP_TRACE_EXPORT_TIMEOUT_MILLIS=3000

                    # =============================================================================
                    # Message Queue
                    # =============================================================================

                    # Apache Kafka Configuration
                    # Message queue settings for asynchronous processing and event streaming
                    KAFKA_SERVERS=$YOUR_KAFKA_SERVERS
                    KAFKA_TIMEOUT=10
                    KAFKA_TOPIC=spark-agent-builder

                    # =============================================================================
                    # External Service Configuration
                    # =============================================================================
                    # Python Environment Configuration
                    PYTHONUNBUFFERED=1
                    # Service env: development prerelease production
                    ENVIRONMENT=development
                    # Polaris Configuration Center
                    USE_POLARIS=false
                    POLARIS_URL=http://YOUR_POLARIS_HOST:8090
                    POLARIS_CLUSTER=dev
                    POLARIS_USERNAME=YOUR_USERNAME
                    POLARIS_PASSWORD=YOUR_POLARIS_PASSWORD
                    # Blacklist: Network Segment / IP / Domain Name or empty
                    SEGMENT_BLACK_LIST=
                    IP_BLACK_LIST=
                    DOMAIN_BLACK_LIST=
                    # Default AppID in Tool Management and Execution Interface
                    DEFAULT_APPID=defappid
                    # Snowflake Algorithm: ID Generation
                    DATACENTER_ID=1
                    WORKER_ID=1
                    # Distinguish between official and third-party tools.
                    OFFICIAL_TOOL=official
                    THIRD_TOOL=third
                  permission: null
                  envsubst: null
        - name: core-aitools
          icon: https://raw.githubusercontent.com/iflytek/astron-agent/main/docs/logo.svg
          template: PREBUILT_V2
          spec:
            id: core-aitools
            source:
                image: ghcr.io/iflytek/astron-agent/core-aitools:1.0.9
            ports:
                - id: web
                  port: 18668
                  type: HTTP
            env:
                CONSOLE_MYSQL_DB:
                    default: astron_console
                KAFKA_ENABLE:
                    default: "0"
                KAFKA_SERVERS:
                    default: localhost:9092
                MYSQL_HOST:
                    default: mysql.zeabur.internal
                MYSQL_PASSWORD:
                    default: root123
                MYSQL_PORT:
                    default: "3306"
                MYSQL_URL:
                    default: jdbc:mysql://mysql.zeabur.internal:3306/astron_console?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&characterEncoding=utf8&createDatabaseIfNotExist=true
                MYSQL_USER:
                    default: root
                OSS_ACCESS_KEY_ID:
                    default: minioadmin
                OSS_ACCESS_KEY_SECRET:
                    default: minioadmin123
                OSS_BUCKET_NAME:
                    default: aitools
                OSS_DOWNLOAD_HOST:
                    default: http://minio.zeabur.internal:9000
                OSS_ENDPOINT:
                    default: http://minio.zeabur.internal:9000
                OSS_TTL:
                    default: "157788000"
                OSS_TYPE:
                    default: s3
                REDIS_ADDR:
                    default: redis.zeabur.internal:6379
                REDIS_CLUSTER_ADDR:
                    default: ""
                REDIS_DATABASE:
                    default: "0"
                REDIS_DATABASE_CONSOLE:
                    default: "0"
                REDIS_PASSWORD:
                    default: ""
                SERVICE_PORT:
                    default: "18668"
            configs:
                - path: /opt/core/plugin/aitools/config.env
                  template: |
                    # =============================================================================
                    # Env Configuration
                    # =============================================================================
                    CONFIG_FILE=config.env

                    USE_POLARIS=false
                    POLARIS_URL=
                    POLARIS_USERNAME=
                    POLARIS_PASSWORD=
                    POLARIS_CLUSTER=

                    PROJECT_NAME=
                    VERSION=

                    # Enable hot reload for development (1=enabled, 0=disabled)
                    HOT_RELOAD_ENABLE=0
                    CONFIG_WATCH_INTERVAL=60

                    # =============================================================================
                    # AITools Service Configuration
                    # =============================================================================

                    # Service Information
                    # Basic service identification and network configuration
                    SERVICE_SUB=spl
                    SERVICE_NAME=AITools
                    SERVICE_LOCATION=hf
                    SERVICE_PORT=18668
                    SERVICE_APP=plugin.aitools.app.start_server:aitools_app

                    # =============================================================================
                    # LOG Configuration
                    # =============================================================================
                    LOG_FILE=logs/aitools.log
                    LOG_ROTATION=5 MB
                    LOG_RETENTION=30 days
                    LOG_ENCODING=UTF-8
                    LOG_LEVEL=DEBUG
                    LOG_STDOUT_ENABLE=0

                    # =============================================================================
                    # Middleware Configuration
                    # =============================================================================
                    SAMPLE_RATE=1.0
                    INCLUDE_PATHS=/aitools/v1

                    # =============================================================================
                    # AIOHTTP Configuration
                    # =============================================================================
                    AIOHTTP_CLIENT_TOTAL_TIMEOUT=300.0
                    AIOHTTP_CLIENT_CONNECT_TIMEOUT=10.0
                    AIOHTTP_CLIENT_READ_TIMEOUT=60.0
                    AIOHTTP_CLIENT_LIMIT_CONNECTOR=200
                    AIOHTTP_CLIENT_LIMIT_PER_HOST_CONNECTOR=50
                    AIOHTTP_CLIENT_TTL_DNS_CACHE_CONNECTOR=300
                    AIOHTTP_CLIENT_ENABLE_CLEANUP_CLOSED_CONNECTOR=true
                    AIOHTTP_CLIENT_TRUST_ENV=true

                    # =============================================================================
                    # OSS Configuration
                    # =============================================================================
                    OSS_ENDPOINT=
                    OSS_ACCESS_KEY_ID=
                    OSS_ACCESS_KEY_SECRET=
                    OSS_BUCKET_NAME=
                    OSS_TTL=
                    OSS_TYPE=
                    OSS_DOWNLOAD_HOST=

                    # =============================================================================
                    # Kafka Configuration
                    # =============================================================================
                    KAFKA_ENABLE=0
                    KAFKA_TIMEOUT=10
                    KAFKA_SERVERS=localhost:9092
                    KAFKA_TOPIC=test
                    KAFKA_QUEUE_MAX_SIZE=10000
                    KAFKA_ACKS=1
                    KAFKA_LINGER_MS=10
                    KAFKA_RETRY_INTERVAL=10
                    KAFKA_RETRY_BACKOFF_MS=10000
                    KAFKA_DRAIN_TIMEOUT=5

                    # =============================================================================
                    # Platform Account Cache Configuration
                    # =============================================================================
                    REDIS_CLUSTER_ADDR=
                    REDIS_ADDR=redis:6379
                    REDIS_PASSWORD=
                    REDIS_DATABASE=0
                    REDIS_DATABASE_CONSOLE=0
                    MYSQL_HOST=mysql
                    MYSQL_PORT=3306
                    MYSQL_USER=root
                    MYSQL_PASSWORD=root123
                    CONSOLE_MYSQL_DB=astron_console
                    MYSQL_URL=jdbc:mysql://mysql:3306/astron_console?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&characterEncoding=utf8&createDatabaseIfNotExist=true

                    # =============================================================================
                    # OpenTelemetry Observability Configuration
                    # =============================================================================

                    # OTLP (OpenTelemetry Protocol) Configuration
                    # Distributed tracing and metrics collection settings
                    # OTLP endpoint for telemetry data submission
                    OTLP_ENDPOINT=$YOUR_OTLP_ENDPOINT
                    # Service name for telemetry identification
                    OTLP_SERVICE_NAME=AITools
                    # Data center location for telemetry reporting
                    OTLP_DC=hf
                    # Enable/disable telemetry reporting (1=enabled, 0=disabled)
                    OTLP_ENABLE=0

                    # Metrics Collection Configuration
                    # SDK metric reporting interval, recommended < 30000ms, default: 1000ms
                    OTLP_METRIC_EXPORT_INTERVAL_MILLIS=3000
                    # Metrics export timeout to server in milliseconds, default: 5000ms
                    OTLP_METRIC_EXPORT_TIMEOUT_MILLIS=3000
                    # Server connection establishment timeout in milliseconds, default: 5000ms
                    OTLP_METRIC_TIMEOUT=3000

                    # Distributed Tracing Configuration
                    # Server connection establishment timeout in milliseconds, default: 5000ms
                    OTLP_TRACE_TIMEOUT=3000
                    # Maximum queue size for BatchSpanProcessor data export, default: 2048
                    OTLP_TRACE_MAX_QUEUE_SIZE=2048
                    # Delay interval between consecutive exports in BatchSpanProcessor, default: 5000ms
                    OTLP_TRACE_SCHEDULE_DELAY_MILLIS=3000
                    # Maximum batch size for BatchSpanProcessor data export, default: 512
                    OTLP_TRACE_MAX_EXPORT_BATCH_SIZE=500
                    # Maximum allowed time for data export from BatchSpanProcessor, default: 30000ms
                    OTLP_TRACE_EXPORT_TIMEOUT_MILLIS=3000

                    # OCR LLM
                    # product details：https://www.xfyun.cn/doc/words/OCRforLLM/API.html
                    OCR_LLM_WS_URL=https://cbm01.cn-huabei-1.xf-yun.com/v1/private/se75ocrbm
                    OCR_LLM_HTTP_URL_KEY=https://cbm01.cn-huabei-1.xf-yun.com/v1/private/se75ocrbm
                    OCR_LLM_THREAD_WORKS=2
                    OCR_LLM_SLEEP_TIME=1

                    # image generate
                    # product details：https://www.xfyun.cn/doc/spark/ImageGeneration.html
                    IMAGE_GENERATE_URL=http://spark-api.cn-huabei-1.xf-yun.com/v2.1/tti

                    # image understanding
                    # product details：https://www.xfyun.cn/doc/spark/ImageUnderstanding.html
                    IMAGE_UNDERSTANDING_URL=wss://spark-api.cn-huabei-1.xf-yun.com/v2.1/image

                    # smart text to speech
                    # product details：https://www.xfyun.cn/doc/spark/super%20smart-tts.html
                    TTS_URL=wss://cbm01.cn-huabei-1.xf-yun.com/v1/private/mcd9m97e6

                    # speech evaluation
                    # product details：https://www.xfyun.cn/doc/Ise/IseAPI.html
                    ISE_URL=wss://ise-api.xfyun.cn/v2/open-ise

                    # translation
                    # product details：https://www.xfyun.cn/doc/nlp/xftrans_new/API.html
                    TRANSLATION_URL=https://itrans.xf-yun.com/v1/its
                  permission: null
                  envsubst: null
        - name: core-agent
          icon: https://raw.githubusercontent.com/iflytek/astron-agent/main/docs/logo.svg
          template: PREBUILT_V2
          spec:
            id: core-agent
            source:
                image: ghcr.io/iflytek/astron-agent/core-agent:1.0.9
            ports:
                - id: web
                  port: 17870
                  type: HTTP
            env:
                APP_AUTH_API_KEY:
                    default: YOUR_APP_AUTH_API_KEY
                APP_AUTH_HOST:
                    default: core-tenant.zeabur.internal
                APP_AUTH_PROT:
                    default: http
                APP_AUTH_SECRET:
                    default: YOUR_APP_AUTH_SECRET
                CHUNK_QUERY_URL:
                    default: http://core-knowledge.zeabur.internal:20010/knowledge/v1/chunk/query
                GET_LINK_URL:
                    default: http://core-link.zeabur.internal:18888/api/v1/tools
                GET_WORKFLOWS_URL:
                    default: http://core-workflow.zeabur.internal:7880/sparkflow/v1/protocol/get
                KAFKA_ENABLE:
                    default: "0"
                KAFKA_SERVERS:
                    default: localhost:9092
                KAFKA_TIMEOUT:
                    default: "60"
                KAFKA_TOPIC:
                    default: spark-agent-builder
                LIST_MCP_PLUGIN_URL:
                    default: http://core-link.zeabur.internal:18888/api/v1/mcp/tool_list
                MYSQL_DB:
                    default: agent
                MYSQL_HOST:
                    default: mysql.zeabur.internal
                MYSQL_PASSWORD:
                    default: root123
                MYSQL_PORT:
                    default: "3306"
                MYSQL_USER:
                    default: root
                OTLP_ENABLE:
                    default: "0"
                OTLP_ENDPOINT:
                    default: 127.0.0.1:4317
                OTLP_METRIC_EXPORT_INTERVAL_MILLIS:
                    default: "3000"
                OTLP_METRIC_EXPORT_TIMEOUT_MILLIS:
                    default: "3000"
                OTLP_METRIC_TIMEOUT:
                    default: "3000"
                OTLP_TRACE_EXPORT_TIMEOUT_MILLIS:
                    default: "3000"
                OTLP_TRACE_MAX_EXPORT_BATCH_SIZE:
                    default: "2048"
                OTLP_TRACE_MAX_QUEUE_SIZE:
                    default: "2048"
                OTLP_TRACE_SCHEDULE_DELAY_MILLIS:
                    default: "3000"
                OTLP_TRACE_TIMEOUT:
                    default: "3000"
                REDIS_ADDR:
                    default: redis.zeabur.internal:6379
                REDIS_CLUSTER_ADDR:
                    default: ""
                REDIS_EXPIRE:
                    default: "3600"
                REDIS_PASSWORD:
                    default: ""
                RUN_LINK_URL:
                    default: http://core-link.zeabur.internal:18888/api/v1/tools/http_run
                RUN_MCP_PLUGIN_URL:
                    default: http://core-link.zeabur.internal:18888/api/v1/mcp/call_tool
                SERVICE_HOST:
                    default: 0.0.0.0
                SERVICE_LOCATION:
                    default: hf
                SERVICE_PORT:
                    default: "17870"
                SERVICE_RELOAD:
                    default: "false"
                SERVICE_WORKERS:
                    default: "1"
                SERVICE_WS_PING_INTERVAL:
                    default: "false"
                SERVICE_WS_PING_TIMEOUT:
                    default: "false"
                UPLOAD_METRICS:
                    default: "false"
                UPLOAD_NODE_TRACE:
                    default: "false"
                VERSIONS_LINK_URL:
                    default: http://core-link.zeabur.internal:18888/api/v1/tools/versions
                WORKFLOW_SSE_BASE_URL:
                    default: http://core-workflow.zeabur.internal:7880/workflow/v1
            configs:
                - path: /opt/core/agent/config.env
                  template: |
                    # Agent Development Environment Configuration File Example
                    # Copy this file to config.env and modify configuration values according to your actual environment
                    # Note: config.env file contains sensitive information and should not be committed to version control

                    # Python Environment Configuration
                    PYTHONUNBUFFERED=1

                    # Runtime Environment Configuration
                    RUN_ENVIRON=dev
                    USE_POLARIS=false

                    # Service Configuration
                    # Service identification and network settings for the Agent service
                    SERVICE_NAME=Agent
                    SERVICE_SUB=sag
                    SERVICE_LOCATION=hf
                    SERVICE_HOST=0.0.0.0
                    SERVICE_PORT=17870
                    SERVICE_WORKERS=1
                    SERVICE_RELOAD=false
                    SERVICE_WS_PING_INTERVAL=false
                    SERVICE_WS_PING_TIMEOUT=false

                    # When USE_POLARIS is false, the following configurations take effect

                    # Redis Cache Settings
                    # Redis cluster configuration for caching, session management, and real-time data
                    # Only one cluster address and stand-alone address can be configured, and the cluster address has high priority.
                    # Cluster address
                    REDIS_CLUSTER_ADDR=YOUR_REDIS_CLUSTER_ADDR1,YOUR_REDIS_CLUSTER_ADDR2
                    # Stand-alone address
                    #REDIS_ADDR=YOUR_REDIS_ADDR
                    REDIS_PASSWORD=YOUR_REDIS_PASSWORD
                    # Cache expiration time in seconds (1 hour = 3600 seconds)
                    REDIS_EXPIRE=3600

                    # MySQL Configuration
                    MYSQL_HOST=YOUR_MYSQL_HOST
                    MYSQL_PORT=YOUR_MYSQL_PORT
                    MYSQL_USER=YOUR_MYSQL_USER
                    MYSQL_PASSWORD=YOUR_MYSQL_PASSWORD
                    MYSQL_DB=YOUR_DATABASE_NAME

                    # Metrics Configuration
                    OTLP_ENDPOINT=YOUR_METRIC_ENDPOINT:4317
                    # Enable/disable telemetry reporting (1=enabled, 0=disabled)
                    OTLP_ENABLE=1
                    OTLP_METRIC_TIMEOUT=3000
                    OTLP_METRIC_EXPORT_INTERVAL_MILLIS=3000
                    OTLP_METRIC_EXPORT_TIMEOUT_MILLIS=3000


                    # ELK Upload Configuration
                    UPLOAD_NODE_TRACE=true
                    UPLOAD_METRICS=true

                    # Tracing Configuration
                    OTLP_TRACE_TIMEOUT=3000
                    OTLP_TRACE_MAX_QUEUE_SIZE=2048
                    OTLP_TRACE_SCHEDULE_DELAY_MILLIS=3000
                    OTLP_TRACE_MAX_EXPORT_BATCH_SIZE=2048
                    OTLP_TRACE_EXPORT_TIMEOUT_MILLIS=3000

                    # Kafka Configuration for Node Tracing
                    KAFKA_SERVERS=YOUR_KAFKA_SERVERS
                    KAFKA_TIMEOUT=10
                    KAFKA_TOPIC=spark-agent-builder

                    # Link Service URLs
                    GET_LINK_URL=http://YOUR_LINK_HOST:18888/api/v1/tools
                    VERSIONS_LINK_URL=http://YOUR_LINK_HOST:18888/api/v1/tools/versions
                    RUN_LINK_URL=http://YOUR_LINK_HOST:18888/api/v1/tools/http_run

                    # Workflow Service URLs
                    GET_WORKFLOWS_URL=http://YOUR_WORKFLOW_HOST:7880/sparkflow/v1/protocol/get
                    WORKFLOW_SSE_BASE_URL=http://YOUR_WORKFLOW_HOST:7880/workflow/v1

                    # Knowledge Service URLs
                    CHUNK_QUERY_URL=http://YOUR_KNOWLEDGE_HOST:10007/knowledge/v1/chunk/query

                    # MCP Plugin URLs
                    LIST_MCP_PLUGIN_URL=http://YOUR_MCP_HOST:18888/api/v1/mcp/tool_list
                    RUN_MCP_PLUGIN_URL=http://YOUR_MCP_HOST:18888/api/v1/mcp/call_tool

                    # App Authentication Configuration
                    APP_AUTH_HOST=YOUR_APP_AUTH_HOST
                    APP_AUTH_ROUTER=/api-services/v2/app/details
                    APP_AUTH_PROT=http
                    APP_AUTH_API_KEY=YOUR_APP_AUTH_API_KEY
                    APP_AUTH_SECRET=YOUR_APP_AUTH_SECRET

                    # LLM Request Configuration
                    # Skip SSL certificate verification (only for development/testing)
                    # WARNING: Setting this to true in production is a security risk
                    # Set to true only if you encounter SSL certificate errors with HTTPS URLs
                    SKIP_SSL_VERIFY=false
                  permission: null
                  envsubst: null
        - name: core-knowledge
          icon: https://raw.githubusercontent.com/iflytek/astron-agent/main/docs/logo.svg
          template: PREBUILT_V2
          spec:
            id: core-knowledge
            source:
                image: ghcr.io/iflytek/astron-agent/core-knowledge:1.0.9
            ports:
                - id: web
                  port: 20010
                  type: HTTP
            env:
                OTLP_ENABLE:
                    default: "0"
                SERVICE_PORT:
                    default: "20010"
            configs:
                - path: /opt/core/knowledge/config.env
                  template: |+
                    # Knowledge Service Configuration
                    # This file contains environment variables for the Knowledge Service application

                    # ============================
                    # Serve Configuration
                    # ============================
                    SERVICE_PORT=20010
                    SERVICE_NAME=Knowledge
                    SERVICE_SUB=spf
                    SERVICE_LOCATION=hf
                    WORKERS=1

                    # ============================
                    # Logging Configuration
                    # ============================
                    # Log level for the knowledge service (DEBUG, INFO, WARN, ERROR)
                    LOG_PATH=logs
                    LOG_LEVEL=INFO
                    # Whether to output logs to stdout, 1=enabled, 0=disabled, default: 0
                    LOG_STDOUT_ENABLE=0

                    # ============================
                    # OpenTelemetry Observability Configuration
                    # ============================
                    # OTLP endpoint for telemetry data submission
                    OTLP_ENDPOINT=127.0.0.1:4317
                    # Service name for telemetry identification
                    OTLP_SERVICE_NAME=Knowledge
                    # Data center location for telemetry reporting
                    OTLP_DC=hf
                    # Enable/disable telemetry reporting (1=enabled, 0=disabled)
                    OTLP_ENABLE=0

                    # ============================
                    # Metrics Configuration
                    # ============================
                    # SDK metric reporting interval, recommended < 30000ms, default: 1000ms
                    OTLP_METRIC_EXPORT_INTERVAL_MILLIS=3000
                    # Metrics export timeout to server in milliseconds, default: 5000ms
                    OTLP_METRIC_EXPORT_TIMEOUT_MILLIS=3000
                    # Server connection establishment timeout in milliseconds, default: 5000ms
                    OTLP_METRIC_TIMEOUT=3000

                    # ============================
                    # Distributed Tracing Configuration
                    # ============================
                    # Server connection establishment timeout in milliseconds, default: 5000ms
                    OTLP_TRACE_TIMEOUT=3000
                    # Maximum queue size for BatchSpanProcessor data export, default: 2048
                    OTLP_TRACE_MAX_QUEUE_SIZE=2048
                    # Delay interval between consecutive exports in BatchSpanProcessor, default: 5000ms
                    OTLP_TRACE_SCHEDULE_DELAY_MILLIS=3000
                    # Maximum batch size for BatchSpanProcessor data export, default: 512
                    OTLP_TRACE_MAX_EXPORT_BATCH_SIZE=500
                    # Maximum allowed time for data export from BatchSpanProcessor, default: 30000ms
                    OTLP_TRACE_EXPORT_TIMEOUT_MILLIS=3000

                    # ============================
                    # AIUI Service Configuration
                    # ============================
                    # Repository ID for AIUI queries
                    AIUI_QUERY_REPOID_V2=xxxxxxxxxx
                    # AIUI service base URL
                    AIUI_URL_V2=http://xxxx.xxxxx.xxxx
                    # API key for AIUI service authentication
                    AIUI_API_KEY=xxxxxxxxxx
                    # API secret for AIUI service authentication
                    AIUI_API_SECRET=xxxxxxxxxx
                    # AIUI client timeout
                    AIUI_CLIENT_TIMEOUT=30

                    # ============================
                    # Xinghuo (Spark) Service Configuration
                    # ============================
                    # Xinghuo RAG service base URL
                    XINGHUO_RAG_URL=http://chatdoc.xfyun.cn/
                    # Search overlap parameter for Xinghuo
                    XINGHUO_SEARCH_OVERLAP=1
                    # Xinghuo client timeout
                    XINGHUO_CLIENT_TIMEOUT=60

                    # ============================
                    # SparkDesk Service Configuration
                    # ============================
                    # SparkDesk RAG service base URL
                    DESK_RAG_URL=http://xxxx.xxx.xxx/xxx/xxx/xxx
                    # Application ID for SparkDesk service
                    DESK_APP_ID=123456
                    # API secret for SparkDesk service authentication
                    DESK_API_SECRET=xxxxxxxxxx
                    # SparkDesk client timeout
                    DESK_CLIENT_TIMEOUT=30

                  permission: null
                  envsubst: null
        - name: core-workflow
          icon: https://raw.githubusercontent.com/iflytek/astron-agent/main/docs/logo.svg
          template: PREBUILT_V2
          spec:
            id: core-workflow
            source:
                image: ghcr.io/iflytek/astron-agent/core-workflow:1.0.9
            ports:
                - id: web
                  port: 7880
                  type: HTTP
            env:
                AGENT_BASE_URL:
                    default: http://core-agent.zeabur.internal:17870
                APP_MANAGE_PLAT_BASE_URL:
                    default: http://core-tenant.zeabur.internal:5052
                KAFKA_ENABLE:
                    default: "0"
                KAFKA_SERVERS:
                    default: localhost:9092
                KAFKA_TIMEOUT:
                    default: "60"
                KAFKA_TOPIC:
                    default: spark-agent-builder
                KNOWLEDGE_BASE_URL:
                    default: http://core-knowledge.zeabur.internal:20010
                KNOWLEDGE_PRO_BASE_URL:
                    default: http://core-knowledge.zeabur.internal:20010
                MYSQL_DB:
                    default: workflow
                MYSQL_HOST:
                    default: mysql.zeabur.internal
                MYSQL_PASSWORD:
                    default: root123
                MYSQL_PORT:
                    default: "3306"
                MYSQL_USER:
                    default: root
                OSS_ACCESS_KEY_ID:
                    default: minioadmin
                OSS_ACCESS_KEY_SECRET:
                    default: minioadmin123
                OSS_BUCKET_NAME:
                    default: workflow
                OSS_DOWNLOAD_HOST:
                    default: http://minio.zeabur.internal:9000
                OSS_ENDPOINT:
                    default: http://minio.zeabur.internal:9000
                OSS_TTL:
                    default: "157788000"
                OSS_TYPE:
                    default: s3
                OTLP_ENABLE:
                    default: "0"
                OTLP_ENDPOINT:
                    default: 127.0.0.1:4317
                OTLP_METRIC_EXPORT_INTERVAL_MILLIS:
                    default: "3000"
                OTLP_METRIC_EXPORT_TIMEOUT_MILLIS:
                    default: "3000"
                OTLP_METRIC_TIMEOUT:
                    default: "3000"
                OTLP_TRACE_EXPORT_TIMEOUT_MILLIS:
                    default: "3000"
                OTLP_TRACE_MAX_EXPORT_BATCH_SIZE:
                    default: "500"
                OTLP_TRACE_MAX_QUEUE_SIZE:
                    default: "2048"
                OTLP_TRACE_SCHEDULE_DELAY_MILLIS:
                    default: "3000"
                OTLP_TRACE_TIMEOUT:
                    default: "3000"
                PGSQL_BASE_URL:
                    default: http://core-database.zeabur.internal:7990
                PLUGIN_BASE_URL:
                    default: http://core-link.zeabur.internal:18888
                REDIS_ADDR:
                    default: redis.zeabur.internal:6379
                REDIS_CLUSTER_ADDR:
                    default: ""
                REDIS_EXPIRE:
                    default: "3600"
                REDIS_PASSWORD:
                    default: ""
                RPA_BASE_URL:
                    default: http://core-rpa.zeabur.internal:17198
                RUNTIME_ENV:
                    default: dev
                SERVICE_PORT:
                    default: "7880"
                WORKFLOW_BASE_URL:
                    default: http://core-workflow.zeabur.internal:7880
            configs:
                - path: /opt/core/workflow/config.env
                  template: |
                    # =============================================================================
                    # Workflow Service Configuration
                    # =============================================================================

                    # Service Information
                    # Basic service identification and network configuration
                    SERVICE_SUB=spf
                    SERVICE_NAME=WorkFlow
                    SERVICE_LOCATION=hf
                    SERVICE_PORT=7880

                    # Logging Configuration
                    # Application logging level and optional log file path
                    LOG_LEVEL=ERROR
                    LOG_PATH=logs
                    # Whether to output logs to stdout, 1=enabled, 0=disabled, default: 0
                    LOG_STDOUT_ENABLE=0

                    # HTTP Client Configuration
                    # Connection pool size for HTTP client, default: 2000
                    HTTP_CLIENT_CONNECTION_POOL_SIZE=2000
                    # DNS cache time for HTTP client, default: 300
                    HTTP_CLIENT_DNS_CACHE_TIME=300
                    # Use DNS cache for HTTP client, default: 1
                    HTTP_CLIENT_USE_DNS_CACHE=1

                    # =============================================================================
                    # Application Lifecycle Configuration
                    # =============================================================================

                    # Graceful Shutdown Configuration
                    # Shutdown interval and timeout settings for proper resource cleanup
                    SHUTDOWN_INTERVAL=2
                    SHUTDOWN_TIMEOUT=180

                    # =============================================================================
                    # Database Configuration
                    # =============================================================================

                    # MySQL Database Settings
                    # Primary database connection configuration for persistent data storage
                    MYSQL_HOST=127.0.0.1
                    MYSQL_PORT=3306
                    MYSQL_USER=admin
                    MYSQL_PASSWORD=admin
                    MYSQL_DB=workflow

                    # Redis Cache Settings
                    # Redis cluster configuration for caching, session management, and real-time data
                    # Only one cluster address and stand-alone address can be configured, and the cluster address has high priority.
                    # Cluster address
                    REDIS_CLUSTER_ADDR=
                    # Stand-alone address
                    REDIS_ADDR=127.0.0.1:6379
                    REDIS_PASSWORD=
                    # Cache expiration time in seconds (1 hour = 3600 seconds)
                    REDIS_EXPIRE=3600

                    # =============================================================================
                    # OpenTelemetry Observability Configuration
                    # =============================================================================

                    # OTLP (OpenTelemetry Protocol) Configuration
                    # Distributed tracing and metrics collection settings
                    # OTLP endpoint for telemetry data submission
                    OTLP_ENDPOINT=127.0.0.1:4317
                    # Enable/disable telemetry reporting (1=enabled, 0=disabled)
                    OTLP_ENABLE=0

                    # Metrics Collection Configuration
                    # SDK metric reporting interval, recommended < 30000ms, default: 1000ms
                    OTLP_METRIC_EXPORT_INTERVAL_MILLIS=3000
                    # Metrics export timeout to server in milliseconds, default: 5000ms
                    OTLP_METRIC_EXPORT_TIMEOUT_MILLIS=3000
                    # Server connection establishment timeout in milliseconds, default: 5000ms
                    OTLP_METRIC_TIMEOUT=3000

                    # Distributed Tracing Configuration
                    # Server connection establishment timeout in milliseconds, default: 5000ms
                    OTLP_TRACE_TIMEOUT=3000
                    # Maximum queue size for BatchSpanProcessor data export, default: 2048
                    OTLP_TRACE_MAX_QUEUE_SIZE=2048
                    # Delay interval between consecutive exports in BatchSpanProcessor, default: 5000ms
                    OTLP_TRACE_SCHEDULE_DELAY_MILLIS=3000
                    # Maximum batch size for BatchSpanProcessor data export, default: 512
                    OTLP_TRACE_MAX_EXPORT_BATCH_SIZE=500
                    # Maximum allowed time for data export from BatchSpanProcessor, default: 30000ms
                    OTLP_TRACE_EXPORT_TIMEOUT_MILLIS=3000

                    # =============================================================================
                    # Object Storage Configuration
                    # =============================================================================

                    # Object Storage Service Settings
                    # Storage type options: ifly_gateway_storage (iFlytek), s3 (Amazon S3 compatible)
                    OSS_TYPE=s3
                    OSS_ENDPOINT=http://127.0.0.1:9000
                    OSS_ACCESS_KEY_ID=admin
                    OSS_ACCESS_KEY_SECRET=admin
                    OSS_BUCKET_NAME=workflow
                    # Download domain for S3, required when using S3 storage type
                    OSS_DOWNLOAD_HOST=http://127.0.0.1:9000
                    # File validity period for iFlytek object storage (in seconds)
                    OSS_TTL=157788000

                    # =============================================================================
                    # Message Queue
                    # =============================================================================

                    # Apache Kafka Configuration
                    # Message queue settings for asynchronous processing and event streaming
                    KAFKA_ENABLE=0
                    KAFKA_SERVERS=127.0.0.1:9092
                    KAFKA_TIMEOUT=10
                    KAFKA_TOPIC=spark-agent-builder

                    # =============================================================================
                    # External Service Configuration
                    # =============================================================================

                    # Code Executor Settings
                      # Supported types: local, ifly, ifly-v2, langchain, e2b (default: local)
                    CODE_EXEC_TYPE=local
                    CODE_EXEC_URL=
                    # Code execution timeout in seconds, default: 10s
                    CODE_EXEC_TIMEOUT_SEC=10
                    CODE_EXEC_API_KEY=
                    CODE_EXEC_API_SECRET=

                    # Image Understanding Model Configuration
                    # Spark image model domain specifications for visual AI processing
                    SPARK_IMAGE_MODEL_DOMAIN=image,imagev3

                    # Knowledge Base Service Configuration
                    # Standard knowledge base recall service endpoint for document retrieval
                    KNOWLEDGE_BASE_URL=http://127.0.0.1:10007

                    # Advanced Knowledge Base Pro Service
                    # Enhanced knowledge base with agent chat capabilities
                    KNOWLEDGE_PRO_BASE_URL=http://127.0.0.1:10007

                    # Plugin Management Configuration
                    # Plugin version management and execution endpoints
                    PLUGIN_BASE_URL=http://127.0.0.1:18888

                    # Workflow Service Endpoint
                    # Internal workflow service URL for server-sent events
                    WORKFLOW_BASE_URL=http://127.0.0.1:7880

                    # Application Management Platform
                    # Platform integration credentials and endpoint for app lifecycle management
                    APP_MANAGE_PLAT_BASE_URL=http://127.0.0.1:5052
                    APP_MANAGE_PLAT_KEY=
                    APP_MANAGE_PLAT_SECRET=

                    # Agent Node Configuration
                    # Custom agent API endpoint for chat completions and AI interactions
                    AGENT_BASE_URL=http://127.0.0.1:17870

                    # Quick Thinking Workflow Configuration
                    # Specify workflows and models for fast inference and rapid response scenarios
                    QUICKLY_THINK_FLOW_IDS=
                    QUICKLY_THINK_MODELS=
                    QUICKLY_THINK_APPS=

                    # PostgreSQL Database Node Configuration
                    # External PostgreSQL service endpoint for DML operations and data queries
                    PGSQL_BASE_URL=http://127.0.0.1:7990

                    # File Type Support Configuration
                    FILE_POLICY=[{"category":"image","extensions":["jpg","jpeg","png","bmp"],"size":"1024*1024*50"},{"category":"pdf","extensions":["pdf"],"size":"1024*1024*50"},{"category":"doc","extensions":["docx","doc"],"size":"1024*1024*50"},{"category":"ppt","extensions":["ppt","pptx"],"size":"1024*1024*50"},{"category":"excel","extensions":["xls","xlsx","csv"],"size":"1024*1024*50"},{"category":"txt","extensions":["txt"],"size":"1024*1024*50"},{"category":"audio","extensions":["wav","mp3","flac","m4a","aac","ogg","wma","midi"],"size":"1024*1024*50"},{"category":"video","extensions":["mp4","mkv","wmv","avi","mov","flv"],"size":"1024*1024*500"},{"category":"subtitle","extensions":["srt","ass","ssa","vtt"],"size":"1024*1024*50"}]

                    # RPA Service
                    RPA_BASE_URL=http://127.0.0.1:17198

                    # MCP Service
                    MCP_BASE_URL=http://127.0.0.1:18888

                    # =============================================================================
                    # Content Audit and Security Configuration
                    # =============================================================================

                    # Enable/disable content audit, 1=enabled, 0=disabled
                    AUDIT_ENABLE=0
                    # iFlytek Content Audit Service
                    # Content moderation and audit service credentials for compliance and safety
                    IFLYTEK_AUDIT_APP_ID=
                    IFLYTEK_AUDIT_ACCESS_KEY_ID=
                    IFLYTEK_AUDIT_ACCESS_KEY_SECRET=
                    IFLYTEK_AUDIT_HOST=
                  permission: null
                  envsubst: null
        - name: console-frontend
          icon: https://raw.githubusercontent.com/iflytek/astron-agent/main/docs/logo.svg
          template: PREBUILT_V2
          spec:
            id: console-frontend
            source:
                image: ghcr.io/iflytek/astron-agent/console-frontend:1.0.9
            ports:
                - id: web
                  port: 1881
                  type: HTTP
            env:
                CONSOLE_CASDOOR_APP:
                    default: astron-agent-app
                CONSOLE_CASDOOR_ID:
                    default: astron-agent-client
                CONSOLE_CASDOOR_ORG:
                    default: built-in
                CONSOLE_CASDOOR_URL:
                    default: https://${CASDOOR_DOMAIN}
        - name: console-hub
          icon: https://raw.githubusercontent.com/iflytek/astron-agent/main/docs/logo.svg
          template: PREBUILT_V2
          spec:
            id: console-hub
            source:
                image: ghcr.io/iflytek/astron-agent/console-hub:1.0.9
            ports:
                - id: web
                  port: 8080
                  type: HTTP
            env:
                ADMIN_UID:
                    default: "9999"
                COMMON_API_SECRET:
                    default: apiSecret
                COMMON_APIKEY:
                    default: apiKey
                COMMON_APPID:
                    default: appid
                CONSOLE_CASDOOR_APP:
                    default: astron-agent-app
                CONSOLE_CASDOOR_ID:
                    default: astron-agent-client
                CONSOLE_CASDOOR_ORG:
                    default: built-in
                CONSOLE_CASDOOR_URL:
                    default: https://${CASDOOR_DOMAIN}
                CONSOLE_DOMAIN:
                    default: https://${PUBLIC_DOMAIN}
                MYSQL_PASSWORD:
                    default: root123
                MYSQL_URL:
                    default: jdbc:mysql://mysql.zeabur.internal:3306/astron_console?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&characterEncoding=utf8&createDatabaseIfNotExist=true
                MYSQL_USER:
                    default: root
                OAUTH2_AUDIENCE:
                    default: astron-agent-client
                OAUTH2_ISSUER_URI:
                    default: https://${CASDOOR_DOMAIN}
                OAUTH2_JWK_SET_URI:
                    default: https://${CASDOOR_DOMAIN}/.well-known/jwks
                OSS_ACCESS_KEY_ID:
                    default: minioadmin
                OSS_ACCESS_KEY_SECRET:
                    default: minioadmin123
                OSS_BUCKET_CONSOLE:
                    default: console
                OSS_ENDPOINT:
                    default: http://minio.zeabur.internal:9000
                OSS_PRESIGN_EXPIRY_SECONDS_CONSOLE:
                    default: "600"
                OSS_REMOTE_ENDPOINT:
                    default: http://minio.zeabur.internal:9000
                REDIS_DATABASE_CONSOLE:
                    default: "0"
                REDIS_HOST:
                    default: redis.zeabur.internal
                REDIS_PASSWORD:
                    default: ""
                REDIS_PORT:
                    default: "6379"
                RPA_URL:
                    default: ""
                SPARK_DB_TYPE:
                    default: postgresql
                TENANT_ID:
                    default: tenantId
                TENANT_KEY:
                    default: tenantKey
                TENANT_SECRET:
                    default: tenantSecret
                TENANT_VERIFY_APP_AUTH:
                    default: http://core-tenant.zeabur.internal:5052/v2/app/key/verify
                WORKFLOW_CHAT_URL:
                    default: http://core-workflow.zeabur.internal:7880/workflow/v1/chat/completions
                WORKFLOW_DEBUG_URL:
                    default: http://core-workflow.zeabur.internal:7880/workflow/v1/debug/chat/completions
                WORKFLOW_RESUME_URL:
                    default: http://core-workflow.zeabur.internal:7880/workflow/v1/resume
        - name: nginx
          icon: https://raw.githubusercontent.com/zeabur/service-icons/main/marketplace/nginx.svg
          template: PREBUILT_V2
          spec:
            id: nginx
            source:
                image: nginx:1.25-alpine
            ports:
                - id: web
                  port: 80
                  type: HTTP
            configs:
                - path: /etc/nginx/nginx.conf
                  template: |
                    worker_processes auto;
                    worker_rlimit_nofile 65535;

                    events {
                        worker_connections 65535;
                        multi_accept on;
                    }

                    http {
                        include       /etc/nginx/mime.types;
                        default_type  application/octet-stream;

                        # Log format
                        log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                                        '$status $body_bytes_sent "$http_referer" '
                                        '"$http_user_agent" "$http_x_forwarded_for"';

                        # Access log
                        access_log /var/log/nginx/access.log main;
                        error_log /var/log/nginx/error.log warn;

                        # Basic configuration
                        sendfile on;
                        tcp_nopush on;
                        tcp_nodelay on;
                        keepalive_timeout 65;
                        types_hash_max_size 2048;

                        # Upload size limit
                        client_max_body_size 20m;

                        # Gzip compression
                        gzip on;
                        gzip_vary on;
                        gzip_min_length 1000;
                        gzip_types
                            text/plain
                            text/css
                            text/xml
                            text/javascript
                            application/xml+rss
                            application/javascript
                            application/json;

                        server {
                            listen 80;
                            server_name localhost;

                            # Security headers
                            add_header X-Frame-Options "SAMEORIGIN" always;
                            add_header X-XSS-Protection "1; mode=block" always;
                            add_header X-Content-Type-Options "nosniff" always;

                            # Runtime config - no cache (dynamic config file)
                            location = /runtime-config.js {
                                proxy_pass http://console-frontend.zeabur.internal:1881;
                                proxy_set_header Host $host;
                                proxy_set_header X-Real-IP $remote_addr;
                                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                                proxy_set_header X-Forwarded-Proto $scheme;

                                # Disable caching for runtime config
                                expires -1;
                                add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0";
                                add_header Pragma "no-cache";
                            }

                            # Static resource caching
                            location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
                                proxy_pass http://console-frontend.zeabur.internal:1881;
                                proxy_set_header Host $host;
                                proxy_set_header X-Real-IP $remote_addr;
                                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                                proxy_set_header X-Forwarded-Proto $scheme;

                                expires 1y;
                                add_header Cache-Control "public, immutable";
                            }

                            # Internal auth subrequest used by public workflow API locations.
                            location = /_gateway_auth/workflow {
                                internal;
                                proxy_pass http://console-hub.zeabur.internal:8080/internal/gateway/auth/workflow;
                                proxy_pass_request_body off;
                                proxy_set_header Content-Length "";
                                proxy_set_header Authorization $http_authorization;
                                proxy_set_header X-Original-URI $request_uri;
                                proxy_set_header X-Original-Method $request_method;
                                proxy_set_header X-Real-IP $remote_addr;
                                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                                proxy_set_header X-Forwarded-Proto $scheme;
                            }

                            # SSE (Server-Sent Events) API proxy for workflow chat completions
                            location = /workflow/v1/chat/completions {
                                auth_request /_gateway_auth/workflow;
                                auth_request_set $auth_app_id $upstream_http_x_consumer_username;

                                proxy_pass http://core-workflow.zeabur.internal:7880/workflow/v1/chat/completions;
                                proxy_set_header Host $host;
                                proxy_set_header X-Real-IP $remote_addr;
                                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                                proxy_set_header X-Forwarded-Proto $scheme;
                                proxy_set_header X-Consumer-Username $auth_app_id;
                                proxy_set_header Authorization "";

                                # SSE specific settings
                                proxy_buffering off;                    # Disable buffering for real-time data transmission
                                proxy_cache off;                        # Disable caching
                                proxy_set_header Connection '';         # SSE uses persistent connections
                                proxy_http_version 1.1;                 # Use HTTP/1.1
                                chunked_transfer_encoding on;           # Enable chunked transfer encoding

                                # Prevent nginx from buffering responses
                                proxy_set_header X-Accel-Buffering no;

                                # Timeout settings - SSE requires long-lived connections
                                proxy_connect_timeout 60s;
                                proxy_send_timeout 1800s;                # 30 minutes send timeout
                                proxy_read_timeout 1800s;                # 30 minutes read timeout

                                # Set correct headers for SSE
                                add_header Cache-Control 'no-cache';
                                add_header X-Accel-Buffering 'no';
                            }

                            # Public workflow resume endpoint, protected by the same gateway auth.
                            location = /workflow/v1/resume {
                                auth_request /_gateway_auth/workflow;
                                auth_request_set $auth_app_id $upstream_http_x_consumer_username;

                                proxy_pass http://core-workflow.zeabur.internal:7880/workflow/v1/resume;
                                proxy_set_header Host $host;
                                proxy_set_header X-Real-IP $remote_addr;
                                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                                proxy_set_header X-Forwarded-Proto $scheme;
                                proxy_set_header X-Consumer-Username $auth_app_id;
                                proxy_set_header Authorization "";

                                # SSE specific settings
                                proxy_http_version 1.1;
                                proxy_request_buffering off;
                                proxy_connect_timeout 60s;
                                proxy_send_timeout 1800s;
                                proxy_read_timeout 1800s;
                            }

                            # Do not expose other workflow internal APIs through the public gateway.
                            location ^~ /workflow/v1/ {
                                return 404;
                            }

                            # SSE (Server-Sent Events) API proxy for chat messages
                            location /console-api/chat-message/ {
                                proxy_pass http://console-hub.zeabur.internal:8080/chat-message/;
                                proxy_set_header Host $host;
                                proxy_set_header X-Real-IP $remote_addr;
                                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                                proxy_set_header X-Forwarded-Proto $scheme;

                                # SSE specific settings
                                proxy_buffering off;                    # Disable buffering for real-time data transmission
                                proxy_cache off;                        # Disable caching
                                proxy_set_header Connection '';         # SSE uses persistent connections
                                proxy_http_version 1.1;                 # Use HTTP/1.1
                                chunked_transfer_encoding on;           # Enable chunked transfer encoding

                                # Prevent nginx from buffering responses
                                proxy_set_header X-Accel-Buffering no;

                                # Timeout settings - SSE requires long-lived connections
                                proxy_connect_timeout 60s;
                                proxy_send_timeout 1800s;                # 30 minutes send timeout
                                proxy_read_timeout 1800s;                # 30 minutes read timeout

                                # Set correct headers for SSE
                                add_header Cache-Control 'no-cache';
                                add_header X-Accel-Buffering 'no';
                            }

                            # The gateway auth endpoint is only reachable through internal auth_request.
                            location = /console-api/internal/gateway/auth/workflow {
                                return 404;
                            }

                            # Backend API proxy - proxy /console-api path to console-hub
                            location /console-api/ {
                                proxy_pass http://console-hub.zeabur.internal:8080/;
                                proxy_set_header Host $host;
                                proxy_set_header X-Real-IP $remote_addr;
                                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                                proxy_set_header X-Forwarded-Proto $scheme;

                                # Timeout settings
                                proxy_connect_timeout 30s;
                                proxy_send_timeout 30s;
                                proxy_read_timeout 30s;
                            }

                            # Frontend application proxy - default proxy to console-frontend
                            location / {
                                proxy_pass http://console-frontend.zeabur.internal:1881;
                                proxy_set_header Host $host;
                                proxy_set_header X-Real-IP $remote_addr;
                                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                                proxy_set_header X-Forwarded-Proto $scheme;

                                # Timeout settings
                                proxy_connect_timeout 30s;
                                proxy_send_timeout 30s;
                                proxy_read_timeout 30s;
                            }

                            # Health check
                            location /nginx-health {
                                access_log off;
                                return 200 "nginx is healthy\n";
                                add_header Content-Type text/plain;
                            }
                        }
                    }
                  permission: null
                  envsubst: null
          domainKey: PUBLIC_DOMAIN
localization:
    zh-CN:
        description: 科大讯飞开源的企业级 AI 智能体开发平台：AI 工作流编排、模型管理、MCP 工具集成、RPA 自动化与团队协作。
        variables:
            - key: PUBLIC_DOMAIN
              type: STRING
              name: 应用域名
              description: Astron Agent 控制台的访问域名（绑定到 nginx 网关）。
            - key: CASDOOR_DOMAIN
              type: STRING
              name: Casdoor 认证域名
              description: Casdoor 认证服务的域名（OAuth2 登录）。
        readme: |
            # Astron Agent（讯飞星辰）

            Astron Agent 是科大讯飞开源的企业级、可商用 AI 智能体开发平台，集成 AI 工作流编排、
            模型管理、AI/MCP 工具集成、RPA 自动化与团队协作。

            ## 部署步骤

            1. 绑定两个域名：
               - **应用域名**（`PUBLIC_DOMAIN`）绑定到 `nginx` 网关。
               - **Casdoor 域名**（`CASDOOR_DOMAIN`）绑定到 `casdoor` 认证服务。
            2. 部署。完整栈包含 17 个服务（含 MySQL、PostgreSQL、Redis、MinIO、Casdoor），
               建议至少 **8 GB 内存**（推荐 16 GB）。
            3. 打开应用域名，通过 Casdoor 使用默认管理员 **`admin` / `123`** 登录，并立即修改密码。

            ## 说明

            - 数据库、缓存与对象存储的凭据默认沿用上游 docker-compose 取值，仅在 Zeabur 私有网络内可达，
              生产环境请自行轮换。
            - 启动平台无需 AI 模型凭据；如需生成能力，请在服务变量中配置星火 / OpenAI 兼容厂商的密钥。

            ## 许可证

            Apache 2.0 — https://github.com/iflytek/astron-agent
