Skip to main content
Everything downstream (grading, judges, comparisons, training) runs on captured traffic. Capture is the only integration step there is, and there are four paths in, sized to what your codebase already does. Whichever path you take, the result is identical: your traffic lands as a gradeable population you can grade, calibrate a judge against, and run comparisons on.

Choose a path

The Gateway and BYOK paths put Omnia in the request path, so you also get caching, fallbacks, and per-request observability. The OpenTelemetry and Tracing SDK paths are telemetry only: your inference keeps going exactly where it goes today, and only trace data flows to Omnia. BYOK, OpenTelemetry, and the Tracing SDK all capture traffic before a single inference decision changes.
Whichever path you take, model-call content (prompts and completions) is stored only if your workspace has request logging enabled, under your retention window, with the same scrubbing and size caps everywhere. Span and request structure is kept either way.

Set up with a coding agent

Omnia publishes one canonical setup prompt that Claude Code, Cursor, or any coding agent with repository access can follow end to end: it inspects your repo, picks the right integration path, makes the edits, and verifies the result:
See Set up with your coding agent.

Verify

The same check for every path:
It proves the key works, confirms traffic is landing, and names your one next step. An integration that isn’t sending traffic fails the check explicitly instead of failing silently.

Start from a log export

You can run your first comparison from a JSONL export of the traffic you already have, without integrating anything: see Import logs.