<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: I Jithindranaath</title>
    <description>The latest articles on DEV Community by I Jithindranaath (@zephyr_77).</description>
    <link>https://dev.to/zephyr_77</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4047349%2Ff66bfb1f-4737-4a66-824b-5bd27c369f1e.jpg</url>
      <title>DEV Community: I Jithindranaath</title>
      <link>https://dev.to/zephyr_77</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zephyr_77"/>
    <language>en</language>
    <item>
      <title>AgentATC</title>
      <dc:creator>I Jithindranaath</dc:creator>
      <pubDate>Sat, 25 Jul 2026 22:54:59 +0000</pubDate>
      <link>https://dev.to/zephyr_77/agentatc-93g</link>
      <guid>https://dev.to/zephyr_77/agentatc-93g</guid>
      <description>&lt;p&gt;Track 3: AI &amp;amp; Agent Observability — "Agents of SigNoz" Hackathon (WeMakeDevs × SigNoz, July 2026)&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Every team at a hackathon like this is going to show you an agent that's slow, or an agent that errors.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We're showing you something worse—and far more common.&lt;/li&gt;
&lt;li&gt;A multi-agent system where nothing ever fails.&lt;/li&gt;
&lt;li&gt;No exception. No page. No red dashboard.&lt;/li&gt;
&lt;li&gt;And yet the system is still stuck.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tasks bounce endlessly between an Executor and a Critic. Work is quietly repeated even after it's completed. Sometimes a task simply sits there because no agent picks it up. Meanwhile, LLM tokens continue to burn and costs keep increasing.&lt;/p&gt;

&lt;p&gt;Traditional observability focuses on individual agent calls:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Latency&lt;/li&gt;
&lt;li&gt;Errors&lt;/li&gt;
&lt;li&gt;Cost per call&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It was never built to observe the thing that actually breaks multi-agent systems:&lt;/p&gt;

&lt;p&gt;Coordination between agents.&lt;/p&gt;

&lt;p&gt;A task endlessly bouncing between two agents doesn't look like a failure.&lt;/p&gt;

&lt;p&gt;To most observability tools, everything still looks perfectly healthy.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is AgentATC?
&lt;/h2&gt;

&lt;p&gt;AgentATC is a real (not scripted) three-agent workflow consisting of a Planner, an Executor, and a Critic that collaborates to generate a competitive analysis report.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The workflow is straightforward:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Planner breaks a user's goal into subtasks.&lt;/li&gt;
&lt;li&gt;Executor drafts each section using a search tool and an LLM.&lt;/li&gt;
&lt;li&gt;Critic evaluates every draft against a deterministic rubric.
Rejected work loops back to the Executor with feedback, up to five iterations before escalation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That workflow alone isn't what makes AgentATC interesting.&lt;/p&gt;

&lt;p&gt;What makes it different is that every hand-off between agents becomes a first-class OpenTelemetry span.&lt;/p&gt;

&lt;p&gt;Instead of trying to infer coordination after the fact from timestamps, AgentATC records coordination directly.&lt;/p&gt;

&lt;p&gt;Every span such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;agent.execute&lt;/li&gt;
&lt;li&gt;agent.handoff&lt;/li&gt;
&lt;li&gt;agent.review&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;carries information about:&lt;/p&gt;

&lt;p&gt;Which agent initiated the action&lt;br&gt;
Which agent received it&lt;br&gt;
Why the hand-off happened&lt;/p&gt;

&lt;p&gt;Coordination becomes observable data rather than an invisible gap between API calls.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the Swarm Coordinates
&lt;/h2&gt;

&lt;p&gt;Every task is assigned:&lt;/p&gt;

&lt;p&gt;One task_id&lt;br&gt;
One root span (task.process)&lt;br&gt;
One connected trace throughout the execution&lt;/p&gt;

&lt;p&gt;This architectural decision is what keeps the entire workflow connected.&lt;/p&gt;

&lt;p&gt;Without it, every HTTP request between the Orchestrator, Planner, Executor, and Critic would generate independent traces, fragmenting the execution into unrelated pieces.&lt;/p&gt;

&lt;p&gt;Each subtask runs inside its own nested span while the Executor and Critic iterate until convergence.&lt;/p&gt;

&lt;p&gt;Whenever the Critic rejects a draft,&lt;/p&gt;

&lt;p&gt;agentatc_handoffs_total{reason="reject"}&lt;/p&gt;

&lt;p&gt;is incremented.&lt;/p&gt;

&lt;p&gt;When a task stalls, nothing throws an exception.&lt;/p&gt;

&lt;p&gt;Nothing crashes.&lt;/p&gt;

&lt;p&gt;Instead,&lt;/p&gt;

&lt;p&gt;agentatc_task_last_update_timestamp&lt;/p&gt;

&lt;p&gt;simply stops moving forward, providing the only indication that no agent is making progress anymore.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Successful Execution&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Submit the goal:&lt;/p&gt;

&lt;p&gt;"Write a competitive analysis of three observability vendors: SigNoz, Datadog, and New Relic."&lt;/p&gt;

&lt;p&gt;The Planner creates three subtasks.&lt;/p&gt;

&lt;p&gt;Two of them—&lt;/p&gt;

&lt;p&gt;SigNoz&lt;br&gt;
New Relic&lt;/p&gt;

&lt;p&gt;—converge immediately and pass the Critic on the first review.&lt;/p&gt;

&lt;p&gt;That's the expected path.&lt;/p&gt;

&lt;p&gt;It should look boring.&lt;/p&gt;

