Skip to content

feat: add Langfuse telemetry integration - #8

Merged
mhaack merged 5 commits into
mainfrom
optel
Mar 25, 2026
Merged

feat: add Langfuse telemetry integration#8
mhaack merged 5 commits into
mainfrom
optel

Conversation

@mhaack

@mhaack mhaack commented Mar 25, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Add src/telemetry.ts — lazy OTEL provider init using BasicTracerProvider + LangfuseExporter, with initTelemetry(env) and flushTelemetry()
  • Wire telemetry into streamText via experimental_telemetry in src/server.ts — traces include model, token counts, latency, tool calls, and per-request org/site metadata
  • Add langfuse-vercel and @opentelemetry/sdk-trace-base dependencies

How it works

The AI SDK's experimental_telemetry: { isEnabled: true } routes spans through the global @opentelemetry/api tracer. initTelemetry(env) registers a BasicTracerProvider + LangfuseExporter on first request per Worker isolate. If LANGFUSE_PUBLIC_KEY or LANGFUSE_SECRET_KEY are not set, telemetry is silently skipped — chat is unaffected.

Test Plan

  • 31 tests passing (npm test)
  • Type-check clean (npm run type-check)
  • Set LANGFUSE_PUBLIC_KEY and LANGFUSE_SECRET_KEY via wrangler secret put (production) or .dev.vars (local)
  • Send a chat request and verify a trace appears in the Langfuse dashboard with model name, token counts, and org/site metadata

@mhaack
mhaack merged commit 1b80395 into main Mar 25, 2026
4 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

🎉 This PR is included in version 1.4.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants