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.

Start free Configure a forwarder →
HOW IT WORKS

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.

1

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.

2

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.

3

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.

DESTINATIONS

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.

endpoint: https://in.logs.betterstack.com
header:   Authorization: Bearer ***
Get a free account →

Logfire (Pydantic)

Free tier · generous monthly span budget

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

endpoint: https://logfire-api.pydantic.dev
header:   Authorization: Bearer pylf_v1_***
Get a free account →

Honeycomb

Free tier · 20M events / month

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

endpoint: https://api.honeycomb.io
header:   x-honeycomb-team: hcaik_***
Get a free account →

Axiom

Free tier · 500 GB / month

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

endpoint: https://api.axiom.co
header:   Authorization: Bearer xaat-***
Get a free account →

Grafana Cloud

Free tier · 50 GB traces / month

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

endpoint: https://otlp-gateway-prod-us-central-0.grafana.net/otlp
header:   Authorization: Basic ***
Get a free account →

Advanced OTLP

Any OTLP receiver

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

endpoint: https://<your-receiver>/v1/traces
header:   <your-auth-header>: <value>
Configure →
WHAT WE EMIT

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.

# 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 (asyncpg auto-instrumented)
    asyncpg.query SELECT users / api_keys                3ms
    asyncpg.query INSERT credit_events                   2ms

  # Nine parallel components (manual spans in app/aeo_audit.py)
    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
EVERY RESPONSE

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 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:             cloudflare
x-cascade-path:          qbrowser,cloudflare
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 — qbrowser, cloudflare, hyperbrowser, spider, brightdata, direct — 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.

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.

Start free Browse the API