Cấu hình¶
Backend đọc cấu hình từ biến môi trường. .env.example ở thư mục gốc của repo
liệt kê mọi biến mà Compose truyền vào; trang này gom chúng theo nhóm.
Cốt lõi¶
| Biến | Mặc định | Nghĩa |
|---|---|---|
STUDIO_ENV |
dev |
production từ chối JWT_SECRET mẫu và không tạo tài khoản demo |
JWT_SECRET |
giá trị mẫu | Ký token phiên |
JWT_TTL_SECONDS |
86400 |
Thời hạn phiên |
STUDIO_SECRET_KEY |
tự sinh | Khoá Fernet cho secret đã lưu |
STUDIO_SECRET_KEY_FILE |
~/.superstep/secret.key |
Nơi lưu khoá tự sinh |
DATABASE_URL |
SQLite backend/studio.db |
URL SQLAlchemy, ví dụ postgresql://… |
STUDIO_DB |
backend/studio.db |
Đường dẫn SQLite khi DATABASE_URL trống |
REDIS_URL |
trống | Run bus, hàng đợi và bộ đếm; trống thì nằm trong bộ nhớ |
STUDIO_PUBLIC_URL |
trống | URL công khai cho link trong email, yêu cầu duyệt và webhook |
STUDIO_CORS_ORIGINS |
* khi phát triển, không có khi production |
Các origin trình duyệt được phép |
STUDIO_COOKIE_SECURE |
1 khi production |
Cờ Secure của cookie phiên |
WEB_PORT |
8080 |
Compose: cổng của dịch vụ web |
Tài khoản¶
| Biến | Mặc định | Nghĩa |
|---|---|---|
STUDIO_ADMIN_EMAILS |
trống | Admin khởi tạo |
STUDIO_DEFAULT_ROLE |
editor |
Vai trò của tài khoản mới (editor hoặc viewer) |
STUDIO_LOGIN_MAX_FAILURES |
5 |
Số lần đăng nhập sai trước khi khoá |
STUDIO_LOGIN_WINDOW |
900 |
Khung thời gian đếm (giây) |
STUDIO_LOGIN_LOCK |
900 |
Thời gian khoá (giây) |
STUDIO_PASSWORD_RESET_TTL |
3600 |
Thời hạn link đặt lại (giây) |
Model¶
| Biến | Mặc định | Nghĩa |
|---|---|---|
OPENAI_API_KEY |
trống | Dự phòng cho node LLM và embedding không có credential |
OPENAI_BASE_URL |
trống | Base URL cho phần dự phòng đó |
TYPESAFE_API_KEY, TYPESAFE_BASE_URL |
trống | Dự phòng cho node Decision |
STUDIO_PRICES |
trống | JSON ghi đè giá, USD cho 1 triệu token {"prefix": [in, out]} |
STUDIO_PRICES_FILE |
trống | Như trên, đọc từ file |
Run và giới hạn¶
| Biến | Mặc định | Nghĩa |
|---|---|---|
STUDIO_RECURSION_LIMIT |
25 |
Số bước mỗi run |
STUDIO_RUN_TIMEOUT |
120 |
Thời gian chạy (giây); run import mặc định 300 |
STUDIO_EVENT_MAX_BYTES |
262144 |
Một sự kiện |
STUDIO_RUN_MAX_BYTES |
2097152 |
Sự kiện lưu cho mỗi run |
STUDIO_INPUT_MAX_BYTES |
262144 |
Input của run |
STUDIO_WORKFLOW_MAX_BYTES |
1048576 |
JSON workflow |
STUDIO_WAIT_TTL |
604800 |
Run đang chờ hết hạn sau thời gian này (giây); 0 là không bao giờ |
STUDIO_VERSION_KEEP |
0 |
Số phiên bản giữ cho mỗi workflow; 0 giữ tất cả |
STUDIO_TEST_CASES_MAX |
50 |
Số test case mỗi workflow |
STUDIO_TEST_PARALLEL |
4 |
Số test case của một run test chạy cùng lúc |
STUDIO_ENABLE_DEMO_TOOLS |
0 |
Đăng ký sleep_demo để thử huỷ và timeout |
Worker và hàng đợi¶
| Biến | Mặc định | Nghĩa |
|---|---|---|
STUDIO_WORKER |
1 |
Chạy worker trong process API |
STUDIO_WORKER_CONCURRENCY |
2 |
Số job mỗi worker |
STUDIO_JOB_VISIBILITY_TIMEOUT |
30 |
Thời hạn giữ job (giây) |
STUDIO_JOB_REAP_EVERY |
15 |
Chu kỳ đưa job hết hạn về hàng đợi (giây) |
STUDIO_RECOVER_ON_START |
1 |
Hàng đợi trong bộ nhớ: đưa lại run chưa xong vào hàng đợi khi khởi động (run qua các lần khởi động lại) |
STUDIO_RECOVER_MAX_ATTEMPTS |
3 |
Số lần restart được cắt ngang một run trước khi run kết thúc với RUN_INTERRUPTED |
API trigger và webhook¶
| Biến | Mặc định | Nghĩa |
|---|---|---|
STUDIO_TRIGGER_RATE_LIMIT |
60 |
Số run mỗi token trong một khung; 0 là tắt |
STUDIO_TRIGGER_RATE_WINDOW |
60 |
Độ dài khung (giây) |
STUDIO_CHAT_TRIGGER_RATE_LIMIT |
60 |
Chat trigger: số run mỗi người gửi và trigger trong một khung; 0 là tắt |
STUDIO_PUBLIC_CHAT_RATE_VISITOR |
10 |
Trang chat công khai: số tin nhắn của mỗi khách chat trong một khung; 0 là tắt |
STUDIO_PUBLIC_CHAT_RATE_IP |
30 |
Trang chat công khai: số tin nhắn của mỗi IP trong một khung; 0 là tắt |
STUDIO_PUBLIC_CHAT_RATE_USER |
theo STUDIO_PUBLIC_CHAT_RATE_IP |
Số tin nhắn/file tải lên của mỗi người dùng bên thứ ba trong từng chat, theo khung; 0 là tắt |
STUDIO_PUBLIC_CHAT_RATE_READ |
120 |
Trang chat công khai: số lần mở trang, đọc chat và tạo chat mới của mỗi IP trong một khung; 0 là tắt |
STUDIO_PUBLIC_CHAT_RATE_WINDOW |
60 |
Độ dài khung (giây) của trang chat công khai. Giới hạn theo ngày của từng chat nằm trong Cài đặt Chat |
STUDIO_CHAT_ATTACHMENT_MAX_MB |
10 |
Tệp đính kèm trong chat: dung lượng tối đa mỗi tệp (MB); mỗi chat chỉ được đặt thấp hơn. Trên 100 thì tăng thêm WEB_MAX_BODY_SIZE của image web (mặc định 110m); nginx kèm theo chỉ áp dụng nó cho các route tải lên, mọi request khác giới hạn 10 MB |
STUDIO_MAX_BODY_MB |
10 |
Kích thước tối đa (MB) của body một request, trừ các route tải lên (tệp đính kèm chat, import workflow, tài liệu knowledge) vốn có giới hạn riêng; callback của chat và duyệt nhận tối đa 1 MB |
STUDIO_CHAT_ATTACHMENT_MAX_FILES |
5 |
Tệp đính kèm trong chat: số tệp tối đa mỗi tin nhắn; mỗi chat chỉ được đặt thấp hơn |
STUDIO_ATTACHMENT_STORAGE |
db |
Nơi lưu nội dung tệp đính kèm trong chat: db (trong cơ sở dữ liệu), fs (một thư mục) hoặc s3 (kho lưu trữ tương thích S3). Mỗi tệp giữ nguyên nơi nó đã được lưu, nên thay đổi chỉ áp dụng cho tệp mới. Xem Chat: Tệp đính kèm |
STUDIO_ATTACHMENT_FS_PATH |
/data/attachments |
Thư mục của backend fs. Với docker compose, api và worker dùng chung thư mục này trên volume apidata. Không được trùng với hoặc chứa thư mục dữ liệu |
STUDIO_ATTACHMENT_S3_BUCKET |
(trống) | Bucket của backend s3. Bắt buộc khi dùng s3 |
STUDIO_ATTACHMENT_S3_PREFIX |
(trống) | Một thư mục trong bucket, để nhiều bản cài dùng chung một bucket. Chỉ để trống khi bucket không dùng cho việc gì khác (TASK-0203) |
STUDIO_ATTACHMENT_S3_ENDPOINT |
(trống) | URL của dịch vụ tương thích S3 (R2, B2, MinIO). Để trống là AWS S3 |
STUDIO_ATTACHMENT_S3_REGION |
(trống) | Region của bucket; auto với Cloudflare R2 |
STUDIO_ATTACHMENT_S3_PATH_STYLE |
false |
true cho dịch vụ cần URL kiểu path, như MinIO |
STUDIO_ATTACHMENT_S3_MULTIPART_MB |
8 |
Tệp lớn hơn số MB này được tải lên S3 theo từng phần cỡ này (tối thiểu 5); lần tải lỗi được hủy, nên không còn phần dở dang nào trong bucket |
STUDIO_ATTACHMENT_S3_ACCESS_KEY_ID |
(trống) | Access key. Khi cả hai key để trống, dùng chuỗi credential mặc định của AWS (instance role, biến AWS_*) |
STUDIO_ATTACHMENT_S3_SECRET_ACCESS_KEY |
(trống) | Secret key. Không bao giờ được ghi log hay hiển thị; /api/health chỉ cho biết bucket có dùng được không |
STUDIO_SYNC_WAIT_MAX |
30 |
Thời gian chờ sync tối đa (giây) |
STUDIO_ALLOW_PRIVATE_CALLBACKS |
0 |
Cho phép callback tới địa chỉ private |
STUDIO_WEBHOOK_MAX_ATTEMPTS |
5 |
Số lần gửi |
STUDIO_WEBHOOK_BACKOFF_BASE |
2 |
Cơ số backoff (giây) |
STUDIO_WEBHOOK_BACKOFF_MAX |
300 |
Trần backoff (giây) |
STUDIO_SECRET_GRACE |
86400 |
Secret cũ còn hiệu lực sau khi xoay (giây) |
Tool, email và MCP¶
| Biến | Mặc định | Nghĩa |
|---|---|---|
STUDIO_HTTP_TOOL_ALLOW_PRIVATE |
0 |
Node HTTP Tool được gọi địa chỉ private |
STUDIO_HTTP_TOOL_TIMEOUT |
30 |
Timeout request của HTTP Tool (giây) |
STUDIO_SMTP_ALLOW_PRIVATE |
0 |
Node Send email được dùng host SMTP private |
STUDIO_EMAIL_NODE_HOURLY_LIMIT |
100 |
Số người nhận mỗi giờ cho mỗi chủ workflow |
STUDIO_MCP_STDIO |
0 |
Cho phép máy chủ MCP stdio (chỉ admin) |
STUDIO_MCP_ALLOW_PRIVATE |
0 |
Cho phép máy chủ MCP HTTP ở địa chỉ private |
STUDIO_MCP_TIMEOUT |
30 |
Timeout gọi MCP (giây) |
Chế độ Code¶
| Biến | Mặc định | Nghĩa |
|---|---|---|
STUDIO_ENABLE_CODE_NODES |
0 |
Bật chế độ Code |
STUDIO_CODE_RUNTIME |
docker |
docker, hoặc subprocess (chạy trực tiếp trên server, không có Docker giới hạn quyền) |
STUDIO_CODE_IMAGE |
studio-code:1 |
Image sandbox |
STUDIO_CODE_PACKAGES |
theo image | Package hiện trong trình soạn thảo |
STUDIO_CODE_MEMORY |
256m |
Bộ nhớ mỗi lần gọi |
STUDIO_CODE_CPUS |
0.5 |
CPU mỗi lần gọi |
STUDIO_CODE_PIDS |
64 |
Số process mỗi lần gọi |
STUDIO_CODE_MAX_SECONDS |
30 |
Trần thời gian mỗi lần gọi |
STUDIO_CODE_CONCURRENCY |
4 |
Số container cùng lúc trên mỗi process |
STUDIO_CODE_TEST_PER_MINUTE |
20 |
Số run thử mỗi người mỗi phút |
Import repo¶
| Biến | Mặc định | Nghĩa |
|---|---|---|
STUDIO_ENABLE_IMPORT |
0 |
Bật import |
STUDIO_IMPORT_RUNTIME |
Docker | subprocess chỉ dùng khi test (chạy trực tiếp trên server, không có Docker giới hạn quyền) |
STUDIO_IMPORT_DIR |
~/.superstep/imports |
Thư mục job |
STUDIO_IMPORT_HOST_DIR |
trống | Đường dẫn trên host của thư mục đó khi dùng Compose |
STUDIO_IMPORT_IMAGE |
python:3.12-slim |
Image sandbox |
STUDIO_IMPORT_MEMORY |
1g |
Bộ nhớ |
STUDIO_IMPORT_CPUS |
1 |
CPU |
STUDIO_IMPORT_PIDS |
256 |
Số process |
STUDIO_IMPORT_NETWORK |
bridge |
Mạng khi chạy (bridge hoặc none) |
STUDIO_IMPORT_SECRETS |
trống | Tên biến môi trường thêm vào sandbox |
STUDIO_INSPECT_TIMEOUT |
120 |
Thời gian kiểm tra (giây) |
STUDIO_IMPORT_MAX_AGE_HOURS |
72 |
Tuổi để dọn; 0 là tắt |
STUDIO_IMPORT_MAX_BYTES |
209715200 |
Kích thước mã nguồn tối đa |
STUDIO_DOCKER_GID |
10001 |
Compose: group id của Docker socket |
Thông báo và duyệt¶
| Biến | Mặc định | Nghĩa |
|---|---|---|
SMTP_HOST |
trống | Email của studio (thông báo, link đặt lại, duyệt qua email); trống là tắt mail |
SMTP_PORT, SMTP_USER, SMTP_PASSWORD, SMTP_FROM |
587, trống, trống, studio@localhost |
Cấu hình SMTP |
SMTP_STARTTLS, SMTP_SSL |
1, 0 |
Bảo mật đường truyền |
STUDIO_NOTIFY_WEBHOOK_URL, STUDIO_NOTIFY_WEBHOOK_SECRET |
trống | Webhook JSON cho run đang chờ và hết hạn |
STUDIO_APPROVAL_TTL |
86400 |
Thời hạn của nút và link duyệt (giây) |
STUDIO_IDENTITY_CODE_TTL |
600 |
Thời hạn mã xác minh (giây) |
STUDIO_IDENTITY_CODE_ATTEMPTS |
5 |
Số lần thử mỗi mã |
STUDIO_IDENTITY_CODE_RESEND |
30 |
Thời gian chờ gửi lại (giây) |
SLACK_CLIENT_ID, SLACK_CLIENT_SECRET, SLACK_SIGNING_SECRET |
trống | Add to Slack |
WHATSAPP_API_URL |
Graph API | Base URL của WhatsApp Cloud API |
STUDIO_TRUSTED_PROXIES |
các dải private | CIDR của proxy cho X-Forwarded-For |
STUDIO_CALLBACK_RATE_LIMIT_IP |
60 |
Callback công khai mỗi IP trong một khung |
STUDIO_CALLBACK_RATE_LIMIT_CHANNEL |
300 |
Mỗi kết nối trong một khung |
STUDIO_CALLBACK_RATE_WINDOW |
60 |
Độ dài khung (giây) |
Trace¶
| Biến | Mặc định | Nghĩa |
|---|---|---|
OTEL_EXPORTER_OTLP_ENDPOINT |
trống | Endpoint OTLP/HTTP; trống là tắt trace |
OTEL_EXPORTER_OTLP_HEADERS |
trống | Header OTLP |
OTEL_SERVICE_NAME |
superstep |
Tên dịch vụ |
STUDIO_TRACE_URL |
trống | Mẫu link Mở trace có {trace_id} |
STUDIO_OTEL_METRICS |
0 |
Xuất thêm metric |
LANGSMITH_API_KEY, LANGSMITH_TRACING |
trống | Xuất sang LangSmith |
LANGSMITH_PROJECT, LANGSMITH_ENDPOINT |
trống | Project và endpoint của LangSmith |