Instrumentation Model
UseObserve.initialize() once at application startup to configure the OpenTelemetry provider, exporter, resource attributes, and supported AI SDK instrumentations.
Initialize
Initialize Observe
Initialize Options
| Option | Purpose |
|---|---|
apiKey | Hosted Observe API key. Defaults to ASYMPTOTE_API_KEY |
baseUrl | Hosted Observe base URL. Defaults to ASYMPTOTE_BASE_URL or https://api.asymptotelabs.ai |
otlpEndpoint | Explicit OTLP/HTTP endpoint. Defaults to OTEL_EXPORTER_OTLP_ENDPOINT |
headers | Additional exporter headers |
serviceName | OpenTelemetry service name. Defaults to OTEL_SERVICE_NAME or asymptote-app |
resourceAttributes | Extra OpenTelemetry resource attributes |
instrumentModules | Already-loaded modules to patch manually |
disableInstrumentations | Disable default OpenAI and Anthropic instrumentations |
instrumentationOptions | Configure OpenAI and Anthropic instrumentation behavior |
spanProcessor / spanProcessors | Custom span processors |
spanExporter | Custom span exporter |
disableDefaultExporter | Skip hosted or explicit OTLP exporter creation |
disableBatch | Use a simple span processor instead of batching |
traceExportTimeoutMillis | Batch exporter timeout |
maxExportBatchSize | Batch exporter size limit |
Observe.initialize() may only be called once per process configuration. Call Observe.shutdown() before reinitializing with different options. A later Observe.initialize({ instrumentModules }) call can patch additional modules without replacing the provider.
Instrument Modules
Pass modules toinstrumentModules when they may be loaded before auto-instrumentation runs.
Patch already-loaded modules during initialization
| Key | Package |
|---|---|
OpenAI, openAI, or openai | openai |
Anthropic or anthropic | @anthropic-ai/sdk |
claudeAgentSDK or claudeAgentSdk | @anthropic-ai/claude-agent-sdk query export |
Patch Modules After Initialization
UseObserve.patch() when the SDK has already initialized and a module needs to be instrumented later, such as inside a framework-specific module boundary.
Patch modules after initialization
Observe.patch() requires at least one module. It applies supported OpenLLMetry instrumentation and wraps Claude Agent SDK query functions when the module object is writable.
Existing OpenTelemetry Providers
If your application already owns OpenTelemetry setup, useObserve.instrumentations() with your provider instead of calling Observe.initialize() twice.
Reuse an existing OpenTelemetry provider
spanExporter, spanProcessor, or spanProcessors to Observe.initialize().
