Engineering · 2 min read

What actually gets captured — the honest boundary of fetch instrumentation

AtlasBurn auto-captures AI calls by patching global fetch. That's elegant and it covers most stacks — but it has a real edge, and pretending it doesn't just creates support tickets.

By Akhil Anand · September 19, 2026

The AtlasBurn SDK captures your AI usage by monkey-patching globalThis.fetch and matching the request host against a list of known providers. It's a nice design: no wrappers, no per-call code, works across OpenAI, Anthropic, Gemini, and a dozen others the moment you initialize. But "auto" is a promise, and a promise with silent exceptions is worse than an honest boundary. So here's the boundary.

The four conditions

A call is captured only when all four of these hold: it goes through the global fetch, to a recognized host, in the same process where init ran, and init ran first. Break any one and the SDK silently doesn't see it.

The failure mode isn't an error. It's a call that just… doesn't show up. Which is exactly why the boundary has to be documented, not discovered.

Where it slips

  • Non-fetch clients. axios (in Node, uses http/https, not fetch), got, raw http.request, and anything gRPC. That quietly includes AWS Bedrock via the AWS SDK and Vertex via gRPC — the host is on our allowlist, but the call never touches global fetch.
  • A non-global fetch. A library that imports its own node-fetch/undici, or a provider SDK you handed a custom fetch. The patch only touches the global.
  • Timing and runtime. A fetch reference captured before init; the call running in a different runtime (Edge vs Node), a worker, or a process where init never ran.
  • Unrecognized hosts. Ollama, self-hosted vLLM, or an internal gateway whose hostname we don't know.

The fix, and its own edge

For anything the SDK can't patch, the answer is the edge proxy: point the provider's base URL through AtlasBurn and it captures regardless of HTTP client. That covers axios, gRPC, self-hosted — everything. Except the three providers that are host-bound or request-signed — Azure OpenAI, Vertex, and Bedrock — which can't be transparently proxied. So the one genuine gap today is a non-fetch client calling one of those three.

We could have hidden all of this behind "just works." Instead it's in the docs, because the alternative isn't fewer limitations — it's the same limitations plus a user staring at an empty dashboard wondering what they did wrong. An honest boundary is a feature. It tells you exactly where to reach for the proxy, and exactly what to expect when you do.


Try AtlasBurn free