Arize Phoenix
Stream Ingate's gateway traces into Arize Phoenix over standard OTLP, Phoenix reads the OTel GenAI attributes natively, with no mapping on either side.
What it is
Arize Phoenix is an open-source LLM observability and evaluation platform: trace visualization, prompt/agent quality evals, and dataset curation, built on OpenTelemetry's GenAI semantic conventions. It ingests traces over the standard OTLP traces endpoint (/v1/traces). Nothing Phoenix-specific is required on the sending side.
Consume traces from Ingate
Create an export config pointing at your Phoenix collector's OTLP traces endpoint:
curl -X POST https://api.ingateai.com/api/v1/exports \
-H "X-Ingate-Key: sk-ingate-..." \
-H "Content-Type: application/json" \
-d '{
"name": "phoenix",
"kind": "otlp",
"endpoint": "http://<phoenix-host>/v1/traces",
"include_sources": ["proxy", "api"]
}'Hot reload
kind: "otlp" batches trace entries and POSTs them as application/x-protobuf, which is exactly what Phoenix's OTLP receiver expects. Spans carry the OTel GenAI semantic convention attributes (gen_ai.provider.name, gen_ai.request.model, gen_ai.usage.input_tokens/output_tokens, gen_ai.input.messages, gen_ai.output.messages, gen_ai.user.id, gen_ai.session.id) that Phoenix reads natively to render prompt/completion pairs, token usage, and latency in its trace UI, no attribute mapping needed on either side.
include_sources controls which gateway traffic feeds Phoenix: proxy (passthrough/translation requests), api (agent-monitoring/SDK ingest), otel (spans Ingate itself received via its OTel receiver). Omit the field to default to ["proxy", "api"].
Reference
- Trace Exports: how gateway trace streaming works
- Exports API: full config shape,
include_sourcessemantics, hot-reload behavior