| Variable | Purpose |
|---|---|
OTEL_EXPORTER_OTLP_ENDPOINT | Where spans go — the base, to which the SDK appends /v1/traces. Use this one. |
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT | The trace endpoint verbatim — nothing is appended. Copying a vendor's base URL into this variable POSTs to / and 404s. Avoid unless you need the verbatim form. |
OTEL_EXPORTER_OTLP_HEADERS | key=value,key=value. This is where vendor auth lives — which is what makes the setup vendor-agnostic. |
OTEL_SERVICE_NAME | Which deployable this is — for the Node hops. Rust functions name themselves in code (temper-api / temper-mcp / temper-internal), which the SDK ranks above this variable. On a project that also runs Node lambdas, set this to name the Node half. On a Rust-only project, leave it unset. |
OTEL_TRACES_SAMPLER, OTEL_TRACES_SAMPLER_ARG | Sampling. |
OTEL_SDK_DISABLED | Turn the exporter off without a deploy. Only the literal value true (case-insensitive) disables export; 1 and yes deliberately do not. |
OTEL_EXPORTER_OTLP_COMPRESSION=gzip.service.namefor the Rust functions is set in code, not byOTEL_SERVICE_NAME. A
project that runs both Rust functions and Node lambdas cannot name both halves distinctly
from one env var. Each Rust binary claims its own name in code, and the OTel SDK ranks that
code-set value aboveOTEL_SERVICE_NAME. SetOTEL_SERVICE_NAMEto whatever the Node
half should be called; it does not touch the Rust spans.
temper binary can export too, but it needs a second switch:| Variable | Purpose |
|---|---|
TEMPER_CLI_TRACE | true (case-insensitive; nothing else counts) lets the CLI export. Off by default. |
OTEL_EXPORTER_OTLP_ENDPOINT is often already exported in a developer's shell for an unrelatedcurl https://<instance>/api/healthTEMPER_CLI_TRACE=true and an OTLPtemper resource listservice.name — temper-api, temper-mcp, ortemper-internal for the Rust surfaces. A root span should appear within seconds.OTEL_EXPORTER_OTLP_ENDPOINT gets /v1/traces appended; OTEL_EXPORTER_OTLP_TRACES_ENDPOINTOTEL_SDK_DISABLED is not true. It is off by default; 1 and yes do notwarn reading "span flushRUST_LOG=off is not a kill switch. It silences logs but still exports spans.OTEL_SDK_DISABLED=true or unset the endpoint.OTEL_* variables set, Temper logs to stdout and exports nothing. This is the default