Skip to main content
Autter Runtime is two credentials and three endpoints; everything else is per-stack sugar. Any language with an OpenTelemetry SDK can send server telemetry — point its OTLP/HTTP exporter at the ingester and add the key as a header.

React / SPA / static sites

With a backend (recommended — relay, no key in the bundle):
Without a backend (publishable client key, origin-restricted):
React render errors: wrap with <AutterErrorBoundary> (from @autter/runtime-next, works in any React app). Vue/Svelte/Angular: call captureException(err) from the framework’s error hook (app.config.errorHandler, handleError, ErrorHandler).

Node.js (Express, Fastify, Koa, NestJS)

Relay for your frontend:
ESM-only apps need OpenTelemetry’s loader hook — see the package README.

Next.js

Three files — instrumentation.ts, a relay route, and a client init + boundary. See the package README.

Go

Rust

Python, Java, .NET, or anything else

Standard OpenTelemetry environment variables work with every SDK:
Errors surface as issues when spans carry exception events (every SDK’s record_exception / RecordError does this) or ERROR status. Warnings (any language): add an autter.severity attribute to the exception event — "fatal" | "error" | "warning" | "info" (default error; the Node SDK’s crash marker autter.unhandled: true implies fatal). Warnings share the errors table with a severity column, so they group and aggregate identically:

Sampling guidance (all stacks)

Errors are always worth sending; keep successful-trace sampling at ~1% (OTEL_TRACES_SAMPLER_ARG=0.01). Request/usage metrics are derived server-side from spans and the http.server.duration histogram — no extra setup.

No @autter/* package for your language?

Send telemetry with just an OpenTelemetry SDK, a Collector, or a hand-rolled HTTP request.