Repository navigation
Expand file tree
/
Copy path.env.example
More file actions
121 lines (106 loc) · 4.9 KB
/
Copy path.env.example
File metadata and controls
121 lines (106 loc) · 4.9 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
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/telemetry
# Check-in monitoring: 32 random bytes as hex; retain securely with DB backups.
# CHECKIN_ENCRYPTION_KEY=
# Optional, during key rotation only (decrypt-only, comma-separated old keys):
# CHECKIN_ENCRYPTION_KEY_PREVIOUS=
PORT=3001
HOST=0.0.0.0
NODE_ENV=development
# --- Production (Railway / VPS) ---
# NODE_ENV=production
# HEALTH_CHECK_DATABASE=true
# HEALTH_DETAILED=true
# TELEMETRY_API_VERSION=1.6.2 # optional override; build sets version from CHANGELOG
# CORS_ORIGINS=https://telemetry-tracker.com
# TELEMETRY_DASHBOARD_ORIGIN=https://telemetry-tracker.com
# INGEST_ALLOW_UNAUTHENTICATED=false
# Ingest PII scrubbing
#
# Default: ENABLED when unset (hosted cloud + self-host).
# Self-host override: set TELEMETRY_INGEST_PII_SCRUB=false to store payloads as sent.
# See docs/PII-SCRUBBING.md.
# TELEMETRY_INGEST_PII_SCRUB=false
# TELEMETRY_INGEST_PII_SCRUB_MAX_DEPTH=8
# TELEMETRY_INGEST_PII_SCRUB_MAX_NODES=500
# Dashboard auth
# TELEMETRY_ALLOW_REGISTRATION=true
# TELEMETRY_ALLOW_UNAUTHENTICATED_READS=true # legacy only; omit in production
# Stripe billing + webhooks (API only — never on dashboard)
# STRIPE_SECRET_KEY=sk_test_...
# STRIPE_WEBHOOK_SECRET=whsec_...
# STRIPE_PRICE_PRO=price_...
# STRIPE_PRICE_BUSINESS=price_...
# Optional email (invites + password reset + notifications + contact)
# RESEND_API_KEY=re_...
# TELEMETRY_EMAIL_FROM=Telemetry Tracker <info@telemetry-tracker.com>
# CONTACT_INBOX_EMAIL=info@telemetry-tracker.com
# Reply-To for outgoing mail. Hosted cloud defaults to info@telemetry-tracker.com; self-hosted defaults to none.
# TELEMETRY_EMAIL_REPLY_TO=
# Optional observability / tuning
# SENTRY_DSN=
# RATE_LIMIT_INGEST_MAX=3000
# RATE_LIMIT_AUTH_MAX=30
# RATE_LIMIT_API_MAX=300
# Coarse MCP pre-auth guard per connecting proxy address per minute (trustProxy is unset).
# RATE_LIMIT_MAX_MCP=300
# Workspace brief private service (Phase 3A+)
# TELEMETRY_AI_BRIEF_URL=https://ai.internal
# TELEMETRY_AI_BRIEF_SECRET=<32 random bytes, base64 encoded>
# TELEMETRY_AI_BRIEF_TOTAL_BUDGET_MS=2000
# TELEMETRY_AI_BRIEF_ATTEMPT_TIMEOUT_MS=2000
# TELEMETRY_AI_BRIEF_MAX_RETRIES=1
# TELEMETRY_AI_BRIEF_RETRY_MIN_REMAINING_MS=250
# TELEMETRY_BRIEF_SERVED_META_TTL_MS=1800000
# TELEMETRY_BRIEF_SERVED_META_MAX_PER_USER_ORG=5
# TELEMETRY_BRIEF_CACHE_TTL_MS=900000
# TELEMETRY_BRIEF_CACHE_MAX_ENTRIES=200
# TELEMETRY_AI_BRIEF_CIRCUIT_FAILURE_THRESHOLD=5
# TELEMETRY_AI_BRIEF_CIRCUIT_WINDOW_MS=60000
# TELEMETRY_AI_BRIEF_CIRCUIT_COOLDOWN_MS=30000
# BRIEF_REQUEST_UNTIL_BUCKET_MS=60000
# RUN_BRIEF_INTEGRATION_TESTS=true
# Workspace brief async generation (Phase Async-A)
# BRIEF_COMPLETED_RETENTION_DAYS=30
# BRIEF_STALE_MAX_DISPLAY_DAYS=7
# TELEMETRY_AI_BRIEF_WORKER_TOTAL_BUDGET_MS=60000
# TELEMETRY_AI_BRIEF_WORKER_ATTEMPT_TIMEOUT_MS=60000
# TELEMETRY_AI_BRIEF_WORKER_LEASE_MS=60000
# BRIEF_WORKER_POLL_MS=1000
# Alert webhook delivery worker (#225)
# ALERT_WEBHOOK_WORKER_POLL_MS=1000
# Lease is clamped to at least POST timeout + margin (8000 + 5000 ms).
# ALERT_WEBHOOK_WORKER_LEASE_MS=30000
# Avatar storage (Cloudflare R2 — S3-compatible, private bucket)
# R2_ACCOUNT_ID=
# R2_ACCESS_KEY_ID=
# R2_SECRET_ACCESS_KEY=
# R2_BUCKET_NAME=telemetry-avatars
# Native affiliate program (OFF by default — do not enable in any env unless intended)
# Flag is effective only when AFFILIATES_ENABLED=true AND STRIPE_SECRET_KEY is set.
# AFFILIATES_ENABLED=true
# AFFILIATE_ADMIN_EMAILS=founder@example.com,admin@example.com
# Public affiliate application form (POST /api/affiliate-applications); off unless both flags are true
# AFFILIATE_APPLICATIONS_ENABLED=true
# RATE_LIMIT_AFFILIATE_APPLICATION_MAX=5
# AFFILIATE_APPLICATIONS_MAX_PER_HOUR=30
# Optional founder notification on new applications (applicants are never emailed)
# AFFILIATE_APPLICATION_NOTIFY_EMAILS=founder@example.com
# Read-only MCP: off by default; requires ingest PII scrubbing to remain enabled.
# Apply database migrations before opting in. See /docs/mcp and DEPLOYMENT.md.
# TELEMETRY_MCP_ENABLED=true
# DASHBOARD_URL=https://telemetry-tracker.com
# Shared API/dashboard runtime secret authenticating all dashboard visitor-IP forwarding.
# Set the same random value on both services; server-side only, never NEXT_PUBLIC.
# AFFILIATE_CLIENT_IP_FORWARD_SECRET=
# Trust Railway edge-set X-Real-IP only when all traffic reaches the API through Railway.
# Defaults to true in production, false otherwise. Disable for other hosting.
# TRUST_RAILWAY_EDGE=true
# Temporary IP-only diagnostics; never logs authorization or forwarding secrets.
IP_DIAGNOSTIC_LOG=false
# Private read-only signup analytics (disabled when token is unset). API only.
# SIGNUP_STATS_TOKEN= # generate a high-entropy secret; see docs/SIGNUP-STATS.md
# Exact non-personal labels approved for output; all others are redacted.
# SIGNUP_STATS_SOURCES=newsletter
# SIGNUP_STATS_MEDIUMS=email
# SIGNUP_STATS_CAMPAIGNS=launch
# SIGNUP_STATS_REFERRERS=search.example