Reference
Configuration
Environment variables, grouped by subsystem.
The backend is configured entirely through environment variables, validated at startup.
.env.example is the authoritative, commented list. Key groups:
Core
| Variable | Default / example |
|---|---|
NODE_ENV · PORT · TZ · LOG_LEVEL | development · 4100 · Asia/Kolkata · info |
CORS_ORIGIN | http://localhost:5173 |
STACKLINK_PUBLIC_URL | http://localhost:4100 |
DATABASE_URL / DIRECT_URL | Postgres (Supabase in staging) |
KNOWLEDGE_DATABASE_URL / KNOWLEDGE_DIRECT_URL | separate knowledge runtime DB (optional) |
PROVIDER_CATALOG_RECONCILE_ON_STARTUP | true |
Security
| Variable | Purpose |
|---|---|
STACKLINK_API_KEY_PEPPER | API-key hashing pepper. |
ENCRYPTION_KEY | 32-byte key for AES-256-GCM credential encryption. |
STACKLINK_REGISTRATION_KEY | Project registration / bootstrap. |
STACKLINK_SESSION_TTL_SECONDS | 3600 |
ALLOW_DEV_STACKLINK_KEY / DEV_STACKLINK_API_KEY | Local development only. |
MCP & executions
| Variable | Default |
|---|---|
STACKLINK_MCP_PROTOCOL_VERSION | 2025-11-25 |
STACKLINK_MCP_STREAMING_ENABLED | true |
STACKLINK_MCP_PROGRESS_THROTTLE_MS / STREAM_HEARTBEAT_MS / STREAM_MAX_MS | 500 / 15000 / 55000 |
STACKLINK_MCP_PROGRESS_MAX_NOTIFICATIONS | 1000 |
STACKLINK_MCP_ORIGIN_ALLOWLIST | empty (falls back to CORS_ORIGIN) |
STACKLINK_EXECUTION_WAIT_DEFAULT_MS / WAIT_MAX_MS | 15000 / 50000 |
STACKLINK_EXECUTION_EVENT_OUTPUT_BUDGET_BYTES / DELTA_MAX_BYTES | 5000000 / 65536 |
Workbench
| Variable | Default |
|---|---|
REMOTE_WORKBENCH_BASE_URL + _TOKEN | unset = workbench disabled |
REMOTE_WORKBENCH_{STANDARD,MEDIUM,LARGE}_BASE_URL + _TOKEN | per-size routing |
REMOTE_WORKBENCH_HELPER_TOKEN_TTL_SECONDS / MAX_OUTPUT_BYTES | 900 / 2000000 |
WORKBENCH_ARTIFACT_STORAGE_KIND (+ WORKBENCH_R2_*) | database (or r2) |
WORKBENCH_LLM_DEFAULT_MODEL / WORKBENCH_LLM_MODEL_CATALOG | openai:gpt-4.1-mini / multi-provider catalog |
WORKBENCH_AUTO_PACKAGE_INSTALL_ENABLED / WORKBENCH_ERROR_CORRECTION_ENABLED | true / true |
WORKBENCH_ALLOWED_PYTHON_PACKAGES | numpy, pandas, matplotlib, pillow, requests, … |
WORKBENCH_COST_* / WORKBENCH_IDLE_CLEANUP_* | cost rates & idle cleanup |
OPENAI_API_KEY · ANTHROPIC_API_KEY · GEMINI_API_KEY · XAI_API_KEY · … | LLM gateway providers |
Dashboard, billing, webhooks
| Variable | Purpose |
|---|---|
DASHBOARD_APP_URL · DASHBOARD_SERVE_STATIC · DASHBOARD_STATIC_DIR | serve the dashboard from the backend origin |
DASHBOARD_SESSION_SECRET · _TTL_SECONDS · _ALLOWED_EMAILS · _AUTO_PROVISION_OWNER | dashboard auth |
GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET | dashboard Google login |
STACKLINK_BILLING_PROVIDER (+ STRIPE_*) | internal locally; stripe in staging/prod |
WEBHOOK_BASE_URL | base for provider webhook ingress URLs |
Providers
SANDBOX_* (environment, URL, key/secret, webhook secret) · WHATSAPP_* · RAZORPAY_* ·
ZOHO_BOOKS_DEFAULT_* (client id/secret + required region) · GMAIL_PUBSUB_* — fill as
providers are enabled.
Knowledge build vs runtime
Knowledge Pack build/import must run against a local Postgres/pgvector build database
(.env.knowledge*.local) — never the hosted runtime.