1{2 "$schema": "node_modules/wrangler/config-schema.json",3 "name": "tribes",4 "main": "worker/src/index.ts",5 "compatibility_date": "2026-08-01",6 "compatibility_flags": ["nodejs_compat"],7 "assets": {8 "directory": "./web/dist",9 "binding": "ASSETS",10 "not_found_handling": "single-page-application",11 "run_worker_first": ["/mcp", "/api/*", "/llms.txt"]12 },13 "d1_databases": [14 {15 "binding": "DB",16 "database_name": "tribes",17 "database_id": "placeholder-set-on-first-deploy",18 "migrations_dir": "migrations"19 }20 ],21 "r2_buckets": [{ "binding": "BLOBS", "bucket_name": "tribes-blobs-dev" }],22 "triggers": {23 "crons": ["17 4 * * *"]24 },25 "rules": [26 { "type": "Text", "globs": ["**/*.txt", "**/*.md"], "fallthrough": true }27 ],28 "observability": { "enabled": true },29 "vars": {30 // Set to "1" only in local dev (.dev.vars) to enable local:<name> auth bypass.31 "DEV_AUTH": "0"32 },3334 // Deployments: `npm run deploy:dev` -> dev.tribes.pub (rolling main, own DB);35 // `scripts/release.sh vX.Y.Z` -> vX-Y-Z.tribes.pub + apex tribes.pub (shared36 // prod DB; dashes because the universal wildcard cert covers one label only).37 // All prod hosts share COOKIE_DOMAIN + AUTH_ORIGIN so shoo accounts survive38 // across releases (sign-in always happens on the apex origin).39 "env": {40 "dev": {41 "name": "tribes-dev",42 "routes": [{ "pattern": "dev.tribes.pub", "custom_domain": true }],43 // Sim-metrics precompute runs a full match (~10-30s CPU) in waitUntil.44 "limits": { "cpu_ms": 120000 },45 "assets": {46 "directory": "./web/dist",47 "binding": "ASSETS",48 "not_found_handling": "single-page-application",49 "run_worker_first": ["/mcp", "/api/*", "/llms.txt"]50 },51 "d1_databases": [52 {53 "binding": "DB",54 "database_name": "tribes-dev",55 "database_id": "65eaa1ad-a8aa-43ea-907b-07e1d8ddea49",56 "migrations_dir": "migrations"57 }58 ],59 "r2_buckets": [{ "binding": "BLOBS", "bucket_name": "tribes-blobs-dev" }],60 "triggers": { "crons": ["17 4 * * *"] },61 "observability": { "enabled": true },62 "vars": { "DEV_AUTH": "0", "SELF_ORIGIN": "https://dev.tribes.pub" }63 },64 "prod": {65 "name": "tribes-prod",66 "routes": [{ "pattern": "tribes.pub", "custom_domain": true }],67 // Sim-metrics precompute + nightly ladder replay run full matches in68 // waitUntil/cron (~10-30s CPU each).69 "limits": { "cpu_ms": 120000 },70 "assets": {71 "directory": "./web/dist",72 "binding": "ASSETS",73 "not_found_handling": "single-page-application",74 "run_worker_first": ["/mcp", "/api/*", "/llms.txt"]75 },76 "d1_databases": [77 {78 "binding": "DB",79 "database_name": "tribes-prod",80 "database_id": "ab89a148-d5e0-4f74-9603-e283ee5a7791",81 "migrations_dir": "migrations"82 }83 ],84 "r2_buckets": [{ "binding": "BLOBS", "bucket_name": "tribes-blobs-prod" }],85 "triggers": { "crons": ["17 4 * * *"] },86 "observability": { "enabled": true },87 "vars": {88 "DEV_AUTH": "0",89 "COOKIE_DOMAIN": ".tribes.pub",90 "AUTH_ORIGIN": "https://tribes.pub",91 "SELF_ORIGIN": "https://tribes.pub"92 }93 }94 }95}