Vercel AI SDK
The best default for AI apps. One integration registered at startup; no per-call flags on AI SDK 7; runs anywhere the AI SDK runs (Node, Cloudflare Workers, Edge, Bun, Deno).
AI SDK 7 (recommended)
npm i @getloopops/sdk
import { registerTelemetry } from "ai";
import { loopOps } from "@getloopops/sdk/ai";
registerTelemetry(loopOps({ agent: "my-app" })); // reads LOOPOPS_URL + LOOPOPS_INGEST_KEY
Producer policy lives in that one call — deploy identity for regression joins, capture privacy, sampling:
registerTelemetry(loopOps({
agent: "my-app",
serviceVersion: process.env.GIT_SHA, // anchors verify + regression detection
environment: process.env.NODE_ENV,
recordInputs: false, // capture privacy flags
recordOutputs: true,
sampleRate: 0.25
}));
Fold a conversation into one session:
await generateText({ model, prompt,
runtimeContext: { thread_id: conversationId },
telemetry: { functionId: "my-app", includeRuntimeContext: { thread_id: true } } });
AI SDK 6, or you already run OpenTelemetry
@getloopops/sdk/otel stands up an OTLP exporter the way Sentry.init() does — Node-only, keeps the per-call flag:
// instrument.mjs -> node --import ./instrument.mjs agent.mjs
import { registerLoopOps } from "@getloopops/sdk/otel";
await registerLoopOps({ agent: "my-app" });
// per call:
import { telemetry } from "@getloopops/sdk/otel";
await generateText({ model, prompt, experimental_telemetry: telemetry({ thread_id: conversationId }) });
Peer deps for the v6 path: @opentelemetry/api, @opentelemetry/sdk-node, @opentelemetry/exporter-trace-otlp-http, @opentelemetry/resources, @opentelemetry/semantic-conventions.
What you get
Model, tokens, latency, tool calls, and — because AI SDK telemetry carries the gen_ai. capture contract — replayable failures: diagnose clusters report replayable_count > 0, and prompt fixes can be proven against captured inputs before* shipping (loopops_replay).
Next: First-event proof and limits → · Connect your coding agent →