OTLP-native ingest
Standard gen_ai spans over OTLP/HTTP; JSON and protobuf accepted.
An OpenTelemetry-native trace explorer for agents. Instrument in a few lines, send spans over OTLP, and explore every run, replay, and cost.
OpenTelemetry-native · gen_ai spans over OTLP (JSON + protobuf) · self-host on plain Postgres.
$ npm install @usetheo/lens-sdkcoming to npmAI agents fail in ways plain logs can’t explain — which tool ran, what the model cost, why a session went sideways. Theo Traces treats every agent run as an OpenTelemetry trace: your agent emits standard gen_ai spans over OTLP, and one docker compose up gives you the API, Postgres, and a Trace Explorer to walk the span tree, replay the session, and read cost and tool breakdowns.
Standard gen_ai spans over OTLP/HTTP; JSON and protobuf accepted.
docker compose up starts API, Postgres, and UI on one port.
Every execution as a waterfall of agent and tool-call spans.
Step through a run’s session replay in the Explorer.
Reads gen_ai.usage tokens into typed columns for cost analytics.
Map an external agent onto typed fields with one service.name adapter.
import { initTheoLens, startAgent, recordToolCall } from '@usetheo/lens-sdk';
const theo = initTheoLens({ endpoint: 'http://localhost:4318', serviceName: 'checkout-agent' });
await startAgent(theo.tracer, 'checkout', async (span) => {
span.setModel('gpt-4o').setProvider('openai').setUsage({ inputTokens: 12, outputTokens: 8 });
recordToolCall(span, 'search-products', { query: 'running shoes' });
});
await theo.shutdown(); // flush buffered spans before exitInstrument an agent in a handful of lines with the SDK helpers.
OpenTelemetry is the neutral standard for traces, and the gen_ai conventions give agent spans a shared vocabulary. Comparison stated at a general level, public docs mid-2026.
| Capability | Theo Traces | LangSmith | Langfuse | Phoenix / OTel |
|---|---|---|---|---|
| Ingestion | OTLP-native gen_ai (JSON + protobuf) | SDK-proprietary | SDK / OTel-partial | OTel |
| License | Apache-2.0 | Proprietary | OSS + SaaS | OSS |
| Deploy | One docker compose up, single port | Managed SaaS | Self-host / SaaS | Self-host |
| Storage | Plain Postgres (spans = truth) | Proprietary | Postgres | Varies |
| Agent onboarding | One service.name adapter | SDK | SDK | Manual |
OpenTelemetry-native from the ground up, self-hosted on plain Postgres — instrumenting an agent means emitting spans everyone already understands, not adopting one more proprietary SDK.
Agents are moving into production faster than the tooling to see inside them. Theo Traces builds directly on the OpenTelemetry gen_ai standard instead of one more proprietary SDK.
$ npm install @usetheo/lens-sdkcoming to npmRead the docs → docs.usetheo.dev
View the source → github.com/usetheodev/theo-lens