Skip to content

Adapters

autotel-adapters provides easy-to-use ergonomics (withAutotel(), useLogger(), parseError()) while keeping one trace-native stack.

AdapterImport
Honoautotel-adapters/hono
TanStackautotel-tanstack
Next.jsautotel-adapters/next
Nitroautotel-adapters/nitro
Cloudflareautotel-adapters/cloudflare
Customautotel-adapters/core

[!NOTE] For TanStack Start, reach for the autotel-tanstack package: it gives you tracing middleware, server-function and loader wrappers, and context propagation. A lighter autotel-adapters/tanstack subpath also exists, exporting useLogger and a tanstackToolkit bundle for custom glue when you do not want the full integration.

withAutotel() — use when you have NO existing autotel middleware. Creates a span and injects a request logger:

import { withAutotel, useLogger } from 'autotel-adapters/next';
export const POST = withAutotel(async (request) => {
const log = useLogger(request);
log.set({ feature: 'checkout' });
return Response.json({ ok: true });
});

useLogger() alone — use when middleware already creates the span (avoids duplicate spans):

import { otel } from 'autotel-hono';
import { useLogger } from 'autotel-adapters/hono';
app.use('*', otel());
app.get('/orders/:id', (c) => {
const log = useLogger(c);
log.set({ route: c.req.path });
return c.json({ ok: true });
});
import { withAutotel, useLogger, parseError } from 'autotel-adapters/next';
export const POST = withAutotel(async (request: Request) => {
const log = useLogger(request);
log.set({ feature: 'checkout' });
try {
return Response.json({ ok: true });
} catch (error) {
const parsed = parseError(error);
log.set({ error_status: parsed.status, error_why: parsed.why });
throw error;
}
});
import { createUseLogger } from 'autotel-adapters/core';
const useLogger = createUseLogger<{ requestId?: string }>({
adapterName: 'custom-framework',
enrich: (ctx) => ({ request_id: ctx.requestId }),
});
  • example-nextjs — Next.js with autotel-adapters/next and parseError() for client-side error handling.
  • example-nestjs — NestJS with auto-instrumentation and manual trace() in services.
  • example-fastify — Fastify with HTTP and Fastify auto-instrumentation.