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.
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.
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.
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.
Spans show up in your existing observability stack within seconds. If your agent emits a traceparent header, our spans nest under your trace.
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.
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 →
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 →
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 →
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 →
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 →
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 →
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
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
traceparentOur 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-timingWall-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-*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-pathWhich 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-*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 · SunsetWhen 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 on signup. Each free-tier observability vendor takes ~5 minutes to set up. The configure-a-forwarder UI takes ~30 seconds.