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.

    EvalKit is built by Syntropylabs. Published on PyPI and npm.