Skip to main content
omnia-tracing streams your Python 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:
Short-lived scripts should call tracing.shutdown() before exit to flush pending spans; long-running servers can skip it.

Configuration

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

What gets captured

OpenAI, Anthropic, Gemini, and LangChain calls: automatically, and only for libraries actually installed (the instrumented list tells you exactly which). Successful calls, streamed calls, 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 (Pydantic AI, 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.