Skip to content
Night Owls.dev
Jump to a page

@nightowlsdev/telemetry-langfuse

Telemetry

Langfuse 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-langfuse

Key exports

  • langfuseTelemetry
  • nightOwlsPlugin
  • LangfuseTelemetryOpts (type)

Usage

telemetry-langfuse.ts
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 });