Skip to main content
The OpenAI Agents SDK is instrumented by the OpenInference OpenAI Agents instrumentor, which bridges the SDK’s native tracing into OTLP spans — agent runs, handoffs, tool calls, and model calls. Point the exporter at AgentMark and the traces arrive normalized.

Setup

1

Install the instrumentor and the OTLP exporter

npm install @arizeai/openinference-instrumentation-openai-agents @openai/agents \
  @opentelemetry/sdk-trace-node @opentelemetry/sdk-trace-base \
  @opentelemetry/exporter-trace-otlp-http
2

Point the exporter at AgentMark and instrument the SDK

Use your AgentMark API key and app id from project settings.
// instrumentation.ts
import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
import { BatchSpanProcessor } from "@opentelemetry/sdk-trace-base";
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
import { OpenAIAgentsInstrumentation } from "@arizeai/openinference-instrumentation-openai-agents";
import * as agents from "@openai/agents";

const provider = new NodeTracerProvider({
  spanProcessors: [
    new BatchSpanProcessor(
      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!,
        },
      })
    ),
  ],
});
provider.register();

const instrumentation = new OpenAIAgentsInstrumentation({ tracerProvider: provider });
instrumentation.manuallyInstrument(agents);
In TypeScript, this setup must run before the agents SDK runs, so the instrumentor can register its trace processor. Put it in its own module and load it first, for example node -r ./instrumentation.js app.js.
3

Run your agent

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

What AgentMark captures

OpenAI Agents 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: