Self-hosted I/O anti-pattern detector for OpenTelemetry traces with a CI gate and energy + carbon scoring
Been working a lot on this on the side for a few months, it's stable enough now that I wanted to put it in front of people who actually run OpenTelemetry. So it reads the OTel traces your services already emit and flags I/O anti-patterns: N+1 SQL and HTTP, redundant calls, slow queries, excessive fanout, chatty services between services and pool saturation. It works at the protocol/span level, so it doesn't need to know whether you're on Hibernate, EF Core, SQLAlchemy or a bare driver, it just sees the queries they end up sending. Two ways to run it: as a one-shot CI gate on captured traces (exits non-zero past a threshold, emits SARIF so findings land in GitHub/GitLab code scanning), or as a long-running daemon that ingests OTLP and exposes Prometheus metrics, a query API and a self-contained HTML dashboard. Single static binary, no agent to attach to your runtime. It idles around 17 MB and in daemon mode it sustains roughly 1M events/sec at ~190 MB (peaks around 1.8M on the pipeline, benchmarked it on an M4 Pro in Docker). The piece I put the most care into is the energy/carbon scoring partly because while I'm a developer, I came with a personal background in environmental science and didn't want to just slap a green badge on it. Each finding gets an I/O intensity and waste ratio score, and it estimates CO2 per request with the SCI v1.0 / ISO 21031 formula. The default model is directional and I say so plainly: it ships a 2x uncertainty bracket and isn't a wattmeter replacement, so you can wire in measured energy ( Scaphandre RAPL , Kepler eBPF or Redfish ) and live grid intensity from Electricity Maps to tighten it. The methodology doc lists the actual sources instead of waving hands. To be clear about what it isn't: not a full APM, not a profiler, not (yet) an "official" regulatory carbon accounting tool (kinda already in a process with INR these days). If you want a full SaaS experience, Datadog or Sentry already do that. This is the narrow, lightweight bit the