Skip to main content

Langfuse Integration

VoltAgent offers built-in OpenTelemetry support, making it easy to send traces and logs to observability platforms like Langfuse. This guide shows you how to integrate VoltAgent with Langfuse using the dedicated @voltagent/langfuse-exporter package.

Prerequisites​

  • You have a Langfuse account and project. Get your API keys (Public Key and Secret Key) and Base URL from your Langfuse project settings.
  • You have a basic VoltAgent application setup.

Installation​

First, install the necessary packages:

npm install @voltagent/langfuse-exporter

Setup​

Import VoltAgent and LangfuseExporter​

In your main application file (e.g., index.ts), import the required classes.

import { Agent, VoltAgent } from "@voltagent/core";
import { VercelAIProvider } from "@voltagent/vercel-ai";
import { openai } from "@ai-sdk/openai";

import { LangfuseExporter } from "@voltagent/langfuse-exporter";
// ... other imports like your LLM provider and tools

Configure the Exporter​

Create an instance of LangfuseExporter. It's best practice to use environment variables for your Langfuse credentials.

const langfuseExporter = new LangfuseExporter({
publicKey: process.env.LANGFUSE_PUBLIC_KEY, // Your Langfuse Public Key
secretKey: process.env.LANGFUSE_SECRET_KEY, // Your Langfuse Secret Key
baseUrl: process.env.LANGFUSE_BASE_URL, // Optional: Defaults to Langfuse Cloud URL
// debug: true, // Optional: Enable detailed logging from the exporter
});

Ensure you have set the LANGFUSE_PUBLIC_KEY and LANGFUSE_SECRET_KEY environment variables.

Pass Exporter to VoltAgent​

When creating your main VoltAgent instance, pass the configured langfuseExporter to the telemetryExporter option.

// Define your agent(s)
const agent = new Agent({
name: "my-voltagent-app",
instructions: "A helpful assistant that answers questions without using tools",
llm: new VercelAIProvider(),
});

// Initialize VoltAgent with the exporter
new VoltAgent({
agents: {
agent, // Register your agent(s)
},
telemetryExporter: langfuseExporter, // Pass the exporter instance
});

How it Works​

By providing the telemetryExporter to VoltAgent, you activate VoltAgent's automatic OpenTelemetry integration:

  • A global OpenTelemetry NodeTracerProvider is configured.
  • The provided exporter(s) are attached using BatchSpanProcessors (recommended for production).
  • All operations within any Agent instance managed by this VoltAgent (including sub-agents called via delegation) will automatically create and export OpenTelemetry spans.
  • The @voltagent/langfuse-exporter specifically transforms these OpenTelemetry spans into Langfuse traces, generations, and spans, mapping relevant attributes like prompts, responses, tool calls, usage data, user IDs, and session IDs.

Using Multiple Exporters​

The telemetryExporter option accepts either a single exporter instance or an array of exporters. This allows you to send telemetry data to multiple systems simultaneously.

import { ConsoleSpanExporter } from "@opentelemetry/sdk-trace-base"; // Example: OTEL Console Exporter

new VoltAgent({
agents: { agent },
telemetryExporter: [
new LangfuseExporter({
/* ... config ... */
}),
new ConsoleSpanExporter(), // Also log spans to the console
// new OtherExporter({ /* ... config ... */ }),
],
});

Now your VoltAgent setup will automatically send detailed traces to Langfuse! Check your Langfuse project to see the incoming data.

Table of Contents