Issue
PR #9437 (commit c70d19dc26, "Harden macOS and backend against recurring bug classes") added HOSTED_PARAKEET_API_URL entries to backend/deploy/runtime_env.yaml for Cloud Run services with https://parakeet.omi.me.
The parakeet ILB is HTTP-only (port 80, targetHttpProxy, no TLS termination). HTTPS requests to it timeout.
Incident Impact
- Downtime: ~14 hours (Jul 12 01:13 UTC – ongoing, not yet resolved)
- Affected feature: Voice message transcription via Parakeet (
/v2/transcribe pre-recorded STT) — 100% failure rate on all Cloud Run services (backend, backend-sync, backend-integration)
- User impact: All voice messages sent by users fail to transcribe. Backend returns 200 (graceful fallback) but transcription content is empty — users see no text for their voice messages.
- Scope: Every user who sent a voice message during the outage window is affected. Parakeet request rate dropped to 0 rps at 01:37 UTC and has remained at 0 since (verified via Grafana parakeet-asr-monitoring dashboard).
- Not affected: Real-time streaming STT via WebSocket (
/v3/stream) from GKE backend-listen — this uses ClusterIP (bypasses ILB), so live conversation transcription continued working.
Root Cause
PR #9437 added HOSTED_PARAKEET_API_URL to runtime_env.yaml with https:// scheme for Cloud Run services. The gcp_backend.yml workflow renders this file via render_backend_runtime_env.py and sets the env var on deploy. The main branch deploy at 01:11 UTC overwrote the correct http:// value with https://.
Timeline:
- Jul 12 01:11 UTC —
gcp_backend.yml main branch workflow starts
- Jul 12 01:13:55 UTC — revision
backend-f755063-1 goes live with https://parakeet.omi.me
- Jul 12 01:19:14 UTC — last successful parakeet transcription (old instance draining)
- Jul 12 01:19:35 UTC — first timeout, 100% failure from this point
- Jul 12 01:37 UTC — parakeet request rate drops to 0 rps (confirmed via Prometheus
parakeet_requests_total)
- Ongoing — 0 rps sustained for 14 hours, all voice message transcription failing
Evidence
Previous revision (backend-f92baff, deployed 00:06 UTC):
HOSTED_PARAKEET_API_URL=http://parakeet.omi.me ← correct
Current revision (backend-f755063, deployed 01:13 UTC):
HOSTED_PARAKEET_API_URL=https://parakeet.omi.me ← wrong
ILB config:
- Forwarding rule: port 80 only
- Target proxy:
targetHttpProxy (not HTTPS)
- No TLS certificate configured
Fix Required
In backend/deploy/runtime_env.yaml, change all Cloud Run service entries from:
HOSTED_PARAKEET_API_URL:
value: https://parakeet.omi.me
to:
HOSTED_PARAKEET_API_URL:
value: http://parakeet.omi.me
Audit: nllb.omi.me already uses http://. Other ILB services (diarizer, vad, pusher) use ClusterIP in runtime_env — no other instances of this bug.
@Git-on-my-level — this came from your PR #9437.
Issue
PR #9437 (commit
c70d19dc26, "Harden macOS and backend against recurring bug classes") addedHOSTED_PARAKEET_API_URLentries tobackend/deploy/runtime_env.yamlfor Cloud Run services withhttps://parakeet.omi.me.The parakeet ILB is HTTP-only (port 80,
targetHttpProxy, no TLS termination). HTTPS requests to it timeout.Incident Impact
/v2/transcribepre-recorded STT) — 100% failure rate on all Cloud Run services (backend, backend-sync, backend-integration)/v3/stream) from GKE backend-listen — this uses ClusterIP (bypasses ILB), so live conversation transcription continued working.Root Cause
PR #9437 added
HOSTED_PARAKEET_API_URLtoruntime_env.yamlwithhttps://scheme for Cloud Run services. Thegcp_backend.ymlworkflow renders this file viarender_backend_runtime_env.pyand sets the env var on deploy. The main branch deploy at 01:11 UTC overwrote the correcthttp://value withhttps://.Timeline:
gcp_backend.ymlmain branch workflow startsbackend-f755063-1goes live withhttps://parakeet.omi.meparakeet_requests_total)Evidence
Previous revision (
backend-f92baff, deployed 00:06 UTC):Current revision (
backend-f755063, deployed 01:13 UTC):ILB config:
targetHttpProxy(not HTTPS)Fix Required
In
backend/deploy/runtime_env.yaml, change all Cloud Run service entries from:to:
Audit:
nllb.omi.mealready useshttp://. Other ILB services (diarizer, vad, pusher) use ClusterIP in runtime_env — no other instances of this bug.@Git-on-my-level — this came from your PR #9437.