We instrumented an AI agent swarm with SigNoz, and its own telemetry told us we were wrong about almost everything A developer team built DevSwarm, an AI agent swarm that turns prompts into full-stack apps using open-weight models, and instrumented it with SigNoz for observability. The telemetry revealed that their assumptions about the system were wrong in six key areas, including misattributing failures to models and providers, and discovering that their review agent was the weakest link. The team found that every insight came from span events, dashboard rows, or benchmarks, not from re-reading code. Built for the WeMakeDevs Agents of SigNoz hackathon, July 2026. Mission Control. The graph is the swarm, the river underneath it is the live span stream, and every bar deep-links into that trace in SigNoz. DevSwarm turns one prompt into a working full-stack app. Five open-weight models plan it, build it, review it and repair their own routing. Nothing it produces is trusted blindly, and every step is an OpenTelemetry span in SigNoz, including the steps that go wrong. We built the observability first, expecting it to prove the thing worked. It did something more useful. It spent a week proving that almost everything we believed about our own system was wrong. We blamed a model for a limit we had set ourselves. We blamed a provider outage on the model. We assumed our review agent was our strongest link when it was measurably the weakest. And we spent days writing a design system that, when we finally measured it, was making the output worse. Not one of those was found by reading the code again. Every single one came off a span event, a dashboard row or a benchmark that disagreed with us. So this is not an architecture post. It is six times the telemetry told us we were wrong, with the queries. The current numbers, all read live out of SigNoz rather than typed into a slide: 22 generations, 188 traced model calls across 8 models, 2.84 million tokens, 225 critic catches, 19 fallback promotions and 24 generated apps each reporting under their own service name. Five roles, each on the open-weight model that measured best for that job: | role | model | job | |---|---|---| | planner | GLM-5.2 | turn a prompt into a typed build plan and a locked API contract | | frontend | GLM-5.2 | one self-contained index.html against that contract | | backend | Qwen3-Coder-480B | one Express server against the same contract | | critic | Kimi-K2.7-Code | review both, gate the merge, route catches back to their owner | | doctor | GLM-5.2 | read the swarm's own traces and repair its model routing | Every number on our own landing page is a live ClickHouse query against the trace store. Marketing copy that drifts from the telemetry is impossible by construction. Everything is served through Hugging Face Inference Providers. There are zero closed-model API calls in the system, which turned out to matter for reasons we did not anticipate see the provider section below . The critic is the load-bearing part. Frontend and backend are generated in parallel from the same contract, then an independent model reviews both for contract conformance, security and runtime bugs. Real catches route back to the agent that owns them, that agent patches its own file and the critic re-reviews only the delta. Two regeneration rounds, then it ships with an honest verdict either way. A multi-agent system fails in ways a single-model tool does not. A call can succeed while producing an unusable artifact. A fallback can rescue a request so smoothly that nobody notices the primary is dead. Latency can triple because one role silently started thinking twice as long. None of that shows up in a request log. So the very first thing that worked in this project was not code generation. It was a trace. SigNoz is self-hosted through Foundry, which is a single-config install. Our casting.yaml and casting.yaml.lock are committed to the repo so the deployment is reproducible by anyone, judges included. Traces. Every model call is a span named llm.