Skip to main content
MeshAI accepts standard OTLP/HTTP JSON exports. Point any OpenTelemetry-instrumented agent at MeshAI and it will auto-discover agents, extract token usage, and populate the registry automatically.

Endpoints

Both require an API key with the telemetry:write scope.

Quick Setup

Set the standard OpenTelemetry environment variable to point at MeshAI:
That’s it. Any OTLP-compatible SDK or agent will now export traces to MeshAI.
The ingest endpoint accepts OTLP protobuf (application/x-protobuf, the stock OTLP SDK default), OTLP JSON, and gzip-compressed bodies (Content-Encoding: gzip). Set OTEL_EXPORTER_OTLP_PROTOCOL=http/json only if you need to force JSON. OTEL_SERVICE_NAME sets the service.name attribute MeshAI uses to name your auto-discovered agent. If you use a real OpenTelemetry SDK and leave it unset, the SDK itself injects a default of unknown_service:<language> (for example unknown_service:python). If your OTLP payload omits the service.name resource attribute entirely, such as from a hand-rolled emitter that doesn’t use an OTel SDK, MeshAI falls back to naming the agent unknown-agent.

What Gets Extracted

When MeshAI receives trace data, it automatically:
  1. Discovers agents from the service.name resource attribute (set via OTEL_SERVICE_NAME or your SDK’s Resource). Each distinct service.name becomes its own agent in the registry. On the free tier only one agent is admitted: the first service.name claims the single free slot and spans from any other service.name are dropped until you upgrade, so emit under one service.name on the free tier and split into per-service agents once on a paid plan
  2. Extracts token usage from gen_ai.usage.input_tokens and gen_ai.usage.output_tokens attributes
  3. Records model info from gen_ai.request.model and gen_ai.system attributes
  4. Registers new agents in your registry if they don’t already exist

Python Example

Using the OpenTelemetry Python SDK:

Node.js Example

Framework Integration

Most agent frameworks support OpenTelemetry natively or via plugins: Set the environment variables above and these frameworks will export traces to MeshAI automatically.

Response Format

A 200 is returned even when accepted_spans is 0. accepted_spans counts only spans that carry gen_ai.usage.input_tokens/output_tokens, so a span with no token usage is admitted (its agent is registered and appears in agents_discovered) but records nothing. If you see accepted_spans: 0 with agents_discovered of 1 or more, your agent is connected but the span carried no token usage: add the gen_ai.usage.* attributes to record cost and usage. accepted_spans: 0 with agents_discovered: 0 means the batch was dropped, usually the free-tier single-agent slot being held by a different service.name.

Metrics (Preview)

The metrics endpoint (/api/v1/ingest/v1/metrics) accepts OTLP metric exports and acknowledges them. Metrics-based anomaly detection is coming in Phase 2.