Skip to main content
bryel is OpenTelemetry-native: anything that emits OpenTelemetry GenAI spans ships to bryel as-is — no bryel-specific adapter required. The Vercel AI SDK wraps OpenAI, Anthropic, Google, and dozens of other providers behind one interface, and bryel has a first-class adapter for it. If you can call your model through the AI SDK, it’s the least-effort, best-instrumented path — models, tokens, cost, and the full tool trajectory, out of the box.
npm i @bryel/vercel @vercel/otel
See the Vercel AI SDK guide.

Calling a provider SDK directly

If you call the OpenAI / Anthropic / LangChain SDKs directly, add any OpenTelemetry instrumentation that emits GenAI spans, then ship those spans with bryelSpanProcessor — it forwards OTel spans to bryel without modifying them:
import { NodeSDK } from "@opentelemetry/sdk-node";
import { bryelSpanProcessor } from "@bryel/sdk-core";
// import the OpenTelemetry instrumentation for your provider SDK

new NodeSDK({
  instrumentations: [
    /* your GenAI instrumentation here */
  ],
  spanProcessors: [bryelSpanProcessor({ apiKey: process.env.BRYEL_KEY })],
}).start();
Your provider calls now flow to bryel — no call-site changes.
bryel speaks the OpenInference convention over OTLP and owns its conventions outright — there’s no third-party observability SDK in your dependency tree. Any instrumentation that emits OpenInference- or OTel-GenAI-shaped spans works.