Skip to main content
OpenLIT uses OpenTelemetry Auto-Instrumentation to monitor applications that call TypeSafe Jev through the official SDKs. This includes tracking latency, token usage, cost, and the questions sent to System One. Auto-instrumentation means you don’t have to set up monitoring manually. Add OpenLIT to the application and TypeSafe system_one / systemOne calls emit decision spans. The integration is compatible with:
  • TypeSafe Python SDK typesafe-sdk >= 0.6.0
  • TypeSafe TypeScript/JavaScript SDK @typesafe-ai/sdk >= 0.6.0
OpenLIT wraps the native System One API (TypeSafeClient.system_one in Python and TypeSafeClient.systemOne in TypeScript). Vercel AI Gateway experimental_evaluate is not instrumented in this release; that path can be added when AI SDK evaluate is stable.

Get started

1

Install OpenLIT

Open your command line or terminal and run:
2

Initialize OpenLIT in your Application

Perfect for existing applications - no code modifications needed:
Perfect for: Legacy applications, production systems where code changes need approval, quick testing, or when you want to add observability without touching existing code.
Replace: YOUR_OTEL_ENDPOINT with the URL of your OpenTelemetry backend, such as http://127.0.0.1:4318 if you are using OpenLIT and a local OTel Collector.To send metrics and traces to other Observability tools, refer to the supported destinations.For more advanced configurations and application use cases, visit the OpenLIT Python repository or OpenLIT Typescript repository.

What is captured

Each System One call creates a CLIENT span named decision {model} (for example decision jev-1.13.0). That follows the OpenTelemetry GenAI span-name format {gen_ai.operation.name} {gen_ai.request.model}. The operation is decision rather than chat so Jev traces are not auto-evaluated as chat completions. Provider is gen_ai.provider.name=typesafe. Shared inference attributes match OpenAI chat spans where they apply. Sampling knobs such as temperature are omitted because System One has no such request fields. Instrumentor aliases: typesafe, jev, typesafe-ai, typesafe_sdk. Set TYPESAFE_API_KEY in the environment. Filter traces on span name decision jev-1.13.0 (or decision jev-latest).

Example

Call openlit.init() once. Keep using the official TypeSafe client. No extra OpenTelemetry setup in application code.
AsyncTypeSafeClient.system_one is instrumented the same way in Python.

Configuration

By default OpenLIT records metadata, usage, and cost but not the content of your System One calls. Enable capture_message_content (captureMessageContent in TypeScript) to include the state and questions on the span, for example while debugging. Leave it off if your inputs contain sensitive data.
You can also set OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=true. See SDK configuration for every option.

Use Jev as an OpenLIT judge

TypeSafe Jev is also an evaluation provider in the OpenLIT UI. Select TypeSafe and a Jev model under Evaluations → Configuration, store the API key in Vault, and keep your existing evaluation types. Issue types map to noul; quality types map to score. See Evaluators. Jev is not available in Chat or OpenGround.
Evaluation configuration with the TypeSafe provider, the Jev 1.13.0 model, and a Vault API key selected
Pin jev-1.13.0 when a verdict threshold depends on a model version. jev-latest moves when TypeSafe ships a release.

Quickstart: LLM Observability

Production-ready AI monitoring setup in 2 simple steps with zero code changes

Configuration

Configure the OpenLIT SDK according to your requirements.

Evaluators

Use TypeSafe Jev as the in-product evaluation judge

Destinations

Send telemetry to Datadog, Grafana, New Relic, and other observability stacks