- Create production sessions from real traffic. Uncorrelated spans become production Sessions that Monitors evaluate automatically. See Monitor Real User Traffic via OpenTelemetry.
- Enrich existing inference results. Spans correlated to an inference result become Trace records on it. Correlation uses the shared trace ID from the
traceparentheader Galtea propagates during Direct Inference, or the explicitgaltea.inference_result.idspan attribute. See W3C Trace Context Propagation.
Endpoint and authentication
Configure your OTel exporter to send traces to the Galtea collector. Every request must carry anAuthorization: Bearer <Galtea-API-key> header — without it, the gateway returns 401 Unauthorized before the request reaches the collector.
All examples below use the Galtea platform hostname: otel.platform.prod-main.galtea.ai.
Using a dedicated tenant deployment?
Using a dedicated tenant deployment?
If your organization has a private Galtea deployment, replace the hostname with your tenant-specific endpoint:Your Galtea account team will provide the exact hostname during onboarding.
Configure your exporter
- Environment variables
- Python code
- OTel Collector
The OpenTelemetry SDK reads endpoint and headers from environment variables. Use shell substitution to expand The same
${GALTEA_API_KEY} before the value is stored in OTEL_EXPORTER_OTLP_TRACES_HEADERS:- HTTP (port 4318)
- gRPC (port 4317)
${GALTEA_API_KEY} syntax works in a docker-compose.yml environment: block, but only when GALTEA_API_KEY is set in the shell that runs Compose or in a .env file Compose loads. Docker Compose substitutes ${...} from those sources when it renders the config. It does not read another entry in the same environment: block. If the variable is unset there, the exporter receives the literal string ${GALTEA_API_KEY} and the gateway returns 401 Unauthorized.Use
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT (the per-signal variant), not OTEL_EXPORTER_OTLP_ENDPOINT. The base variable auto-appends /v1/traces to the URL, but the Galtea collector expects the /otel/traces path.Verify your key and endpoint
A quick way to confirm the header is being applied correctly is to POST an empty payload and inspect the status code:How span content maps to Trace records
When a span becomes a Trace record — whether it enriches an existing inference result or is assembled into a production conversation — its input and output are filled per field, using the first source that provides a value:galtea.trace.*explicit attributes — full control, always wins.gen_ai.*GenAI semantic conventions — the OpenTelemetry standard for LLM telemetry.- Recognized managed-platform span shapes — platform-specific formats Galtea knows.
- Galtea span attributes
- OTel GenAI conventions
- Managed platforms
span.name→namestartTimeUnixNano/endTimeUnixNano→startTime/endTime+latencyMs(computed)span.status→error(fallback whengaltea.trace.erroris not set; only forSTATUS_CODE_ERROR)parentSpanId→parentTraceId(parent-child hierarchy)
metadata field, so no data is lost.
Retrieval context (RAG): to record what your system retrieved, type a span as
RETRIEVER and put the retrieved data in its output (for example via galtea.trace.output). This is the convention Galtea will use to read retrieval context from traces (that reader arrives in a later release), and the output has no required shape.Learn More
Monitor Real User Traffic via OpenTelemetry
Turn your live traffic’s traces into production sessions that Monitors evaluate.
W3C Trace Context Propagation
Attach OTel spans to the test runs Galtea triggers via Direct Inference.