-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathenv.production.template
More file actions
144 lines (117 loc) · 7.23 KB
/
env.production.template
File metadata and controls
144 lines (117 loc) · 7.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# ╔═══════════════════════════════════════════════════════════════════╗
# ║ construct.computer — Production Template ║
# ║ Copy to /opt/construct/.env and fill in values ║
# ╚═══════════════════════════════════════════════════════════════════╝
# ── Core ─────────────────────────────────────────────────────────────
PORT=3000
HOST=0.0.0.0
NODE_ENV=production
ADMIN_PASSWORD=
LOG_LEVEL=info
DB_PATH=/opt/construct/data/construct.db
DATA_DIR=/opt/construct/data
HOST_DATA_DIR=/opt/construct/data
# ── Security (generate with: openssl rand -hex 32) ──────────────────
JWT_SECRET=
JWT_EXPIRY=7d
ENCRYPTION_KEY=
# ── URLs ─────────────────────────────────────────────────────────────
CORS_ORIGINS=https://your-domain.com
FRONTEND_URL=https://your-domain.com
# ── Access Control (comma-separated emails, empty = allow all) ───────
ALLOWED_EMAILS=
# ── Auth: Google OAuth (required for login) ──────────────────────────
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
GOOGLE_AUTH_REDIRECT_URI=https://your-domain.com/api/auth/google/callback
# ── Auth: Slack (optional) ───────────────────────────────────────────
# SLACK_CLIENT_ID=
# SLACK_CLIENT_SECRET=
# SLACK_SIGNING_SECRET=
# SLACK_REDIRECT_URI=https://your-domain.com/api/slack/callback
# ── Platform: Telegram (optional) ────────────────────────────────────
TELEGRAM_BOT_TOKEN=
# ── LLM Providers ───────────────────────────────────────────────────
# Set one or both. Both enables hybrid mode (mix free + paid models).
PLATFORM_OPENROUTER_KEY=
PLATFORM_CLOUDFLARE_API_TOKEN=
PLATFORM_CLOUDFLARE_ACCOUNT_ID=
# ── Model Routing (optional — defaults in agent/src/config/tiers.ts) ──
# Uncomment to override the built-in tier defaults at runtime.
# Format: "model1,model2" (first = primary, rest = fallbacks)
# Prefix "openrouter:" or "cloudflare:" to force provider. @cf/ auto-detects.
# All models MUST support tool use. Verify: bun agent/scripts/test-models.ts
#
# CONSTRUCT_TIER_ORCHESTRATOR=@cf/moonshotai/kimi-k2.5
# CONSTRUCT_TIER_FREE=openrouter:nvidia/nemotron-3-super-120b-a12b:free
# CONSTRUCT_TIER_LIGHT=@cf/qwen/qwen3-30b-a3b-fp8,@cf/zai-org/glm-4.7-flash
# CONSTRUCT_TIER_STANDARD=@cf/mistralai/mistral-small-3.1-24b-instruct,@cf/meta/llama-4-scout-17b-16e-instruct
# CONSTRUCT_TIER_HEAVY=@cf/moonshotai/kimi-k2.5,@cf/meta/llama-4-scout-17b-16e-instruct
#
# Legacy vars (still supported, overridden by CONSTRUCT_TIER_* when set):
# PLATFORM_ORCHESTRATOR_MODELS= (OpenRouter orchestrator chain)
# PLATFORM_CHILD_MODELS= (OpenRouter child chain)
# CONSTRUCT_CF_ORCHESTRATOR_MODELS= (Cloudflare orchestrator chain)
# CONSTRUCT_CF_CHILD_MODELS= (Cloudflare child chain)
PLATFORM_TINYFISH_KEY=
PLATFORM_AGENTMAIL_KEY=
MEM0_API_KEY=
# ── Integrations ─────────────────────────────────────────────────────
COMPOSIO_API_KEY=
RESEND_API_KEY=
RESEND_FROM_EMAIL=noreply@your-domain.com
# ── Analytics (frontend — VITE_ prefix exposes to browser) ───────────
VITE_PUBLIC_POSTHOG_KEY=
VITE_PUBLIC_POSTHOG_HOST=https://eu.i.posthog.com
# ── Docker (leave unset to use default /var/run/docker.sock) ─────────
# DOCKER_HOST=unix:///var/run/docker.sock
# ╔═══════════════════════════════════════════════════════════════════╗
# ║ Agent (inside containers — backend proxy sets these auto.) ║
# ║ Only needed for standalone/local agent runs without backend. ║
# ╚═══════════════════════════════════════════════════════════════════╝
# ── Agent Core ───────────────────────────────────────────────────────
# AGENT_PORT=9223
# AGENT_WORKSPACE=/home/user
# ── Agent LLM (standalone — without proxy) ───────────────────────────
# OPENROUTER_API_KEY=
# OPENROUTER_MODEL=
# ── Agent Cloudflare (standalone — without proxy) ────────────────────
# CLOUDFLARE_ACCOUNT_ID=
# CLOUDFLARE_API_TOKEN=
# CLOUDFLARE_MODEL=@cf/moonshotai/kimi-k2.5
# CLOUDFLARE_ENABLED=true
# ── Agent Services (standalone — without proxy) ─────────────────────
# TINYFISH_API_KEY=
# TINYFISH_MAX_CONCURRENT_SESSIONS=3
# AGENTMAIL_API_KEY=
# ── Agent Browser ────────────────────────────────────────────────────
# AGENT_BROWSER_SESSION=default
# AGENT_BROWSER_SOCKET_DIR=
# AGENT_BROWSER_HOME=
# ── Agent Proxy Mode (set by backend at container launch) ────────────
# CONSTRUCT_INSTANCE_ID=
# CONSTRUCT_PROXY_AUTH_TOKEN=
# CONSTRUCT_PROXY_LLM_BASE_URL=
# CONSTRUCT_PROXY_CF_BASE_URL=
# CONSTRUCT_PROXY_TINYFISH_BASE_URL=
# CONSTRUCT_PROXY_AGENTMAIL_BASE_URL=
# CONSTRUCT_ORCHESTRATOR_MODELS=
# CONSTRUCT_CHILD_MODELS=
# CONSTRUCT_CF_ORCHESTRATOR_MODELS=
# CONSTRUCT_CF_CHILD_MODELS=
# USER_TIMEZONE=America/New_York
# ── Billing: DodoPayments ───────────────────────────────────────────
DODO_PAYMENTS_API_KEY=sk_test_your_api_key_here
DODO_PAYMENTS_WEBHOOK_SECRET=whsec_your_webhook_secret_here
DODO_PAYMENTS_ENVIRONMENT=live_mode
# Product IDs (from DodoPayments dashboard)
DODO_PRODUCT_ID_PRO=pdt_your_pro_product_id
DODO_TOPUP_10=pdt_your_10_topup_id
DODO_TOPUP_25=pdt_your_25_topup_id
DODO_TOPUP_50=pdt_your_50_topup_id
# ── Usage Limits ────────────────────────────────────────────────────
# AI cost cap per 6-hour window in USD. Set to -1 for unlimited.
PRO_COST_CAP_PER_6H=8
# ── Dev-only (do NOT set in production) ─────────────────────────────
# DEV_BYPASS_SUBSCRIPTION=true # Grants pro plan to all users without payment
PLATFORM_SMITHERY_API_KEY=