Platform services
These are infrastructure integrations, not sales channels.
| System | Role | Failure observed |
|---|---|---|
| S3-compatible storage | Required at boot. Presigned upload and download. Label artifacts | Missing settings fail boot. Public URL fallback 404s on R2 if AWS_S3_PUBLIC_URL is unset |
SMTP (nodemailer) | Welcome, password reset, tenant invite, ticket notification on email_queue | If SMTP_HOST is set, port and from-address are mandatory. 3 attempts. Forgot-password still returns success to the client |
| Sentry | 5xx, terminal Bull failures, TrackedCron | Initialized from src/instrument.ts. DSN required in production |
| Prometheus | /metrics | Bypasses JWT |
| AI gateway | AI_BASE_URL, AI_API_KEY, AI_MODEL, AI_EMBEDDING_MODEL. Compose points at Bifrost | Embedding service catches failures so the API still boots |
| Cloudflare Turnstile | Login and signup | Blank keys disable CAPTCHA |
| Twilio | Voice agent | Token stored encrypted on VoiceAgentConfig |
| Faster-Whisper / Kokoro | VOICE_STT_URL, VOICE_TTS_URL | Local defaults. Not shown as Compose services in the portion that was read |
| Bharat Address | Address validation sidecar | BHARATADDRESS_SIDECAR_URL |
Files
POST /v1/files/uploads/:purpose uploads through the API. POST /v1/file/get-presign returns a pre-signed URL so bytes can go to object storage. A separate operations file controller also exists.
MCP
@hmake98/nest-mcp. Compose sets MCP_WS_PORT=3002. CSP is skipped for /mcp/playground. Websocket authentication is unknown.