OpenTelemetry-native • Bring your own stack

Your AI agent’s web traffic, in the observability tool you already use.

Every API call, every Postgres query, every outbound fetch we make on your behalf is emitted as an OpenTelemetry span. Stream them to Datadog, Better Stack, Logfire, Honeycomb, Axiom, Grafana Cloud, or any OTLP receiver. No new dashboard to learn. We pay zero vendor bills.

Supported native OTLP destinations
Better Stack Logfire Honeycomb Axiom Grafana Cloud Datadog & Custom OTLP
Zero Vendor Lock-In 0ms In-Process Overhead W3C Traceparent Nesting
PIPELINE ARCHITECTURE

Three steps. One trace.

Your agent calls our API. Each call produces a span tree with HTTP, DB, and outbound-fetch detail. The span tree streams to whichever destination you configured. End-to-end visibility, same view your other infrastructure uses.

01 5 presets + raw OTLP

Pick a destination

In your dashboard's Forwarders tab, pick one of five vendor presets (each has a free tier) or paste a raw OTLP endpoint + auth header.

Better Stack Logfire Honeycomb Axiom Grafana Custom OTLP
02 Zero SDK overhead

Make API calls

Every request produces a top-level span with method, status_code, request_id, child spans for each Postgres query and each outbound proxy/render call.

HTTP Root Postgres Auth Credit Ledger Outbound HTTPX
03 Instant telemetry

See it in your tool

Spans show up in your existing observability stack within seconds. If your agent emits a traceparent header, our spans nest under your trace.

< 5s Delivery W3C Nested Full Waterfall Flame Graph
ZERO CONFIGURATION PRESETS

Five vendor presets, plus raw OTLP.

Each preset below has a real free tier. Start there if you don’t have an observability stack yet. Paid tiers (Datadog, New Relic) work too via the Advanced OTLP option.

Better Stack

Free tier · 3 GB / 3 days

Modern, dev-focused. Logs + traces + uptime in one UI. Popular with startups.

FORWARDER SPEC
endpoint: https://in.logs.betterstack.com
header: Authorization: Bearer ***

Logfire (Pydantic)

Free tier · generous monthly span budget

Built by the Pydantic team. Python-first, OTel-pure, friendly UI for trace inspection.

FORWARDER SPEC
endpoint: https://logfire-api.pydantic.dev
header: Authorization: Bearer pylf_v1_***

Honeycomb

Free tier · 20M events / month

Trace-focused, engineering-led teams. Great for "why is this slow today" deep-dives.

FORWARDER SPEC
endpoint: https://api.honeycomb.io
header: x-honeycomb-team: hcaik_***

Axiom

Free tier · 500 GB / month

Cheap, fast log + trace storage. Generous free tier; pay-as-you-go above.

FORWARDER SPEC
endpoint: https://api.axiom.co
header: Authorization: Bearer xaat-***

Grafana Cloud

Free tier · 50 GB traces / month

Open-source-friendly. Loki + Tempo + Prometheus, all OTel-native.

FORWARDER SPEC
endpoint: https://otlp-gateway-prod-us-central-0.grafana.net/otlp
header: Authorization: Basic ***

Advanced OTLP

Any OTLP receiver

Datadog, New Relic, Splunk, AWS CloudWatch, GCP, Azure, self-hosted Tempo/Jaeger. Paste your endpoint + auth header.

FORWARDER SPEC
endpoint: https://<your-receiver>/v1/traces
header: <your-auth-header>: <value>
TELEMETRY WATERFALL

Every call, traced end-to-end.

One example span tree from a real /v1/aeo/page-audit call. Nine parallel probes, each with its own child span, each with timing.

span-tree — POST /v1/aeo/page-audit
Database: 5ms Audit Probes: 2,103ms LLM Simulation: 3,890ms
9 Spans in parallel
# Top-level request span
POST /v1/aeo/page-audit                              4,217ms
  http.method="POST" http.status_code=200
  ollagraph.request_id="678185b6b19243bbb5bc49b55971b9ea"
  ollagraph.user_id=42

  # Auth + credit ledger (database auto-instrumented)
  db.query  auth + API-key lookup                      3ms
  db.query  credit ledger write                        2ms

  # Nine parallel components (manual spans)
  aeo.component.meta_audit                            1,840ms
  aeo.component.schema_coverage                       2,103ms
  aeo.component.citation_readiness                    1,650ms
  aeo.component.ai_bot_allowlist                        412ms
  aeo.component.llm_fetch_simulator                   3,890ms  ← slowest
  aeo.component.redirects                              220ms
  aeo.component.llms_txt_audit                          355ms
  aeo.component.readability                            128ms
  aeo.component.snippet_candidates                     94ms

  # Each component's outbound HTTP fetch (httpx auto-instrumented)
  HTTP GET brd.superproxy.io  status=200          1,612ms
  HTTP GET brd.superproxy.io  status=200          1,503ms
  ... etc
ZERO CONFIGURATION SIGNALS

Standards on every response. No SDK required.

Forward the spans to your stack if you want full traces. Or just read the response headers — nine standards-based signals shipped on every request, zero setup.

Response Headers — HTTP/1.1 200 OK
# Response headers from a real /v1/scrape call
HTTP/1.1 200 OK
content-type:            application/json
x-request-id:            678185b6b19243bbb5bc49b55971b9ea
traceparent:             00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
server-timing:           total;dur=1247
x-credits-cost:          1
x-credits-charged:       1
x-credits-balance:       9824
x-tier-used:             render
x-cascade-path:          direct,render
x-ratelimit-limit:       60
x-ratelimit-remaining:   59
x-ratelimit-reset:       1717610412
RateLimit-Limit:         60            # IETF alias
RateLimit-Remaining:     59
RateLimit-Reset:         1717610412
Cache-Control:           no-store     # auto on authed responses
traceparent
W3C Trace Context

Our server-side OTel trace+span ID, echoed on every response. If your agent sends an inbound traceparent, our spans nest under your trace. If it doesn't, paste the value from this header into your APM's trace search and pull up the full picture.

server-timing
W3C Server-Timing

Wall-clock breakdown for the request. Chrome DevTools -> Network -> Timing renders it natively, no code. Customers grep server-timing in their CDN logs to spot regressions before they trip a synthetic check.

x-credits-*
Ollagraph-specific

Three numbers per response: cost (sticker), charged (what we actually deducted — failures refund), balance (left after this call). Tail these on a noisy crawl instead of polling /v1/me/credits.

x-tier-used · x-cascade-path
Ollagraph-specific

Which fetch tier served the call — direct, render, or residential — plus the full ordered cascade we tried. Grep your logs by tier to see exactly which path your traffic takes.

RateLimit-*
IETF draft-ietf-httpapi-ratelimit-headers

Token-bucket state in the IETF spelling that generic HTTP clients (k6, Bruno, Hey) auto-honour for backoff. We emit both the legacy x-ratelimit-* form and the IETF form on every response.

Deprecation · Sunset
RFC 8594 + IETF deprecation draft

When we schedule a route for removal you'll see machine-readable Deprecation, Sunset (an HTTP-date), and Link (pointing at the successor) on every response from that route — long before we ever ship the removal.

1,000 free credits • No card required

Trace your agent. Today.

1,000 free credits on signup. Each free-tier observability vendor takes ~5 minutes to set up. The configure-a-forwarder UI takes ~30 seconds.

5-minute setup • Zero vendor lock-in • OTLP 1.0 Compliant