Distributed Tracing
Stitch spans across services — frontend to backend, or service to service — into one trace.
EvalKit spans are W3C-compatible: trace IDs and span IDs follow the W3C traceparent spec, so they interoperate with OpenTelemetry collectors and Jaeger. Inbound is read automatically by the web framework middleware; outbound HTTP is instrumented automatically and injects the header for you.
Bridging a browser to your API manually
import * as evalkit from 'syntropylabs-evalkit';
fetch('/api/chat', {
headers: {
'Content-Type': 'application/json',
traceparent: evalkit.getTraceparent(),
},
body: JSON.stringify({ message }),
});On the receiving service, the framework middleware reads the header automatically and creates a child span — so a request that starts in the browser, hits an API gateway, and fans out to two backend services all shows up as one trace in the dashboard.