The Temporal Cloud Proxy is configured entirely via a YAML file passed to the binary using theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/temporal-sa/temporal-cloud-proxy/llms.txt
Use this file to discover all available pages before exploring further.
--config flag (default: config.yaml). Configuration is validated at startup — if any field fails validation the proxy exits immediately with a descriptive error message listing every problem found, so you can fix them all at once.
Top-level structure
The file has four top-level keys. Every key is required unless noted otherwise.server
Controls the gRPC port and bind address that Temporal workers connect to.
The gRPC port the proxy listens on. Must be between
1 and 65535 inclusive. Workers and SDKs point their hostPort at this address.The network interface the proxy binds to. Use
"0.0.0.0" to accept connections on all interfaces, or a specific IP to restrict access.metrics
Exposes a Prometheus-compatible /metrics HTTP endpoint.
The HTTP port for the Prometheus metrics scrape endpoint. Must be between
1 and 65535 inclusive. Accessible at http://<host>:<port>/metrics.encryption.caching
Global LRU cache settings that apply to every workload that has encryption enabled. These values control how long and how often the proxy reuses a data key before requesting a new one from KMS, which balances performance against key rotation frequency.
Maximum number of entries in the LRU key cache. When the cache is full the least-recently-used entry is evicted. Must be
>= 0.Maximum age of a cached key, expressed as a Go duration string (e.g.
"5m", "1h", "30s"). Keys older than this value are evicted on next access and a fresh key is generated from KMS.Maximum number of times a single cached key may be used for encryption or decryption before it is evicted and regenerated. Must be
>= 0. Encryption and decryption operations each maintain separate cache entries, so a key that has been used 100 times for encryption is evicted independently of decryption usage.These caching values are global defaults shared across all workloads. There is no per-workload caching override — all workloads share the same LRU cache instance and eviction policy.
workloads
An array of workload definitions. Each entry maps an incoming workload-id gRPC header value to a specific Temporal Cloud namespace, along with optional payload encryption and worker authentication settings.
See the Workloads page for the complete field reference and multi-workload examples.
workload_id values must be unique within the config file. If the same ID appears more than once the proxy exits at startup with the error: workload already exists: <id>.Validation rules
The following constraints are enforced at startup. All errors are collected and reported together before the process exits.| Rule | Error |
|---|---|
server.port must be 1–65535 | invalid server port: <n> |
metrics.port must be 1–65535 | invalid metrics server port: <n> |
encryption.caching.max_cache must be >= 0 | encryption max_cache must be >= 0: <n> |
encryption.caching.max_usage must be >= 0 | encryption max_usage must be >= 0: <n> |
Each workload_id must be non-empty | workload_id is required |
Each workload_id must be unique | workload already exists: <id> |
temporal_cloud.namespace must not be blank | temporal cloud namespace must not be blank: <id> |
temporal_cloud.host_port must not be blank | temporal cloud hostport must not be blank: <id> |
api_key and tls cannot both be set on the same workload | cannot have both api key and mtls authentication configured on a single workload: <id> |