Skip to main content
The Vercel AI SDK emits OpenTelemetry spans when you enable its telemetry option. The OpenInference vercel package adds a span processor that maps those spans onto the OpenInference conventions before they’re exported, so AgentMark reads model calls, tool calls, and token usage as normalized traces. This works with AI SDK v6.

Setup

1

Install @vercel/otel, the span processor, and the OTLP exporter

npm install @vercel/otel @arizeai/openinference-vercel \
  @opentelemetry/exporter-trace-otlp-http
2

Register OpenTelemetry and point the exporter at AgentMark

Register the span processor with @vercel/otel. In a Next.js app this goes in instrumentation.ts at the project root. Use your AgentMark API key and app id from project settings.
// instrumentation.ts
import { registerOTel } from "@vercel/otel";
import {
  isOpenInferenceSpan,
  OpenInferenceSimpleSpanProcessor,
} from "@arizeai/openinference-vercel";
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";

export function register() {
  registerOTel({
    serviceName: "my-app",
    spanProcessors: [
      new OpenInferenceSimpleSpanProcessor({
        exporter: new OTLPTraceExporter({
          url: "https://api.agentmark.co/v1/traces",
          headers: {
            Authorization: process.env.AGENTMARK_API_KEY!, // raw key, no "Bearer" prefix
            "X-Agentmark-App-Id": process.env.AGENTMARK_APP_ID!,
          },
        }),
        // Export only the AI SDK's generative spans, dropping unrelated ones.
        spanFilter: (span) => isOpenInferenceSpan(span),
      }),
    ],
  });
}
3

Enable telemetry on your AI SDK calls

Set experimental_telemetry on each call you want traced.
import { generateText } from "ai";
import { openai } from "@ai-sdk/openai";

const result = await generateText({
  model: openai("gpt-4o"),
  prompt: "Write a short story about a cat.",
  experimental_telemetry: { isEnabled: true },
});
4

Run your app

Run your app as usual. Each model call and tool call arrives in AgentMark as a span, grouped into a trace. See Traces and logs.

What AgentMark captures

After the span processor maps them, Vercel AI SDK spans use the OpenInference attribute conventions — model, token usage, input and output messages, tool calls, settings, and span kind are all mapped onto AgentMark’s normalized trace fields, and token counts feed cost tracking. See OpenInference for the full attribute mapping.

Next steps

OpenInference

How AgentMark reads OpenInference attributes

Traces and logs

Explore traces once they arrive

Have questions?

Reach out any time: