Temporal variants
OpenBox uses Temporal as its workflow engine. The Helm chart supports two variants — customer picks per data residency, ops burden, and cost profile.
Side-by-side comparison
| Aspect | Self-hosted Temporal | Temporal Cloud |
|---|---|---|
| Workflow engine | 4 in-cluster pods (frontend / history / matching / worker) — image temporalio/server:1.29.1 | Managed SaaS |
| Client → engine protocol | gRPC plaintext, cluster-internal temporal-frontend.temporal.svc:7233 | gRPC + TLS across public internet |
| Visibility (search) store | Elasticsearch 7.17.3 × 3 pods (30 GiB gp3 each) | Temporal-managed |
| Default (workflow history) store | Dedicated PostgreSQL cluster (openbox-postgres-temporal) | Temporal-managed |
| Temporal Web UI | Self-hosted temporal-web pod behind Istio | Temporal SaaS console |
| Ops burden | HIGH — cluster upgrades, ES health, retention tuning, PG backup + DR | LOW — Temporal handles upgrades + retention |
| Data residency | Fully in your VPC | Temporal SaaS region (limited list) |
| AWS bill delta | Baseline + ~$300-640/mo (memory pool + DB pool + ES + PVCs) | Baseline |
| Temporal Cloud subscription | $0 | ~$50-500+/mo (workflow-volume dependent) |
Break-even math
Roughly: self-hosted Temporal wins on total cost if Temporal Cloud's per-action billing exceeds ~$300-600/mo for your workload. Below that threshold, Temporal Cloud is cheaper (no AWS delta + minimal SaaS bill).
Rule of thumb:
- < 100K workflow executions/day → Temporal Cloud
- > 500K workflow executions/day → Self-hosted starts to win
- Between: compute both, pick whichever has more headroom
Openbox does not prescribe — customer knows their workload.
When to pick self-hosted
- ✅ Data residency requirement forbids SaaS (finance, gov, EU-strict)
- ✅ Air-gapped or heavily restricted network (S4 post-MVP scenario)
- ✅ Very high workflow volume (self-hosted amortizes fixed infra cost)
- ✅ Existing Temporal expertise on team (upgrades, retention, ES ops)
When to pick Temporal Cloud
- ✅ Small-to-medium workflow volume
- ✅ Team doesn't want ES / PostgreSQL ops on top of application ops
- ✅ Multi-region setup — Temporal Cloud handles regional replication
- ✅ Fast time-to-first-workflow (no in-cluster Temporal to provision)
Chart config
Set via openbox-core.temporal.mode:
# Self-hosted variant
openbox-core:
temporal:
mode: self-hosted
server:
replicas: 4
# Temporal Cloud variant
openbox-core:
temporal:
mode: cloud
cloud:
namespace: <your-temporal-cloud-namespace>
address: <ns>.<acct>.tmprl.cloud:7233
tlsSecretRef: temporal-cloud-tls # K8s Secret with client cert + key
Full values reference: openbox-core.temporal.*.
Migration between variants
Cloud → Self-hosted (or vice versa) requires:
- Drain in-flight workflows (Temporal API:
SignalWithStartto a terminate flow) - Export workflow history (self-hosted: pg_dump; Cloud: Temporal export API)
- Import to target variant
- Cut over
openbox-core.temporal.*values +helm upgrade - Verify workflow visibility in target UI
Zero-downtime migration is not supported by the chart. Plan a maintenance window (~1-4 hours depending on workflow volume).