Built on OpenTelemetry.

No SDK to install, no proprietary instrumentation, nothing to rip out later. If your agent emits OTel spans, TwoTail can analyze them today.

Two ways to connect.

Pick the path that matches where you are. Both end at the same place: your traces streaming into TwoTail.

Recommended · ~10 min

Set up with your coding agent

Copy one prompt into Claude Code or Cursor. Your agent wires up tracing end to end: trace structure, sessions, token counts, evals. You review the diff before anything ships.

prompt
Add TwoTail tracing to this agent. TwoTail accepts standard OpenTelemetry spans, no custom conventions required. ## Configuration ...
Get the full prompt →
Already emitting OTel

Send OTLP directly

Running OpenTelemetry instrumentation or a Collector? Point it at the ingest endpoint with your API key in one header. OTLP/JSON in, analytics out.

request
POST https://www.twotail.ai/api/v1/traces X-API-Key: tt_live_… Content-Type: application/json
Read the ingest reference →

on the roadmap: bespoke connectors for Langfuse forwarding and n8n

Works with your stack.

These frameworks can emit OpenTelemetry through their instrumentation. TwoTail reads their conventions out of the box.

LangChain

Instrument with any of LangChain's OpenTelemetry integrations. TwoTail reads the gen_ai.* conventions they emit: models, prompts, completions, token counts.

Attribute conventions →

LlamaIndex

Traces arriving via OpenInference instrumentation decode cleanly. TwoTail parses input and output messages and invocation parameters, and marks retrieval steps.

Attribute conventions →

CrewAI

Crew, task, and agent spans arrive as standard OTel. LLM calls carrying gen_ai.* attributes and tool calls carrying tool.name are typed automatically.

Span typing →

OpenAI Agents SDK

Runs, handoffs, and tool calls trace via OTel. TwoTail types spans from gen_ai.* and tool.* attributes and attributes cost to the exact LLM call that spent it.

Cost attribution →

Claude Agent SDK

Agent runs and subagent spans group into sessions when they share a gen_ai.conversation.id, one trace per turn across a whole conversation.

Sessions →

Vercel AI SDK

Native ai.* telemetry decodes out of the box: prompts, tool calls, responses, and token usage, including cached input tokens.

Attribute conventions →

Custom agents, or anything else

Any process that can POST OTLP/JSON can trace to TwoTail, directly or through an OpenTelemetry Collector. Attributes TwoTail doesn't recognize are preserved and stay queryable.

Endpoint contract →

Running something we haven't covered? Tell us and we'll take a look.

Connection questions, answered.

The short version: if it can emit OpenTelemetry, it can reach TwoTail.

Book a demo

No. TwoTail ingests standard OpenTelemetry, so there is nothing to install and nothing proprietary in your codebase. Your instrumentation stays useful with or without TwoTail.

One endpoint: POST https://www.twotail.ai/api/v1/traces, authenticated with an X-API-Key header. Payloads are standard OTLP/JSON, up to 1,000 spans per request.

The endpoint accepts OTLP/JSON. If your OTel SDK exports protobuf, route it through an OpenTelemetry Collector with JSON encoding, or let your coding agent construct the spans directly.

In the app, under API Keys. Keys start with tt_live_ and the full key is shown once, at creation. Creating and revoking keys requires an owner, admin, or developer role.

Yes. Most teams run TwoTail alongside their trace viewer: same OTel feed, different job. A bespoke Langfuse connector is on the roadmap.

You control payload content at the source. The integration supports three privacy modes (complete, redacted, and call-only), signaled per span with gen_ai.privacy and tool.privacy attributes. Data is stored in isolated Postgres with row-level security, encrypted in transit.

Your traces already speak the language.

Setup in 10 minutes. First insights within a week.