After nearly three decades in IT and 8 years running Doolta, I’ve spent too many nights manualy diagnosing API failures. Today, I’m officially moving my internal tool to a Public Beta.
mAPI-ng is now live at mapi-ng.com
What’s new in this version:
Automated Root-Cause: Ranks likely causes of spikes (GC pressure, IO bottlenecks) using Go runtime signals.
MIT Everything: Relicensed the entire stack to MIT (Server, Client, Proto) to ensure zero lock-in.
One-Command Setup: make local to see it in action on your machine.
I’m looking for the first 100 Gophers to stress-test the diagnosis engine. If you’ve ever been frustrated by the ‘Observability Tax’ of OTel + Grafana, this is for you."
The thing that made the biggest practical difference for us (Python/FastAPI, not Go, but same underlying problem) wasn't a fancier diagnosis layer — it was making sure every log line across every service (API, background workers, and the orchestration layer) carried the same request ID, so we could grep one ID and see a failing request's entire lifecycle end to end. Structured JSON logs plus that one shared correlation ID answered 80% of what we used to need a full dashboard for.
Where an automated root-cause layer like yours could earn its slot: if it takes that same request ID and immediately says "this failed because of GC pressure at 14:32, correlated with these 3 other requests" instead of me eyeballing timelines myself — that's a real time save, not just another dashboard. I'd be more hesitant about something that replaces the correlation-ID habit than something that consumes it and adds the "why" on top.
The ranking engine is the whole product, and the part I'd hammer on first. A GC pause that lines up with a latency spike doesn't mean GC caused the spike. Half the time both are downstream of the same traffic surge, and a correlation display dressed up as root-cause will blame GC every time it sees a pause. So the question I'd want answered: how does it tell "GC caused this" apart from "GC and the spike are both symptoms of something upstream"? That's the line between a tool I trust at 3am and one I double-check every time.
Separate note on the OTel tax angle. The people most burned by OTel + Grafana are usually the ones most dug into it, so "rip it out" means fighting sunk cost. "Point this at a Go service mid-incident, get an answer, no pipeline to stand up" is a much easier yes. The post leans on the first framing but
make localsounds like the second. Worth picking which one you're selling.The strongest part isn’t “simpler monitoring”, it’s falsifiable diagnosis. Ranking likely causes and showing what would rule each one out turns observability from another wall of data into an actual decision tool.
The hard part will be earning trust during a real incident. I’d publish a benchmark using known failures, GC pressure, downstream latency, pool exhaustion, overload, and a bad deployment, and show how often the correct cause ranks first, how quickly it appears, and the false-positive rate.
That evidence could be the difference between an impressive demo and something engineers are willing to rely on in production.
Even better: having that proof come straight from beta testers.
This hits a real pain point.
A lot of teams invest heavily in observability stacks, but still end up manually digging through logs and metrics to figure out what actually broke.
The “automated root-cause” angle is interesting because that’s where most of the time is lost — not collecting data, but interpreting it.
Curious how you’re thinking about accuracy vs. noise. Root cause suggestions are super valuable, but only if engineers trust them enough to act on them.
Also like the MIT approach — removing lock-in is a strong signal for adoption, especially for infra tools.
Automated root-cause ranking on GC pressure/IO bottlenecks is a real time-saver over manually correlating dashboards. Relicensing everything to MIT after 8 years running it as internal-only is a notable move too what tipped the decision toward open-sourcing now rather than keeping it proprietary?
Actually, it wasn’t even about keeping a ‘secret’ advantage. It was more about these two practical shifts:
Convenience vs Lock-in: I realized that in the modern dev world, nobody wants to risk their observability on a closed-source black box. By open-sourcing the full stack, I’m telling my users: ‘You can trust the code, and if you ever want to leave my Cloud version, you just have to self-host the same MIT code on your own ClickHouse.’ It’s a bet on convenience, not lock-in.
The Community Feedback Loop: As a solo founder, I can only see so many edge cases. Open-sourcing it allows me to get feedback from Gophers running architectures I’ve never encountered. It makes the diagnosis engine smarter for everyone.
Basically, I’m not selling the code; I’m selling the ‘Zero-Ops’ peace of mind for those who don’t want to manage a ClickHouse/Postgres stack themselves.
That makes a lot of sense. The “selling peace of mind instead of the code” angle is interesting especially because open source often shifts the problem from trust in the product to trust in the person maintaining it.
I’m curious, as a solo founder, what part of running this has ended up being the biggest time sink outside the actual engineering? Community, support, docs, marketing, infrastructure, or something else?
Adjusting the positioning: figuring out what users actually need so I can align their needs with my own.
That’s probably the hardest problem because it’s not something you can brute-force with more engineering. You can build features indefinitely, but if the positioning is off, users end up valuing something completely different from what you expected.
Has anything surprised you so far where you thought one capability would be the main selling point, but users consistently cared about something else instead?
Congrats on the beta launch. I’m curious—what’s the biggest root cause your tool has detected so far in real-world Go APIs?
The strongest part of mAPI-ng is not collecting more telemetry — it is reducing the time from "something broke" to "we know why."
What would convince you that engineers will adopt a root-cause diagnosis layer instead of continuing to rely on existing observability stacks?
That is exactly what I am trying to validate. I am not yet convinced that engineers will adopt it.
My current hypothesis is that they will only do so if the diagnosis layer:
Works with their existing observability stack rather than replacing it
Requires very little configuration
Produces a useful root-cause hypothesis within minutes
Explains the evidence behind its conclusion rather than acting as a black box
The real proof would be engineers repeatedly using it during actual incidents and measuring a meaningful reduction in time-to-root-cause.
So the key question for me is not “Do engineers want better diagnosis?” but “Is the improvement large enough to justify adding another layer to their workflow?”
Appreciate the context.
Would be good to continue the conversation as you learn how engineers respond to this workflow.
What's the best email to reach you on?
This comment was deleted a month ago