&lt;p&gt;Successful coordination shouldn't generate excitement.&lt;/p&gt;

&lt;p&gt;When Things Go Wrong&lt;/p&gt;

&lt;p&gt;The Datadog subtask is intentionally different.&lt;/p&gt;

&lt;p&gt;Its mock search tool can never retrieve pricing information, while the Critic's evaluation rubric requires pricing to approve the draft.&lt;/p&gt;

&lt;p&gt;As a result, the Executor can never satisfy the Critic.&lt;/p&gt;

&lt;p&gt;Every execution guarantees:&lt;/p&gt;

&lt;p&gt;Five review iterations&lt;br&gt;
Five rejections&lt;br&gt;
One escalation&lt;/p&gt;

&lt;p&gt;No randomness.&lt;/p&gt;

&lt;p&gt;No hoping an LLM behaves the same during a live demo.&lt;/p&gt;

&lt;p&gt;Because everything shares one trace ID, opening the trace reveals the entire history as one connected execution, showing every Executor ↔ Critic hand-off across all services.&lt;/p&gt;

&lt;p&gt;Complete Transparency with SigNoz Dashboards and Copilot&lt;/p&gt;

&lt;p&gt;The Swarm Health Overview dashboard tracks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Convergence rate&lt;/li&gt;
&lt;li&gt;Average approval iterations&lt;/li&gt;
&lt;li&gt;In-flight subtasks&lt;/li&gt;
&lt;li&gt;Redundant tool calls&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Thrash Leaderboard ranks subtasks by rejection count.&lt;/p&gt;

&lt;p&gt;Datadog consistently appears at the top, making the coordination failure immediately visible.&lt;/p&gt;

&lt;p&gt;Two production alerts help detect coordination failures early:&lt;/p&gt;

&lt;p&gt;Task Thrashing&lt;br&gt;
Task Stalled&lt;/p&gt;

&lt;p&gt;Both alerts can automatically trigger the Copilot.&lt;/p&gt;

&lt;p&gt;The Copilot uses SigNoz's MCP Server to investigate another agent's failure the way an on-call engineer would.&lt;/p&gt;

&lt;p&gt;It retrieves telemetry using:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;signoz_search_traces&lt;/li&gt;
&lt;li&gt;signoz_get_trace_details&lt;/li&gt;
&lt;li&gt;signoz_search_logs&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Most importantly, it is built to say "No data found" instead of fabricating an answer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;During one escalated execution it concluded:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"The Critic consistently rejected the submissions for the same reason: missing pricing information... this indicates a TOOLING GAP. The executor's data sources do not provide the required pricing information, leading to consistent rejections by the critic."&lt;/p&gt;

&lt;p&gt;That distinction is the entire value proposition.&lt;/p&gt;

&lt;p&gt;Not simply that a task failed five times.&lt;/p&gt;

&lt;p&gt;But why it failed, backed by actual telemetry.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why SigNoz Matters
&lt;/h2&gt;

&lt;p&gt;We didn't bolt dashboards onto the project after the fact.&lt;/p&gt;

&lt;p&gt;Traces, metrics, and logs all flow through SigNoz for real analytical work.&lt;/p&gt;

&lt;p&gt;Coordination metrics are computed directly from raw telemetry in SigNoz's query layer instead of being pre-calculated inside application code.&lt;/p&gt;

&lt;p&gt;While migrating dashboards to the Query Builder, we discovered that one PromQL query grouped results using a label that didn't actually exist.&lt;/p&gt;

&lt;p&gt;The dashboard rendered successfully.&lt;/p&gt;

&lt;p&gt;The data was wrong.&lt;/p&gt;

&lt;p&gt;That wasn't a SigNoz issue.&lt;/p&gt;

&lt;p&gt;It was an instrumentation bug in our own project that only became visible because we validated the dashboards against live telemetry instead of assuming a rendered graph must be correct.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technology Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Backend: FastAPI microservices (Orchestrator, Planner, Executor, Critic, Copilot)&lt;/li&gt;
&lt;li&gt;Frontend: React + Vite&lt;/li&gt;
&lt;li&gt;Observability: OpenTelemetry auto-instrumentation&lt;/li&gt;
&lt;li&gt;Transport: OTLP over gRPC&lt;/li&gt;
&lt;li&gt;Monitoring: Self-hosted SigNoz via Foundry&lt;/li&gt;
&lt;li&gt;Investigation: SigNoz MCP Server&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;p&gt;The failure mode we set out to expose includes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Thrashing&lt;/li&gt;
&lt;li&gt;Stalled tasks&lt;/li&gt;
&lt;li&gt;Redundant work&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These failures produce almost no useful signal in traditional monitoring systems.&lt;/p&gt;

&lt;p&gt;Building the metrics to observe them forced us to think about coordination as telemetry, rather than treating it as a side effect of healthy service calls.&lt;/p&gt;

&lt;p&gt;Going back to validate our dashboards against live data instead of trusting that they rendered correctly also uncovered a genuine instrumentation bug that would otherwise have shipped unnoticed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;We didn't build another AI agent demo.&lt;/p&gt;

&lt;p&gt;We built the instrument panel for the failure mode every multi-agent team is about to discover the hard way.&lt;/p&gt;

&lt;p&gt;The one where:&lt;/p&gt;

&lt;p&gt;Everything looks healthy.&lt;br&gt;
Nothing ever fails.&lt;br&gt;
And the system is stuck anyway.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>monitoring</category>
    </item>
  </channel>
</rss>
