Framework adapters
Five-minute wiring, zero lock-in. ReasonRank's primary integration path is generic OpenTelemetry: any stack emitting OTel GenAI semconv, OpenInference, or OpenLLMetry attributes works with no adapter at all. The adapters below are deliberately thin conveniences — exporter wiring + attribute conventions + payload-capture toggles — never runtimes, and none depends on its framework at runtime.
The vocabulary they emit is owned by @reasonrank/otel — the same
package the ingest path uses for normalization — so adapters and ingestion
cannot drift apart. It exports reasonRankOtlpConfig({ baseUrl, ingestKey })
(OTLP/HTTP endpoint + auth headers for any OTel SDK) and the
reasonrank.* attribute constants (RR_ATTR) that attach spans to a
specific agent, workflow, or prompt version.
| Package | Framework | Shape |
|---|---|---|
@reasonrank/vercel-ai | Vercel AI SDK | reasonrankTelemetry(...) → experimental_telemetry settings |
@reasonrank/openai-agents | OpenAI Agents SDK (JS) | ReasonRankTraceExporter trace processor → OTLP JSON |
@reasonrank/langgraph | LangChain / LangGraph JS | ReasonRankCallbackHandler → OTLP JSON |
reasonrank (Python) | Pydantic-AI / any OTel | instrument_pydantic_ai(...) / configure_reasonrank_otel(...) |
Shared guarantees
- Metadata-only by default. Every adapter takes
capturePayloads(defaultfalse). Payload capture is an explicit opt-in at the exporter — the same boundary the SDKs and ingest API enforce. Captured tool spans are what make sessions promotable to replay cassettes (design-partner preview). - Fail-open. Exporters batch, flush on interval, and swallow network errors — telemetry can never take the host app down.
- Versioned independently. Each adapter is its own package with its own tests; the OTel path remains the zero-dependency fallback for any framework not listed.
See each package's README for its copy-paste quickstart.