Render is the hosting layer for Lucia’s Engine and private Admin/UI during the serious staging phase.
Runbook phase mapping
- Phase 1 — service access, ownership, and environment-variable preparation
- Phase 3 — host Lucia Engine first
- Phase 4 — host Lucia Admin/UI second
Primary runbook page: 08 - Live Transition Runbook
Why Render is in the stack
Render is the clean next move because it gives Lucia:
- always-on hosted services
- simple Git-based deployment
- separate web services for Engine and Admin
- environment variables without nonsense
- easy staging without dragging in platform bloat
Lucia role
Host on Render
- Lucia Engine
- Lucia Admin/UI
Not the goal
- not final “planet-scale” architecture
- not fancy multi-region orchestration yet
- not unnecessary complexity
Recommended service shape
| Service | Type | Purpose |
|---|
| Lucia Engine | Web Service | Express/Node backend, routes, model gateway, runtime behavior |
| Lucia Admin | Web Service or Static Site | operator/admin interface |
| Optional worker later | Background Worker | async jobs only when Lucia truly needs them |
Service map
Lucia Engine
- repo:
- branch:
- service name:
- region:
- runtime:
- health check path:
- start command:
Lucia Admin
- repo:
- branch:
- service name:
- region:
- build command:
- publish/start command:
- base API URL target:
Environment variables
Split these into Engine and Admin.
Do not let localhost values linger like bad plumbing behind the walls.
Engine env vars
| Variable | Value / Reference | Notes |
|---|
NODE_ENV | | |
PORT | | |
LUCIA_OPENAI_API_KEY | | |
OPENAI_API_KEY | | fallback only if used |
LUCIA_INTELLIGENCE_MODEL | | |
LUCIA_MODEL_FOCUS_OPS_REPLY | | optional |
SUPABASE_URL | | |
SUPABASE_SERVICE_ROLE_KEY | | engine-only |
CLERK_SECRET_KEY | | if needed server-side |
UPSTASH_REDIS_REST_URL | | later |
UPSTASH_REDIS_REST_TOKEN | | later |
SENTRY_DSN | | later |
OPERATOR_TIME_ZONE | | |
Admin env vars
| Variable | Value / Reference | Notes |
|---|
VITE_API_BASE_URL | | should replace localhost hardcoding |
VITE_CLERK_PUBLISHABLE_KEY | | |
VITE_SUPABASE_URL | | only if needed client-side |
VITE_SUPABASE_ANON_KEY | | only if needed client-side |
VITE_SENTRY_DSN | | optional later |
Setup checklist
Stage 1 — create services
Stage 2 — staging deployment
Stage 3 — release discipline
Credentials + account reference
Account access
| Item | Value |
|---|
| Account email | |
| Workspace / team | |
| Dashboard URL | |
| Billing owner | |
| MFA method | |
| MFA backup codes location | |
API / service references
| Secret / Token | Value or 1Password Reference | Notes | Rotated |
|---|
| Render API key | | | |
| Lucia Engine service ID | | | |
| Lucia Admin service ID | | | |
| Deploy hook URL | | optional | |
Deploy settings tracker
| Service | Repo | Branch | Region | Build Command | Start Command | Health Check |
|---|
| Lucia Engine | | | | | | |
| Lucia Admin | | | | | | |
Notes / gotchas
- The current admin handoff is hardcoded to localhost. That must die.
- Hosted staging must preserve Lucia’s route contract, not silently mutate behavior.
- Keep Engine and Admin separate. Clean lines. Less mess.
Related pages