You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We would like Langfuse SDKs to support exporting spans to more than one destination—specifically, keep the default Langfuse OTLP export and optionally forward the same spans to an additional OTLP endpoint (or custom SpanExporter).
This would follow the standard OpenTelemetry pattern of attaching multiple SpanProcessors to a single TracerProvider, without requiring users to replace Langfuse's built-in exporter.
Problem
Today, when instrumenting with the Langfuse Python SDK (@observe(), LangChain callbacks, etc.), spans are exported through Langfuse's internal OTLP pipeline to the configured Langfuse host.
Some deployments need parallel export to another OTLP-compatible backend—for example:
An internal observability or logging pipeline (same VPC / on-prem)
A secondary sink during migration or validation
Environment-specific routing (e.g. dev/staging copies to a local collector)
PR #1618 added optional span_exporter, which is helpful for customization, but it replaces the default Langfuse exporter rather than adding a second one. Setting generic OTEL_EXPORTER_OTLP_* env vars also does not appear to dual-write when using Langfuse's own TracerProvider initialization.
Proposed behavior
Support one or more additional exporters while preserving the default Langfuse export path.
Option A — constructor / client API
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
Langfuse(
additional_span_exporters=[
OTLPSpanExporter(endpoint="https://internal-collector.example.com/v1/traces"),
],
)
Option B — environment variables (no code changes)
Summary
We would like Langfuse SDKs to support exporting spans to more than one destination—specifically, keep the default Langfuse OTLP export and optionally forward the same spans to an additional OTLP endpoint (or custom SpanExporter).
This would follow the standard OpenTelemetry pattern of attaching multiple SpanProcessors to a single TracerProvider, without requiring users to replace Langfuse's built-in exporter.
Problem
Today, when instrumenting with the Langfuse Python SDK (@observe(), LangChain callbacks, etc.), spans are exported through Langfuse's internal OTLP pipeline to the configured Langfuse host.
Some deployments need parallel export to another OTLP-compatible backend—for example:
PR #1618 added optional span_exporter, which is helpful for customization, but it replaces the default Langfuse exporter rather than adding a second one. Setting generic OTEL_EXPORTER_OTLP_* env vars also does not appear to dual-write when using Langfuse's own TracerProvider initialization.
Proposed behavior
Support one or more additional exporters while preserving the default Langfuse export path.
Option A — constructor / client API
Option B — environment variables (no code changes)
Requirements we care about:
Alternatives considered
Questions for maintainers
Happy to contribute a PR if there is alignment on the API shape. Thanks!