Skip to main content
@omnia-voice/tracing streams your Node app’s LLM traffic to Omnia without moving your inference. It contains no instrumentation code of its own: standard OpenTelemetry, curated.

Install

Use

Call once at startup, before constructing any LLM client:
Pure-ESM app? Skip the code entirely: start Node with the loader hook so imports are intercepted before your app runs:
Short-lived scripts should await tracing.shutdown() before exit to flush pending spans; long-running servers can skip it. The register entrypoint flushes automatically when the process exits normally (as of 0.1.3); no code needed.

Configuration

All options can also be passed to setup() directly; explicit options beat env vars.

What gets captured

OpenAI (v4–v7), Anthropic, LangChain, and Gemini (via the Vertex AI SDK) calls: automatically, and only for libraries actually installed. Successful calls, streamed calls (content aggregated across chunks), and failed calls (stored as ERROR trace structure, the most valuable signal there is, and the one status-code dashboards can’t see). Your inference does not move: requests keep going to your current provider; only trace telemetry flows to Omnia.

The eject guarantee

Remove this package and wire the same standard pieces yourself; identical spans, same endpoint, nothing lost:
Already emitting OpenTelemetry (Vercel AI SDK telemetry, an existing OTel setup)? You don’t need this package at all; three env vars point your existing exporter at Omnia. See OTLP trace ingest.

Privacy

Span structure is always stored. Model-call content (prompts/completions) is stored only if your Omnia workspace has request logging enabled, under your retention window, with the same scrubbing and size caps as gateway traffic.

Verify your setup

Proves the key works, confirms traces are actually landing, and names your one next step. A setup that isn’t sending traces fails the check explicitly instead of failing silently.