Set one env var and every request becomes an end-to-end trace. Metrics and API docs generate themselves. No annotations, no instrumentation code, no separate agents to run.
Distributed tracing, zero code
Air Pipe emits OpenTelemetry (OTLP) traces for every request, interface, action and lookup, with W3C trace-context propagation. Point it at Jaeger, Grafana Tempo, Honeycomb or Datadog and see the whole call graph.
Spans for each request, action and database call
OTLP/HTTP export to any OpenTelemetry backend
Trace-context propagation across outbound calls
Prometheus metrics, labelled sanely
A /metrics endpoint is exposed automatically, labelled per interface and action — so you get request rates, latencies and error counts without cardinality blow-ups from IDs in paths. Emit your own business metrics from config too.
OpenAPI & Swagger, generated from config
Set docs: true and Air Pipe renders an OpenAPI 3.0 spec and Swagger UI from your assertions and metadata. Your docs can't drift from your API because they're generated from the same config.
Frequently asked questions
How do I enable OpenAPI docs? Set docs: true on the config. Air Pipe generates an OpenAPI 3.0 spec and Swagger UI from your interfaces, assertions and metadata — there are no annotations to write and the docs can't drift from the API, because both come from the same config.
Are traces automatic? Yes. Air Pipe emits OpenTelemetry traces for every request, interface, action and lookup, with W3C trace-context propagation, once you point it at an OTLP endpoint. You don't add instrumentation code.
Which observability backends work? Any OpenTelemetry-compatible backend via OTLP/HTTP — Jaeger, Grafana Tempo, Honeycomb and Datadog among them — and any Prometheus-compatible scraper for the metrics endpoint.
Do I need a separate agent or collector? No. Export is built into the runtime, so there's no sidecar or collector to deploy alongside it — though you can send to a collector if your stack already has one.