Operations
Hosted multi-tenant (P0-4 / ENG-04)
When `HOSTED_MULTI_TENANT=true`, the Worker treats missing tenant context as unauthorized instead of falling back to a shared `default` project.
When HOSTED_MULTI_TENANT=true, the Worker treats missing tenant context as unauthorized instead of falling back to a shared default project.
Required vars (Worker)
HOSTED_MULTI_TENANT=true
FLUXY_PLATFORM_PROJECT_ID=<uuid-from-provision-bootstrap>
ALLOWED_ORIGINS=https://app.fluxychat.com,https://your-dashboard.vercel.app
REQUIRE_ADMIN_AUTH=trueBootstrap once:
pnpm provision:bootstrap
# Copy fc_... API key + project UUID to dashboard .env.local AND worker .dev.varsClient behaviour
- Dashboard sends
X-Fluxy-Api-Keyor JWT withtid(project id). resolveProjectIdinapps/worker/src/lib/resolve-project-id.jsreturnsnullwithout a key in hosted mode → routes respond 401, not cross-tenant data.
Local dev
Simplest path: leave HOSTED_MULTI_TENANT unset/false and use a single project + manual JWT in onboarding.
For hosted parity locally, align both dashboard .env.local and worker .dev.vars after pnpm provision:bootstrap.
Smoke
# Without API key on hosted worker → expect 401 on tenant-scoped routes
curl -i https://api.example.com/projectsSee also staging and status.
Environment setup -- local, staging, production
Step-by-step configuration before first deploy. Run code checks first (`pnpm run check:env`).
Observability & scheduled jobs (ENG-09 / ENG-18)
New projects receive seeded operational alert rules via `insertNewProject` → `seedDefaultAlertRules` (`apps/worker/src/lib/seed-default-alert-rules.js`).