@nightowlsdev/telemetry-langfuse
TelemetryLangfuse v5 (OTel-native) telemetry exporter for @nightowlsdev/core swarm runs.
What it does
A thin adapter over @nightowlsdev/telemetry-core that forwards a swarm run's spans through Langfuse's OTel-native LangfuseSpanProcessor (@langfuse/otel). Because telemetry-core emits gen_ai.* attributes and Langfuse's default filter forwards any span carrying them, each model call lands in Langfuse as a generation with its model, token usage, and cost. Call langfuseTelemetry({ publicKey, secretKey, baseUrl?, exportMode?, environment?, release? }) and pass the result to defineSwarm({ telemetry }); exportMode defaults to 'immediate' (flushes per run, serverless-safe), use 'batched' for long-running hosts. It also exports nightOwlsPlugin, the declarative CLI plugin manifest consumed by @nightowlsdev/cli. Telemetry is best-effort, so a throwing exporter never breaks the run.
Install
pnpm add @nightowlsdev/telemetry-langfuseKey exports
- langfuseTelemetry
- nightOwlsPlugin
- LangfuseTelemetryOpts (type)
Usage
import { defineSwarm } from "@nightowlsdev/core";
import { langfuseTelemetry } from "@nightowlsdev/telemetry-langfuse";
const telemetry = langfuseTelemetry({
publicKey: process.env.LANGFUSE_PUBLIC_KEY!,
secretKey: process.env.LANGFUSE_SECRET_KEY!,
});
const swarm = defineSwarm({ agents, telemetry });