All major code editors supported

Production-grade OTelinstrumentation, automatically.

Analyzes your codebase and auto-generates production-grade OpenTelemetry
instrumentation
without you writing a single line of code.
Works in VS Code, Cursor, Windsurf, and more.
Analyzes your codebase and auto-generates OTel instrumentation — without you writing a single line of code.

Scroll
PythonDjango · Flask · FastAPI
JavaScriptExpress · Fastify · NestJS
TypeScriptExpress · Fastify · NestJS
RustActix-web · Axum
PythonDjango · Flask · FastAPI
JavaScriptExpress · Fastify · NestJS
TypeScriptExpress · Fastify · NestJS
RustActix-web · Axum
PythonDjango · Flask · FastAPI
JavaScriptExpress · Fastify · NestJS
TypeScriptExpress · Fastify · NestJS
RustActix-web · Axum
The instrumentation problem

Getting OTel right is harder
than it should be.

The spec is complex. The imports are endless. Skip it and prod is a black box. There's a better way.

Doing it manually
app.py~2 days per service
from opentelemetry import trace
from opentelemetry.sdk.trace import ...
# ...47 more imports to figure out

tracer = trace.get_tracer("my-service")

def process_payment(data):
  with tracer.start_as_current_span(
    "process_payment") as span:
    span.set_attribute("payment.id", ...)
    # ...134 more functions to go
// Result
2 days of work. ~40% coverage.
Wrong conventions.
Otex
Command Palette~10 minutes
otex: Full Instrumentation

// AI analyzes codebase + framework...
// Generates contextual spans...

✓ tracing generated — 134 spans

~ logging — coming soon
~ metrics — coming soon

// Files backed up. Diff ready to review.
// Result
134 spans. 100% coverage. ~10 minutes.
Correct conventions.
The obvious question

Spec-driven.
Not vibes-driven.

LLMs write spans that compile. Otex writes spans that are correct — sourced from the OTel semantic conventions spec, every time.

VS CodeCursorWindsurfVSCodiumOpen VSX
Your code gen tool Otex
AI Code Gen
Otex
Attribute names
INVENTED

Plausible-sounding but wrong — db.query instead of db.statement. Breaks grouping and alerting in prod.

SPEC-EXACT

Every key from the OTel semantic conventions spec. db.system, http.request.method. Always correct.

Coverage
PROMPT-SCOPED

Only instruments what you described. HTTP calls in utilities, DB queries in helpers — all invisible.

FULL AST

Parses your entire codebase. Finds every HTTP call, DB op, and file I/O across every file and framework boundary.

Consistency
NON-DETERMINISTIC

Run it twice, get different span names and structure. Unpredictable output by design.

DETERMINISTIC

Same codebase, same output every time. Spec-driven means predictable, reviewable, safe to ship.

How it works

Four steps.
Fully instrumented.

From zero coverage to production-grade OTel — without you writing a single line of instrumentation code.

01Analyze
02Plan
03Instrument
04Commit
01Analyze
Analyze
02Plan
Plan
03Instrument
Instrument
04Commit
Commit
Built for production

Instrumented safely.
You stay in control.

Guardrails, coverage visibility, and spec-correct semantics — built in, not bolted on.

Instrumentation only. Nothing else.
Otex operates inside strict guardrails. It adds spans, imports, and OTel setup — and nothing else. Your business logic, error handling, and unrelated files are completely untouched.
Zero scope creep
Run output
$ otex: Instrument
src/routes/users.ts— span added
src/db/queries.ts— span added
src/utils/auth.ts— out of scope
2 files changed · 0 unrelated edits
Continuous coverage monitoring
Always-on visibility into what's instrumented and what isn't. No manual audits — gaps surface automatically as your codebase grows.
Always current
OTel semantics, fully handled
Every attribute name sourced directly from the OTel semantic conventions spec. db.system, http.request.method, rpc.service — correct every time.
Spec-driven
Language support

Works with your stack,
out of the box.

Framework-aware instrumentation for the languages you already use — not generic boilerplate.

Python
Django · Flask · FastAPI
JavaScript
Express · Fastify · NestJS
TypeScript
Express · Fastify · NestJS
Rust
Actix-web · Axum

More languages on the way — Go, Java, Ruby, and others are in progress.

From zero to fully observable

Full observability,
without the toil.

Free extension. Bring your Anthropic API key.
Works with Parseable and any OTLP collector.