Datastore options
| Target | Postgres | Redis |
|---|---|---|
| single-node k3s | In-cluster by default (postgres:16, no HA/backups) or BYO managed | In-cluster by default (redis:7) |
| GKE | External (Cloud SQL) recommended — BYO connection string | Bundled (in-cluster) by default |
| EKS | External (RDS) — BYO or create_rds = true to provision | Bundled (in-cluster) by default |
| ArgoCD (any cloud) | External only — externalDatabaseSecret, a pre-seeded Secret | Bundled (bundledDeps.redis.enabled: true) or external |
Redis holds only ephemeral/reconstructible state (WS tokens, SSE streams, pod addresses, OAuth state, usage buffers) everywhere — bundled is the recommended posture regardless of target. Postgres is always the durable source of truth and is what you’d move to a managed service.