Environment Variables
Environment variables for projects/app, projects/code-sandbox, and pro/admin
This page describes the environment variables commonly used in a self-hosted FastGPT deployment. projects/app and pro/admin both reuse many settings from packages/service/env.ts, so database, secret, object storage, vector database, and service-level variables are documented together. Variables that are only read by projects/app or pro/admin are listed separately.
Notes
projects/app: the main Next.js application, including pages, API routes, workflows, Knowledge Bases, object storage, and vector storage.pro/admin: the commercial Admin service. Besides its own Admin variables, it also reuses App/Service settings such as database, secrets, object storage, models, and logging.projects/code-sandbox: the code execution sandbox service. It exposes the/sandboxendpoint and is called by App throughCODE_SANDBOX_URL.packages/service/env.tsexportsserviceEnv;projects/app/src/env.tsexportsappEnv.- Shared App/Admin boolean variables use
true,1,yes, oryto enable a feature. Other values are treated as disabled. FILE_TOKEN_KEYandAES256_SECRET_KEYare required at runtime. Use strong random secrets and do not use the example values in production.
Shared App/Admin Variables
These variables are mainly validated by packages/service/env.ts and apply to projects/app and to pro/admin when it imports @fastgpt/service. A few App-side switches are still defined in packages/service/env.ts; they are also called out in the App-specific section below.
Basics and Secrets
| Variable | Default | Description |
|---|---|---|
DB_MAX_LINK | 5 | Maximum connection pool size for MongoDB, PG, OceanBase, openGauss, and other databases. |
SYNC_INDEX | true | Whether MongoDB indexes are synchronized at startup. |
TOKEN_KEY | fastgpt_token_key | Signing secret for user sessions and business tokens. Must be at least 6 characters. |
FILE_TOKEN_KEY | None, required | Secret for file read and file authorization flows. Must be at least 6 characters. |
AES256_SECRET_KEY | None, required | Secret used by AES encryption and decryption. Must be at least 6 characters. |
ROOT_KEY | fastgpt_root_key | Root API key or internal highest-privilege secret. Must be at least 6 characters. |
PRO_URL | Empty | Commercial service URL. When set, App can call Pro APIs, and the domain is allowed by file URL validation. |
Service URLs and Integrations
| Variable | Default | Description |
|---|---|---|
PLUGIN_BASE_URL | http://localhost:3004 | FastGPT Plugin service URL. Deployment templates usually set this to the internal Plugin service URL. |
PLUGIN_TOKEN | token | Authentication token for calling the Plugin service. It must match the Plugin service configuration. |
CODE_SANDBOX_URL | http://localhost:3002 | Code Sandbox service URL. Deployment templates usually set this to the internal Code Sandbox service URL. |
CODE_SANDBOX_TOKEN | codesandbox | Token used by App when calling Code Sandbox. It must match the sandbox service SANDBOX_TOKEN. |
AIPROXY_API_ENDPOINT | http://localhost:3010 | AI Proxy service URL. When configured, model requests prefer AI Proxy. |
AIPROXY_API_TOKEN | token | Token for calling AI Proxy. |
OPENAI_BASE_URL | https://api.openai.com/v1 | Default OpenAI-compatible model endpoint when AI Proxy is not configured. |
CHAT_API_KEY | Empty | Default OpenAI-compatible model API key when AI Proxy token is not configured. |
MARKETPLACE_URL | https://marketplace.fastgpt.cn | Plugin marketplace API URL. |
FEISHU_BASE_URL | https://open.feishu.cn | Lark Open Platform URL. Use your private Lark domain when self-hosting Lark. |
DINGTALK_BASE_URL | https://api.dingtalk.com | DingTalk new API base URL. |
DINGTALK_OAPI_BASE_URL | https://oapi.dingtalk.com | DingTalk OAPI base URL. |
YUQUE_DATASET_BASE_URL | https://www.yuque.com | Yuque Knowledge Base URL. |
Agent Sandbox
| Variable | Default | Description |
|---|---|---|
AGENT_SANDBOX_PROVIDER | Empty | Agent sandbox provider. Supported values are sealosdevbox, opensandbox, and e2b. Empty means Agent Sandbox is disabled. |
AGENT_SANDBOX_E2B_API_KEY | Empty | E2B sandbox API key. |
AGENT_SANDBOX_SEALOS_BASEURL | Empty | Sealos Devbox service URL. |
AGENT_SANDBOX_SEALOS_TOKEN | Empty | Sealos Devbox access token. |
AGENT_SANDBOX_OPENSANDBOX_BASEURL | Empty | OpenSandbox service URL. |
AGENT_SANDBOX_OPENSANDBOX_API_KEY | Empty | OpenSandbox API key. |
AGENT_SANDBOX_OPENSANDBOX_RUNTIME | docker | OpenSandbox runtime, either docker or kubernetes. |
AGENT_SANDBOX_OPENSANDBOX_IMAGE_REPO | Empty | Image repository used by OpenSandbox. |
AGENT_SANDBOX_OPENSANDBOX_IMAGE_TAG | latest | Image tag used by OpenSandbox. |
AGENT_SANDBOX_OPENSANDBOX_USE_SERVER_PROXY | true | Whether OpenSandbox access goes through the server proxy. |
AGENT_SANDBOX_ENABLE_VOLUME | false | Whether persistent volumes are enabled for Agent Sandbox. |
AGENT_SANDBOX_VOLUME_MANAGER_URL | Empty | Volume Manager service URL. |
AGENT_SANDBOX_VOLUME_MANAGER_TOKEN | Empty | Volume Manager authentication token. |
AGENT_SANDBOX_VOLUME_MANAGER_MOUNT_PATH | /workspace | Path where the volume is mounted inside the sandbox. |
AGENT_SANDBOX_FREE_TIP | false | Whether the frontend shows the Agent Sandbox free-use hint. |
AGENT_SANDBOX_MAX_EDIT_DEBUG | Empty | Limit for Agent edit/debug sandboxes. Empty means unlimited. |
AGENT_SANDBOX_MAX_SESSION_RUNTIME | Empty | Limit for Agent sandbox session runtime. Empty means unlimited. |
Skill Limits
| Variable | Default | Description |
|---|---|---|
AGENT_SKILL_MAX_UPLOAD_SIZE | Empty | Maximum Skill upload package size. |
AGENT_SKILL_MAX_UNCOMPRESSED_SIZE | Empty | Maximum Skill package size after decompression. |
AGENT_SKILL_MAX_DOWNLOAD_SIZE | Empty | Maximum download size for Skill resources. |
AGENT_SKILL_MAX_SANDBOX_SIZE | Empty | Maximum Skill sandbox directory size. |
Databases, Cache, and Vector Stores
| Variable | Default | Description |
|---|---|---|
REDIS_URL | redis://default:mypassword@localhost:6379 | Redis connection URL. |
STREAM_RESUME_TTL_SECONDS | 300 | TTL for an active stream resume mirror, in seconds. |
STREAM_RESUME_POST_COMPLETE_TTL_SECONDS | 30 | Shortened TTL after a stream completes, in seconds. |
STREAM_RESUME_REDIS_MAXMEMORY_RATIO | 0.5 | When Redis used memory divided by maxmemory reaches this ratio, new stream resume mirrors are skipped. |
STREAM_RESUME_REDIS_MEMORY_CHECK_INTERVAL_MS | 5000 | Redis memory watermark cache duration, in milliseconds. |
MONGODB_URI | Local MongoDB example URL | Main business MongoDB connection URL. |
MONGODB_LOG_URI | Same example as MONGODB_URI | MongoDB connection URL for logs. If unset, it can reuse the main database. |
VECTOR_VQ_LEVEL | 32 | Vector quantization level. Supported ranges depend on the vector store. |
PG_URL | Empty | PostgreSQL/pgvector connection URL. |
OCEANBASE_URL | Empty | OceanBase vector store connection URL. |
SEEKDB_URL | Empty | SeekDB vector store connection URL. |
MILVUS_ADDRESS | Empty | Milvus/Zilliz address. |
MILVUS_TOKEN | Empty | Milvus/Zilliz access token. |
OPENGAUSS_URL | Empty | openGauss vector store connection URL. |
Object Storage
| Variable | Default | Description |
|---|---|---|
STORAGE_VENDOR | minio | Object storage vendor. Supported values are minio, aws-s3, cos, and oss. |
STORAGE_PUBLIC_BUCKET | fastgpt-public | Public file bucket. |
STORAGE_PRIVATE_BUCKET | fastgpt-private | Private file bucket. |
STORAGE_REGION | us-east-1 | Object storage region. |
STORAGE_EXTERNAL_ENDPOINT | Empty | Externally reachable object storage endpoint for browsers or external services. |
STORAGE_S3_ENDPOINT | http://localhost:9000 | S3/MinIO-compatible API endpoint. |
STORAGE_PUBLIC_ACCESS_EXTRA_SUB_PATH | Empty | Extra sub-path for public file access URLs. |
STORAGE_ACCESS_KEY_ID | minioadmin | Object storage access key. |
STORAGE_SECRET_ACCESS_KEY | minioadmin | Object storage secret key. |
STORAGE_S3_FORCE_PATH_STYLE | false | Whether S3 path-style access is forced. MinIO usually requires this. |
STORAGE_S3_MAX_RETRIES | 3 | Maximum S3 client retry count. |
STORAGE_COS_PROTOCOL | https: | Tencent Cloud COS protocol, either https: or http:. |
STORAGE_COS_USE_ACCELERATE | false | Whether Tencent Cloud COS acceleration domain is used. |
STORAGE_COS_CNAME_DOMAIN | Empty | Tencent Cloud COS custom CNAME domain. |
STORAGE_COS_PROXY | Empty | Tencent Cloud COS proxy URL. |
STORAGE_OSS_ENDPOINT | Empty | Alibaba Cloud OSS endpoint. |
STORAGE_OSS_CNAME | false | Whether Alibaba Cloud OSS uses CNAME. |
STORAGE_OSS_INTERNAL | false | Whether Alibaba Cloud OSS uses an internal endpoint. |
STORAGE_OSS_SECURE | false | Whether Alibaba Cloud OSS uses HTTPS. |
STORAGE_OSS_ENABLE_PROXY | true | Whether Alibaba Cloud OSS proxy access is enabled. |
Logging, Metrics, and Tracing
| Variable | Default | Description |
|---|---|---|
LOG_ENABLE_CONSOLE | true | Whether console logging is enabled. |
LOG_CONSOLE_LEVEL | debug | Console log level. Supported values are trace, debug, info, warning, error, and fatal. |
LOG_DEPTH | 3 | Legacy template variable for log object depth. New structured logging mainly uses log-level settings. |
LOG_ENABLE_OTEL | false | Whether OpenTelemetry log export is enabled. |
LOG_OTEL_LEVEL | info | OTEL log level. |
LOG_OTEL_SERVICE_NAME | fastgpt-client | OTEL log service name. |
LOG_OTEL_URL | Empty | OTEL log export URL. |
METRICS_ENABLE_OTEL | false | Whether OpenTelemetry metrics export is enabled. |
METRICS_EXPORT_INTERVAL | 30000 | Metrics export interval, in milliseconds. |
METRICS_OTEL_SERVICE_NAME | fastgpt-client | OTEL metrics service name. |
METRICS_OTEL_URL | Empty | OTEL metrics export URL. |
TRACING_ENABLE_OTEL | false | Whether OpenTelemetry tracing is enabled. |
TRACING_OTEL_SERVICE_NAME | fastgpt-client | OTEL tracing service name. |
TRACING_OTEL_URL | Empty | OTEL tracing export URL. |
TRACING_OTEL_SAMPLE_RATIO | Empty | Trace sampling ratio from 0 to 1. |
CHAT_LOG_URL | Empty | Chat log push service URL. Empty disables pushing. |
CHAT_LOG_INTERVAL | Empty | Chat log batch push interval, in milliseconds. |
CHAT_LOG_SOURCE_ID_PREFIX | fastgpt- | Prefix for chat log source IDs. |
TRACK_BATCH_UPDATE_TIME | 10000 | Event counter batch write interval, in milliseconds. |
Domains, Frontend, and Runtime
| Variable | Default | Description |
|---|---|---|
FE_DOMAIN | Empty | External FastGPT frontend URL. Used to complete file and image URLs. Do not set this to localhost. |
FILE_DOMAIN | Empty | File access domain. It usually points to FastGPT, but a separate domain can isolate file risk. |
NEXT_PUBLIC_BASE_URL | Empty | Next.js sub-path deployment prefix, such as /fastgpt. It must be fixed when building the image. |
HOSTNAME | localhost | Service host used for internal URLs and SSRF local-address detection. Containers commonly set it to 0.0.0.0. |
PORT | 3000 | Next.js listening port. Also used for local-address detection. |
NODE_ENV | Empty | Standard Node/Next.js runtime environment. Production images set it to production. |
NEXT_TELEMETRY_DISABLED | 1 | Disables Next.js Telemetry in production images. |
NODE_OPTIONS | --max-old-space-size=4096 | Node options used during production image builds to increase the build memory limit. |
Security
| Variable | Default | Description |
|---|---|---|
USE_IP_LIMIT | false | Whether IP rate limiting is enabled for selected APIs. |
CHECK_INTERNAL_IP | false | Whether internal IP checks are enabled to reduce SSRF risk. |
PASSWORD_LOGIN_LOCK_SECONDS | 120 | Lock duration after failed password login attempts, in seconds. |
MAX_LOGIN_SESSION | Empty | Maximum login clients per account. Empty uses the default logic. |
ALLOWED_ORIGINS | Empty | Allowed CORS origins. Use commas to separate multiple origins. Empty allows all origins by default. |
MULTIPLE_DATA_TO_BASE64 | true | Whether images are forced into base64 before being sent to models. |
DISABLE_CACHE | false | Whether system cache hits are disabled, mainly for debugging. |
PLUGIN_ACCESS_TOKEN_SECRET | plugin_access_token_secret | Signing secret for plugin access tokens. |
PLUGIN_ACCESS_TOKEN_EXPIRES_IN | 86400 | Plugin access token expiration, in seconds. |
HTTP_PROXY | Empty | Outbound HTTP proxy for Node and workers. |
HTTPS_PROXY | Empty | Outbound HTTPS proxy for Node and workers. |
NO_PROXY | Empty | Address list that bypasses proxies. |
ALL_PROXY | Empty | General outbound proxy. |
Feature Flags and Limits
| Variable | Default | Description |
|---|---|---|
SHOW_SKILL | false | Whether Skill entry points are shown. Image builds also read this variable to decide service entry points. |
AGENT_ENGINE | default | Agent engine. Supported values are default and pi. |
HELPER_BOT_MODEL | Empty | Helper generation model. The model must be enabled in the system. |
SKIP_FILE_TYPE_CHECK | false | Whether upload file type checks are skipped. |
WECHAT_CHANNEL_CONCURRENCY | 1000 | WeChat channel poll worker concurrency. Minimum value is 10. |
PARSE_FILE_WORKERS | 10 | Resident file parsing worker count. |
HTML_TO_MARKDOWN_WORKERS | 10 | Resident HTML-to-Markdown worker count. |
TEXT_TO_CHUNKS_WORKERS | 10 | Resident text chunking worker count. |
PARSE_FILE_TIMEOUT_SECONDS | 600 | Timeout for one file parsing task, in seconds. |
WORKFLOW_MAX_RUN_TIMES | 500 | Maximum workflow run count to avoid extreme infinite loops. |
WORKFLOW_MAX_LOOP_TIMES | 100 | Maximum input array length for loop and parallel nodes. |
WORKFLOW_PARALLEL_MAX_CONCURRENCY | 10 | Parallel node concurrency limit. It must not exceed WORKFLOW_MAX_LOOP_TIMES. |
CHAT_MAX_QPM | 5000 | Chat QPM limit. User plan limits take precedence when configured. |
SERVICE_REQUEST_MAX_CONTENT_LENGTH | 10 | Maximum request body size accepted by the service, in MB. |
APP_FOLDER_MAX_AMOUNT | 1000 | Maximum number of App folders. |
DATASET_FOLDER_MAX_AMOUNT | 1000 | Maximum number of dataset folders. |
UPLOAD_FILE_MAX_SIZE | 1000 | Maximum upload file size, in MB. |
UPLOAD_FILE_MAX_AMOUNT | 1000 | Maximum upload file count. |
LLM_REQUEST_TRACKING_RETENTION_HOURS | 6 | LLM request tracking retention, in hours. |
MAX_HTML_TRANSFORM_CHARS | 1000000 | Maximum number of characters for HTML-to-Markdown conversion. Larger content is not converted. |
App-Specific Variables
These variables are mainly read by projects/app. Some are currently defined in packages/service/env.ts for shared validation, but their actual consumers are still App-side code.
| Variable | Default | Description |
|---|---|---|
DEFAULT_ROOT_PSW | 123456 | Default password for initializing the root user. |
SYSTEM_NAME | AI | Default system name for the page title. |
SYSTEM_DESCRIPTION | Empty | Page meta description. If unset, the default i18n text is used. |
SYSTEM_FAVICON | Empty | Page favicon URL. If unset, the favicon from system config is used. |
CONFIG_JSON_PATH | Empty | Directory for reading config.json in production. Defaults to /app/data. |
CHINESE_IP_REDIRECT_URL | Empty | China IP redirect URL in frontend config. |
PAY_FORM_URL | Empty | Payment form URL in frontend config. |
SHOW_COUPON | false | Whether redemption codes are shown. |
SHOW_DISCOUNT_COUPON | false | Whether discount coupons are shown. |
HIDE_CHAT_COPYRIGHT_SETTING | false | Whether copyright settings are hidden. |
APP_REGISTRATION_URL | Empty | App registration application URL. Currently kept mostly for compatibility. |
PASSWORD_EXPIRED_MONTH | Empty | Password expiration period in months. Empty means passwords do not expire. |
Admin-Specific Variables
These variables are mainly read by pro/admin. Admin also uses the shared App/Admin variables above.
| Variable | Default | Description |
|---|---|---|
EVAL_CONCURRENCY | 3 | Batch evaluation task concurrency. |
EVAL_LINE_LIMIT | 1000 | Maximum number of rows allowed when creating one evaluation task. Also sent to frontend config. |
UPDATE_BALANCE_DELAY | Empty | Legacy balance update frequency variable, still kept in types. |
BATCH_UPDATE_TIME | 3000 | Wallet balance batch update interval, in milliseconds. |
INVOICE_FEISHU_WEBHOOK_URL | Empty | Lark webhook URL for invoice application notifications. |
INVOICE_FEISHU_WEBHOOK_CALLBACK_URL | Empty | Callback URL for buttons in invoice notifications. |
SMS_PROXY | Empty | SMS sending proxy service URL. |
MAX_CRAWL_PAGE | 2000 | Maximum number of pages to crawl during website sync. |
CRAWL_DYNAMIC_WEBSITE | false | Whether dynamic page crawling is enabled. |
PLUGIN_URL | Empty | Plugin service URL for dynamic page crawling. |
CRAWL_MAX_HTML_SIZE | 10 | Estimated maximum HTML size for one static crawled page, in MB. |
CRAWL_EXCLUDE_LIST | Empty | Crawler exclusion rules for domains or paths. Use commas to separate values. |
SHOW_GIT | Empty | Whether Git information is shown in Admin. Empty means hidden. |
WARN_FREE_ACCOUNT | Empty | Warning configuration before free account cleanup. |
CLEAR_FREE_ACCOUNT | Empty | Free account cleanup configuration. |
SYNC_MEMBER_CRON | Empty | Cron expression for automatic member sync. Empty disables the sync task. |
WORKORDER_BASE_URL | Empty | Work order system URL. When set, the frontend shows work order entry points. |
WORKORDER_JWT_SECRET | Empty | Secret used to sign JWTs when creating work orders. |
EXTERNAL_USER_SYSTEM_BASE_URL | Empty | External user system URL. |
EXTERNAL_USER_SYSTEM_AUTH_TOKEN | Empty | Authentication token for the external user system. |
BAIDU_CONVERSION_TOKEN | Empty | Baidu conversion tracking token. |
BAIDU_CONVERSION_BASE_URL | Empty | Baidu conversion tracking API URL. |
BING_ADS_DEVELOPER_TOKEN | Empty | Bing Ads developer token. |
BING_ADS_CUSTOMER_ID | Empty | Bing Ads customer ID. |
BING_ADS_CUSTOMER_ACCOUNT_ID | Empty | Bing Ads customer account ID. |
BING_ADS_CONVERSION_NAME | fastgptcn | Bing Ads conversion goal name. |
BING_OAUTH_CLIENT_ID | Empty | Bing OAuth client ID. |
BING_OAUTH_CLIENT_SECRET | Empty | Bing OAuth client secret. |
BING_OAUTH_REFRESH_TOKEN | Empty | Bing OAuth refresh token. |
SHOW_WECOM_CONFIG | false | Whether WeCom configuration is shown. |
WECOM_DEV | false | Development mode switch for WeCom Pay. |
Code Sandbox Variables
These variables are loaded and validated by projects/code-sandbox/src/env.ts. When App calls the sandbox, CODE_SANDBOX_TOKEN must match SANDBOX_TOKEN.
| Variable | Default | Description |
|---|---|---|
SANDBOX_PORT | 3000 | Code Sandbox listening port. |
SANDBOX_TOKEN | Empty | Bearer token for the /sandbox endpoint. Empty disables API authentication. It only allows printable ASCII characters and cannot contain spaces. |
SANDBOX_POOL_SIZE | 20 | Number of pre-warmed JS/Python workers, from 1 to 100. |
SANDBOX_MAX_TIMEOUT | 60000 | Timeout for one code execution, in milliseconds. Range: 1000 to 600000. |
SANDBOX_MAX_MEMORY_MB | 256 | Maximum memory for one sandbox, in MB. Range: 32 to 4096. |
CHECK_INTERNAL_IP | false | Whether internal IP checks are enabled for sandbox network requests. |
SANDBOX_REQUEST_MAX_COUNT | 30 | Maximum number of network requests allowed during one code execution. Range: 1 to 1000. |
SANDBOX_REQUEST_TIMEOUT | 60000 | Timeout for one network request from inside the sandbox, in milliseconds. Range: 1000 to 300000. |
SANDBOX_REQUEST_MAX_RESPONSE_MB | 10 | Maximum response body size for one sandbox network request, in MB. Range: 1 to 100. |
SANDBOX_REQUEST_MAX_BODY_MB | 5 | Maximum request body size for one sandbox network request, in MB. Range: 1 to 100. |
SANDBOX_JS_ALLOWED_MODULES | lodash,dayjs,moment,uuid,crypto-js,qs,url,querystring | Module allowlist for JavaScript code. Use commas to separate modules. |
SANDBOX_PYTHON_ALLOWED_MODULES | Common standard libraries plus numpy,pandas,matplotlib | Module allowlist for Python code. Use commas to separate modules. |
NODE_ENV | Empty | Standard Node environment variable. Internal address checks are relaxed in development. |
HOSTNAME | localhost | Sandbox service host used for local-address detection. |
PORT | 3000 | Sandbox local service port used for local-address detection. Actual listening uses SANDBOX_PORT first. |