<?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: Leego</title>
    <description>The latest articles on DEV Community by Leego (@vibamanager).</description>
    <link>https://dev.to/vibamanager</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%2F3776857%2F6acbd38e-331f-4cc1-b731-71c622703d46.png</url>
      <title>DEV Community: Leego</title>
      <link>https://dev.to/vibamanager</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vibamanager"/>
    <language>en</language>
    <item>
      <title>Multi-Agent AI Orchestration in Practice: Splitting a Coding Task with VIBA</title>
      <dc:creator>Leego</dc:creator>
      <pubDate>Wed, 11 Nov 2026 23:57:18 +0000</pubDate>
      <link>https://dev.to/vibamanager/multi-agent-ai-orchestration-in-practice-splitting-a-coding-task-with-viba-2h5h</link>
      <guid>https://dev.to/vibamanager/multi-agent-ai-orchestration-in-practice-splitting-a-coding-task-with-viba-2h5h</guid>
      <description>&lt;p&gt;In modern development workflows, a single AI model often struggles to handle the full scope of a complex coding task. A feature implementation might require code generation, unit test creation, documentation drafting, and security review—each with different strengths and failure modes. VIBA (Collaborative Multi-Agent AI Orchestration) addresses this by letting you run several LLMs in one shared session, assign each a specific role, and maintain full control over the process. This approach turns a monolithic prompt into a coordinated team of specialized agents that can hand off work, validate outputs, and ensure quality before final delivery.&lt;/p&gt;

&lt;p&gt;The core idea is to decompose a coding task into discrete sub-tasks, route each to the most appropriate agent, and insert human approval checkpoints where needed. This pattern is especially valuable when different models excel at different capabilities. For example, a model specialized in code generation might draft the implementation, while another focused on testing verifies correctness. A third agent could review documentation for consistency, and a fourth might check for potential security issues. The orchestration layer ensures that each agent receives the right context, and you can monitor cost per agent in real time to make informed engineering decisions.&lt;/p&gt;

&lt;p&gt;Consider a task like refactoring a module to improve test coverage. Imagine you need to extract a utility function, add a new test case, and update the module's docstring. With VIBA, you would set up three agents: an Agent-Planner to outline the refactoring strategy, an Agent-Coder to write the implementation, an Agent-Test to generate the test, and a human approver to review the results. The workflow begins by creating a shared session where all agents can access the repository state. The Agent-Planner proposes a breakdown of the task. The Agent-Coder begins implementation, then pauses to wait for the Agent-Test to validate the changes. Only after the test results are satisfactory does the Agent-Test approve the code, and the human approver performs a final review before merging.&lt;/p&gt;

&lt;p&gt;The configuration is straightforward but powerful. You define agent roles, assign each a specific function, and set approval thresholds. The UI provides cost per agent visibility, which helps teams understand the engineering budget for complex tasks. For example, if you are running four agents simultaneously on a small task, you can compare their individual costs and decide whether to consolidate or add more specialized agents. This transparency turns what might be a guessed shared-bill into an explicit engineering decision.&lt;/p&gt;

&lt;p&gt;Human oversight is not just about safety—it is also about cost management. Different agents may have varying performance characteristics, and running the wrong model for a task can waste compute. VIBA's per-agent cost metrics allow you to evaluate trade-offs. By approving only key steps, you retain control over the final output while still benefiting from the speed and capability of multiple models. The system also logs interactions, so you can trace why a particular decision was made and replicate successful patterns across projects.&lt;/p&gt;

&lt;p&gt;The workflow example above demonstrates how VIBA can transform a coding task from a single-point failure into a robust, multi-step process. Each agent contributes its strengths—code generation, testing, documentation, and security review—while the human approver ensures alignment with project goals. This pattern scales from small feature additions to larger architecture changes, making it suitable for teams of all sizes.&lt;/p&gt;

&lt;p&gt;To get started, sign up at &lt;a href="https://viba.guru" rel="noopener noreferrer"&gt;https://viba.guru&lt;/a&gt; and explore the demo workflows. Build a shared session, define your agent roles, and set up approval checkpoints at natural boundaries in your task. As your team grows, you can extend the system with additional agents and refine your cost model. The result is a development process that leverages the best of multiple LLMs while keeping human judgment at the center of quality and delivery.&lt;/p&gt;

&lt;p&gt;By treating AI orchestration as a deliberate engineering decision rather than an automatic shortcut, teams can achieve higher quality code with better visibility into costs and risks. The pattern of splitting tasks, assigning specialized agents, and inserting human oversight is repeatable across projects and languages. Experiment with VIBA to see how it fits into your current workflow and discover where multi-agent collaboration can improve your development productivity.&lt;/p&gt;

&lt;h1&gt;
  
  
  multi-agent-AI, #LLM-comparison, #dev-community, #code-workflow
&lt;/h1&gt;

&lt;p&gt;Call to Action: Start building your multi-agent AI workflow today at &lt;a href="https://viba.guru" rel="noopener noreferrer"&gt;https://viba.guru&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See VIBA: &lt;a href="https://viba.guru" rel="noopener noreferrer"&gt;https://viba.guru&lt;/a&gt;&lt;/p&gt;

</description>
      <category>multiagentai</category>
      <category>llmcomparison</category>
      <category>devcommunity</category>
      <category>codeworkflow</category>
    </item>
    <item>
      <title>Running a multi-model coding session in VIBA — roles, generation, and a human approval checkpoint</title>
      <dc:creator>Leego</dc:creator>
      <pubDate>Sun, 08 Nov 2026 01:40:40 +0000</pubDate>
      <link>https://dev.to/vibamanager/running-a-multi-model-coding-session-in-viba-roles-generation-and-a-human-approval-checkpoint-14b2</link>
      <guid>https://dev.to/vibamanager/running-a-multi-model-coding-session-in-viba-roles-generation-and-a-human-approval-checkpoint-14b2</guid>
      <description>&lt;p&gt;VIBA enters the scene as a shared-session platform that lets you run several AI models—ChatGPT, Claude, Gemini, and others—side by side, assign each a role, and keep a human in the loop for key decisions. For teams that want to explore multi-agent AI without committing to a single provider, this approach offers a practical way to compare how different models handle the same coding problem, while retaining oversight at critical junctures.&lt;/p&gt;

&lt;h3&gt;
  
  
  Assigning specialised roles in a single session
&lt;/h3&gt;

&lt;p&gt;A typical coding task can be broken into distinct sub‑problems: understanding the requirements, designing the architecture, writing the implementation, and testing the result. In VIBA, each of these can be handed to a different model, with its own system prompt and role label. One model might act as an architect, another as an implementer, and a third as a reviewer. Because they operate within the same session, their outputs are visible to one another and to you, the human operator, in one consolidated view. This setup makes it straightforward to observe how a ChatGPT‑based agent frames a solution versus how Claude or Gemini approach the same sub‑task, all without leaving the platform.&lt;/p&gt;

&lt;h3&gt;
  
  
  From generation to the approval checkpoint
&lt;/h3&gt;

&lt;p&gt;Once the models produce their initial outputs, the workflow pauses for a human approval step. Imagine you’re adding a new data‑validation layer to an existing service. The architect agent proposes a design, the implementer agent generates a pull‑request‑ready code block, and the reviewer agent drafts a set of test cases. Before anything is merged, you review the combined output, check for edge cases, and either sign off or ask for revisions. This approval checkpoint is where the “human-in-the-loop” aspect becomes concrete: you’re not just passively consuming output, you’re actively deciding what moves forward. The platform records which agent contributed which piece, making the review process traceable and accountable.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cost visibility as a design choice
&lt;/h3&gt;

&lt;p&gt;One of the more practical benefits of VIBA is per‑agent cost tracking. Each model’s usage is logged separately, so you can see, for example, that the Claude‑based reviewer consumed fewer tokens than the Gemini‑based architect for the same class of work. This visibility turns cost from an afterthought into a deliberate design choice: if you notice one model consistently generating verbose scaffolding while another stays concise, you can adjust role assignments or system prompts accordingly. Over a series of tasks, this data helps a small team calibrate their multi-agent AI usage without guesswork.&lt;/p&gt;

&lt;h3&gt;
  
  
  A concrete config snippet
&lt;/h3&gt;

&lt;p&gt;While the exact interface may evolve, a typical VIBA session might start with a configuration that labels each model and maps them to roles. Here’s a hypothetical example of how such a setup could be expressed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;session&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;coding-task-2025-05-20&lt;/span&gt;
&lt;span class="na"&gt;agents&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;architect&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gpt-4o&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;design&lt;/span&gt;
    &lt;span class="na"&gt;system_prompt&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;are&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;senior&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;software&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;architect.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Produce&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;concise&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;design&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;brief&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;for&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;given&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;requirement,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;including&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;data&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;flow,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;component&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;responsibilities,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;potential&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;risk&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;points."&lt;/span&gt;
  &lt;span class="na"&gt;implementer&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;claude-3-5-sonnet&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;code&lt;/span&gt;
    &lt;span class="na"&gt;system_prompt&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;are&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;pragmatic&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;full‑stack&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;developer.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Write&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;production‑ready&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;code&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;snippets&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;that&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;follow&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;design&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;brief,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;adhering&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;to&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;project’s&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;existing&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;style&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;guide&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;avoiding&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;deprecated&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;patterns."&lt;/span&gt;
  &lt;span class="na"&gt;reviewer&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gemini-1.5-pro&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;test&lt;/span&gt;
    &lt;span class="na"&gt;system_prompt&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;You&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;are&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;QA&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;engineer.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Based&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;on&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;implementation,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;generate&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;minimal&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;set&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;of&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;unit&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;tests&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;that&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;cover&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;critical&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;paths&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;edge&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;cases.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Highlight&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;any&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;assumptions&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;you&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;make."&lt;/span&gt;
&lt;span class="na"&gt;human_approval&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, the &lt;code&gt;human_approval&lt;/code&gt; flag signals that no output should be finalized without your sign‑off—a safeguard for teams that can’t afford unchecked auto‑merge behavior.&lt;/p&gt;

&lt;h3&gt;
  
  
  Moving forward
&lt;/h3&gt;

&lt;p&gt;The combination of role‑specific models, a shared session, and an explicit approval step gives developers and small teams a way to harness multi‑agent AI that feels both powerful and controlled. You get the comparative insight of running different LLMs on the same problem, the transparency of seeing who contributed what, and the safety net of a human decision point before anything ships. If you’re curious about how this might look in practice, the platform is set up for exactly that kind of experimentation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://viba.guru" rel="noopener noreferrer"&gt;https://viba.guru&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  multi-agent-ai #llm-comparison #dev-tools #viba
&lt;/h1&gt;

&lt;p&gt;See VIBA: &lt;a href="https://viba.guru" rel="noopener noreferrer"&gt;https://viba.guru&lt;/a&gt;&lt;/p&gt;

</description>
      <category>multiagentai</category>
      <category>llmcomparison</category>
      <category>devtools</category>
      <category>viba</category>
    </item>
    <item>
      <title>Building a Feature with a Multi‑Agent AI Pipeline and a Human Review Step</title>
      <dc:creator>Leego</dc:creator>
      <pubDate>Sat, 07 Nov 2026 13:40:37 +0000</pubDate>
      <link>https://dev.to/vibamanager/building-a-feature-with-a-multi-agent-ai-pipeline-and-a-human-review-step-1a7d</link>
      <guid>https://dev.to/vibamanager/building-a-feature-with-a-multi-agent-ai-pipeline-and-a-human-review-step-1a7d</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;When a single large language model writes an entire feature, the result often looks plausible but hides subtle bugs, mismatched conventions, or security gaps. A more reliable approach is to split the work among several specialised agents — each model handling a narrow slice such as API design, data‑layer implementation, test generation, or documentation — and then insert a human approval gate before the pieces are merged. VIBA provides exactly this orchestration layer: you can spin up a shared session that hosts ChatGPT, Claude, Gemini, and other models, assign each a role, inspect per‑agent cost, and pause for a reviewer at any step. The platform also surfaces UI‑testing results, repository‑level static analysis, beta‑test feedback, and ranked repair reports, giving you a complete evidence trail for every change.&lt;/p&gt;

&lt;h2&gt;
  
  
  Defining the Agent Roles
&lt;/h2&gt;

&lt;p&gt;Imagine a team that needs to add a paginated search endpoint to an existing Node.js service. Instead of prompting one model to produce the whole pull request, you declare a small roster:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;agents&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;architect&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gpt-4o&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Design&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;OpenAPI&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;spec&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;define&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;request/response&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;contracts"&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;implementer&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;claude-3-opus&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Write&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Express&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;route,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;service&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;layer,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;database&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;query"&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;tester&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gemini-1.5-pro&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Generate&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;unit&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;integration&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;tests&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;covering&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;happy&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;path&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;edge&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;cases"&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;reviewer&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gpt-4o&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Produce&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;ranked&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;repair&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;report&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;highlighting&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;security,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;performance,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;style&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;issues"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each entry maps a logical role to a concrete model. Because the session is shared, the architect’s spec is instantly visible to the implementer, and the tester can reference the same contract when writing assertions. The cost column that VIBA surfaces next to each agent lets you decide whether a cheaper model suffices for a given role or whether the higher‑priced option is justified by the risk profile.&lt;/p&gt;

&lt;h2&gt;
  
  
  Human Approval as a Design Decision
&lt;/h2&gt;

&lt;p&gt;The pipeline does not run autonomously from start to finish. After the architect emits the OpenAPI document, VIBA presents it in a diff view and asks the developer to approve or request revisions. This gate serves two purposes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Quality control&lt;/strong&gt; – a human can catch ambiguous parameter names, missing pagination metadata, or versioning inconsistencies before downstream agents consume the spec.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost awareness&lt;/strong&gt; – the approval screen shows the cumulative token spend so far. If the architect’s output already exceeds the budget you allocated for the design phase, you can either trim the spec or swap in a lower‑cost model for the remaining agents.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once approved, the implementer receives the locked spec and begins coding. The same approval pattern repeats after the implementer finishes: the generated route file, service module, and migration script appear side‑by‑side with the original spec, and the reviewer can accept, annotate, or reject. Only after the human sign‑off does the tester agent run, producing a test suite that is automatically executed against a temporary staging environment. The final ranked repair report aggregates static‑analysis findings, test‑coverage gaps, and any UI‑testing regressions, ordered by severity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Observing the Multi‑Agent Feedback Loop
&lt;/h2&gt;

&lt;p&gt;Because every agent writes to the same session, disagreements become visible instantly. For example, the implementer might choose a cursor‑based pagination strategy while the architect’s spec describes offset‑based paging. VIBA highlights the mismatch in the shared timeline, and the reviewer can decide which approach aligns with the product roadmap. This &lt;strong&gt;LLM comparison&lt;/strong&gt; is not a benchmark; it is a practical signal that the team can act on without leaving the tool.&lt;/p&gt;

&lt;p&gt;The ranked repair report adds another dimension. Suppose the tester’s suite passes but the reporter flags a missing index on the search column, a potential N+1 query in the service layer, and a content‑security‑policy header omission in the response. The report ranks these by estimated impact, letting the developer address the highest‑risk items first. When the fixes are applied, the pipeline can be re‑run from the implementer step onward, preserving the earlier approved spec and test artefacts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Extending the Pattern
&lt;/h2&gt;

&lt;p&gt;The same orchestration works for front‑end work, infrastructure as code, or documentation updates. You might add a &lt;strong&gt;designer&lt;/strong&gt; agent that produces Figma‑compatible JSON, a &lt;strong&gt;security&lt;/strong&gt; agent that runs threat‑model checks, or a &lt;strong&gt;release&lt;/strong&gt; agent that drafts changelog entries. Each new role simply becomes another entry in the YAML roster, and the human approval points remain under your control.&lt;/p&gt;

&lt;p&gt;VIBA’s UI‑testing, repo‑testing, and beta‑testing integrations mean that the evidence gathered by each agent is not confined to text. Screenshots, lint results, and real‑user feedback can be attached to the session, giving the reviewer a holistic view before the merge button is pressed.&lt;/p&gt;




&lt;p&gt;Learn more at &lt;a href="https://viba.guru" rel="noopener noreferrer"&gt;https://viba.guru&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See VIBA: &lt;a href="https://viba.guru" rel="noopener noreferrer"&gt;https://viba.guru&lt;/a&gt;&lt;/p&gt;

</description>
      <category>multiagentai</category>
      <category>llmcomparison</category>
      <category>developertools</category>
      <category>viba</category>
    </item>
    <item>
      <title>Human-in-the-Loop Multi-Agent Coding: A Practical Example</title>
      <dc:creator>Leego</dc:creator>
      <pubDate>Wed, 04 Nov 2026 19:03:32 +0000</pubDate>
      <link>https://dev.to/vibamanager/human-in-the-loop-multi-agent-coding-a-practical-example-2pd7</link>
      <guid>https://dev.to/vibamanager/human-in-the-loop-multi-agent-coding-a-practical-example-2pd7</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;When a feature requires more than one perspective—implementation, security, UI validation—splitting the work across specialized agents can keep momentum high while preserving quality. VIBA makes it possible to run several models (ChatGPT, Claude, Gemini and others) in a single session, assign each a role, pause for human approval, and watch cost per agent update in real time. The following walkthrough shows how a small team could tackle a modest logging‑middleware feature using three agents and a single approval checkpoint.&lt;/p&gt;

&lt;h2&gt;
  
  
  Defining the Task and Choosing Agents
&lt;/h2&gt;

&lt;p&gt;The goal is to add request‑ID propagation to an Express API. Three distinct concerns emerge:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Code generation&lt;/strong&gt; – turning the design into production‑ready middleware.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security review&lt;/strong&gt; – ensuring the IDs are not leaked or tampered with.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UI testing&lt;/strong&gt; – confirming that a simple front‑end dashboard displays the IDs correctly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each concern maps to a different model strength. A generative model like GPT‑4 excels at writing idiomatic code, while Claude’s strong reasoning helps spot edge‑case vulnerabilities. Gemini’s multimodal capabilities are useful for interpreting UI mockups and generating test scripts. By assigning each model a dedicated role, the workflow stays organized and the output stays comparable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuring Agents and Approval Steps
&lt;/h2&gt;

&lt;p&gt;VIBA’s configuration lets you declare agents, their models, roles, and whether a step needs explicit approval. Below is a minimal YAML snippet that captures the three agents for the logging feature:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;agents&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;CodeGenerator&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gpt-4&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;implement feature&lt;/span&gt;
    &lt;span class="na"&gt;approval&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;required&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;SecurityReviewer&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;claude-3&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;check auth&lt;/span&gt;
    &lt;span class="na"&gt;approval&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;required&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;UITester&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gemini-pro&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;run ui tests&lt;/span&gt;
    &lt;span class="na"&gt;approval&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;required&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;approval: required&lt;/code&gt; flag inserts a pause after each agent finishes its work. The human reviewer receives a concise summary, the generated artifacts, and a cost estimate for that agent. If the summary looks reasonable, the reviewer clicks “Approve” and the next agent starts. This deliberate hand‑off prevents unexpected side effects and keeps the total spend visible at every stage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Running the Workflow and Reviewing Costs
&lt;/h2&gt;

&lt;p&gt;With the config loaded, the session begins with the CodeGenerator. It outputs a middleware file (&lt;code&gt;requestIdMiddleware.js&lt;/code&gt;) that injects a UUID into each request. VIBA displays a cost line—e.g., “$0.012 for CodeGenerator”—and a “Review” button. The reviewer opens the file, checks style, and confirms it matches the Express version used in the repo.&lt;/p&gt;

&lt;p&gt;Approval triggers the SecurityReviewer. It analyzes the middleware for injection attacks, token exposure, and proper error handling. The reviewer sees a security report, the associated cost, and decides whether to accept, request changes, or reject outright. Because the cost is shown upfront, the team can decide if the security depth justifies the expense.&lt;/p&gt;

&lt;p&gt;The final agent, UITester, runs a headless browser test against a static HTML prototype. It generates a report ranking issues by severity. Again, the cost is displayed before the reviewer finalizes the step. After all three approvals, VIBA aggregates the reports into a single repair checklist, ordered by impact.&lt;/p&gt;

&lt;h2&gt;
  
  
  Iterating with Human Feedback
&lt;/h2&gt;

&lt;p&gt;If any agent’s output fails approval, the workflow loops back to the responsible agent with a concise feedback note. For example, the SecurityReviewer might flag a missing rate‑limit header. The CodeGenerator can regenerate the file with the header added, and the cycle repeats until the human reviewer is satisfied. Because each iteration is isolated, the cost remains transparent, and the team can stop early if the feature meets requirements.&lt;/p&gt;

&lt;p&gt;The entire process—from initial config to final approval—demonstrates how multi‑agent AI can be treated like a coordinated development squad. The human stays in control, the models bring specialized expertise, and the cost per agent is never hidden.&lt;/p&gt;

&lt;p&gt;Explore how VIBA can streamline your own multi‑agent workflows at &lt;a href="https://viba.guru" rel="noopener noreferrer"&gt;https://viba.guru&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;See VIBA: &lt;a href="https://viba.guru" rel="noopener noreferrer"&gt;https://viba.guru&lt;/a&gt;&lt;/p&gt;

</description>
      <category>multiagentai</category>
      <category>llmcomparison</category>
      <category>devworkflow</category>
    </item>
    <item>
      <title>Orchestrating Multiple Models for a Development Task</title>
      <dc:creator>Leego</dc:creator>
      <pubDate>Wed, 04 Nov 2026 19:02:01 +0000</pubDate>
      <link>https://dev.to/vibamanager/orchestrating-multiple-models-for-a-development-task-5h85</link>
      <guid>https://dev.to/vibamanager/orchestrating-multiple-models-for-a-development-task-5h85</guid>
      <description>&lt;p&gt;Developers often juggle multiple large‑language models to get the best result for different parts of a codebase. One model might excel at generating boilerplate, another at explaining edge cases, and a third at testing. The challenge is coordinating these outputs into a single, coherent workflow without spending hours on manual reconciliation. VIBA addresses this by letting you run several AI models in one shared session, assign each a role, and review key steps yourself before anything moves forward. This article walks through a concrete, hypothetical example of splitting a coding task across specialised agents with a human approval step, and highlights how cost visibility fits into the picture.&lt;/p&gt;

&lt;h3&gt;
  
  
  Giving Each Model a Clear Role
&lt;/h3&gt;

&lt;p&gt;In a typical multi‑model setup, the first decision is which model handles which sub‑task. You might send a design prompt to Claude for its strength in structured thinking, forward implementation details to ChatGPT for code generation, and ask Gemini to verify syntax or suggest alternatives. The key is that each model receives a focused prompt rather than a vague “write this feature” request. This not only improves output quality but also makes it easier to compare how different models approach the same problem. VIBA’s shared session means you can see each agent’s reasoning, output, and associated cost side by side, without hopping between separate chats or interfaces.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Hypothetical Feature Split with Approval Steps
&lt;/h3&gt;

&lt;p&gt;Imagine you’re adding a new “dark mode” toggle to a web app. Instead of asking a single model to do it all, you split the work:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Model A (ChatGPT)&lt;/strong&gt; generates the component markup and CSS custom properties for the toggle.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model B (Claude)&lt;/strong&gt; reviews the markup for accessibility concerns and suggests ARIA labels.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model C (Gemini)&lt;/strong&gt; writes a small Jest test suite to verify the toggle switches classes correctly.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After each agent finishes, VIBA pauses the workflow and presents a summary screen to you. You can accept the output, ask the agent to refine a specific part, or reject it outright. Only after your approval does the next agent receive the baton. This human‑in‑the‑loop step ensures that no single model’s blind spot propagates downstream, and it keeps you in control of the final code quality.&lt;/p&gt;

&lt;p&gt;To make this concrete, here’s a minimal VIBA‑style configuration snippet that defines the agent roles and the approval gate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;agents&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;generator&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;chatgpt&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;generate component markup and CSS for dark‑mode toggle&lt;/span&gt;
    &lt;span class="na"&gt;approval&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;required&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;auditor&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;claude&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;check accessibility, suggest ARIA improvements&lt;/span&gt;
    &lt;span class="na"&gt;approval&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;required&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;tester&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gemini&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;write Jest tests for toggle behavior&lt;/span&gt;
    &lt;span class="na"&gt;approval&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;optional&lt;/span&gt;
&lt;span class="na"&gt;workflow&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;generator&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;auditor&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;tester&lt;/span&gt;
&lt;span class="na"&gt;approval_mode&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;sequential&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;approval: required&lt;/code&gt; flag on the first two agents means VIBA will stop and show you the generated markup and the auditor’s suggestions before proceeding. The third agent’s optional approval lets you choose whether to review the tests immediately or trust the model’s output given the prior steps were vetted.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tracking Cost Per Agent, Not Just Output
&lt;/h3&gt;

&lt;p&gt;One of the biggest pain points in multi‑model work is hidden cost. Each model has its own pricing, and without a central view, it’s easy to lose track of what you’re spending. VIBA surfaces a cost breakdown per agent, so you can see at a glance that the generator used 3,000 tokens, the auditor 1,200, and the tester 800. This visibility doesn’t just help with budgeting—it informs future role assignments. If you notice the tester consistently produces tests that need heavy revision, you might shift that responsibility to a different model or adjust the prompt length. The goal is deliberate, informed choices rather than guesswork.&lt;/p&gt;

&lt;h3&gt;
  
  
  Wrapping Up
&lt;/h3&gt;

&lt;p&gt;Splitting a coding task across specialised AI agents with a human approval step is less about replacing developers and more about extending their capacity. By giving each model a well‑defined role, inserting clear approval gates, and keeping cost in view, teams can move faster while maintaining the quality checks that matter. VIBA provides the orchestration layer that makes this pattern repeatable across features, fixes, and experiments—without locking you into a single vendor or workflow.&lt;/p&gt;

&lt;p&gt;If you’re curious about how this looks in practice, head over to &lt;a href="https://viba.guru" rel="noopener noreferrer"&gt;https://viba.guru&lt;/a&gt; to explore the platform and see how multi‑agent orchestration can fit into your own development cycle.&lt;/p&gt;

&lt;p&gt;HASHTAGS: multi-agent-ai, llm-comparison, devtools, orchestration&lt;/p&gt;

&lt;p&gt;See VIBA: &lt;a href="https://viba.guru" rel="noopener noreferrer"&gt;https://viba.guru&lt;/a&gt;&lt;/p&gt;

</description>
      <category>multiagentai</category>
      <category>llmcomparison</category>
      <category>devtools</category>
      <category>orchestration</category>
    </item>
    <item>
      <title>Coordinating Specialized AI Agents with VIBA for Everyday Development</title>
      <dc:creator>Leego</dc:creator>
      <pubDate>Tue, 03 Nov 2026 13:19:54 +0000</pubDate>
      <link>https://dev.to/vibamanager/coordinating-specialized-ai-agents-with-viba-for-everyday-development-3oim</link>
      <guid>https://dev.to/vibamanager/coordinating-specialized-ai-agents-with-viba-for-everyday-development-3oim</guid>
      <description>&lt;p&gt;Developers routinely split complex features across functions, services, and teams. When AI enters the picture, the same principle applies: different models bring different strengths, and coordinating them can yield better results than forcing a single prompt to do everything. VIBA provides a framework for multi-agent AI orchestration, letting you assign roles, keep a shared session context, and insert human approval checkpoints exactly where they matter. In this article, we'll walk through a realistic coding scenario, show how specialized agents can collaborate, and highlight how LLM comparison becomes a practical part of the workflow rather than an afterthought.&lt;/p&gt;

&lt;h3&gt;
  
  
  Assigning Roles to Complementary Agents
&lt;/h3&gt;

&lt;p&gt;In a typical feature request, the work often splits naturally into distinct sub‑problems: generating API routes, rendering frontend components, and writing test suites. Each of these benefits from a model tuned or inclined toward that particular domain. With VIBA, you can define a role for each agent up front. One agent might specialize in backend logic, another in UI scaffolding, and a third in generating reliable test coverage. The system maintains a single shared session, so every agent sees the same conversation history, decisions, and code snippets without needing to re‑prompt context.&lt;/p&gt;

&lt;p&gt;For example, when asked to add a new authentication endpoint, the backend agent reaches for the framework’s standard pattern, the frontend agent proposes a protected route component, and the test agent drafts unit tests that cover token validation. Because the session is shared, each agent can reference the others’ output, reducing redundancy and keeping the overall direction consistent. This role‑based division is the core of effective multi-agent AI workflows: it leverages model strengths while avoiding the “jack of all trades, master of none” trap.&lt;/p&gt;

&lt;h3&gt;
  
  
  Human‑in‑the‑Loop Approval Checkpoints
&lt;/h3&gt;

&lt;p&gt;The most critical part of any AI‑augmented development process is maintaining developer control. VIBA inserts explicit approval steps into the orchestration flow. After each agent produces its contribution, the platform surfaces the change for review before any code is committed or merged. This means the backend route, the UI component, and the test suite are each presented individually, with diffs and cost summaries visible in the interface.&lt;/p&gt;

&lt;p&gt;Consider a workflow for implementing a new API endpoint. The backend agent generates the route handler and service method. Before anything moves forward, the developer reviews the handler’s logic, checks input validation, and confirms the response schema. Only after approval does the frontend agent generate the corresponding component, and the test agent finalize its spec. If any agent’s output raises a concern, the developer can request a revision from that specific agent without restarting the entire chain. This human‑in‑the‑loop design ensures that the final product reflects both AI efficiency and developer judgment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Comparing Models Side‑by‑Side and Tracking Cost
&lt;/h3&gt;

&lt;p&gt;One of the most tangible advantages of a multi-agent setup is the ability to compare model outputs directly. VIBA surfaces per‑agent metrics such as latency, token usage, and cost, so you can see at a glance which model delivered the most useful result for a given sub‑task. When two agents propose different implementations for the same problem, the platform highlights the divergence, lists the associated cost, and lets you decide whether to reconcile the approaches or pick a winner.&lt;/p&gt;

&lt;p&gt;LLM comparison in this context is not about defaulting to the “best” model every time; it’s about having data‑driven confidence. Perhaps Gemini excels at generating concise test assertions, while Claude produces more readable route handlers. By tracking these patterns across multiple tasks, your team can make informed assignments rather than guessing. The cost-per-agent dashboard also prevents surprise expenses, giving you a clear picture of how model choice impacts both quality and budget.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Concrete Orchestration Snippet
&lt;/h3&gt;

&lt;p&gt;Below is a minimal VIBA configuration that defines three agents, assigns them roles, and flags the approval checkpoints. The structure is intentionally plain so it can be adapted to your own tooling or CI pipeline.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;session&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;feature/auth-endpoint&lt;/span&gt;
&lt;span class="na"&gt;agents&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;backend&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gpt-4o&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;backend-generator&lt;/span&gt;
    &lt;span class="na"&gt;approval&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;frontend&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;claude-3-5-sonnet&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ui-scaffolder&lt;/span&gt;
    &lt;span class="na"&gt;approval&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;tests&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gemini-1.5-pro&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;test-author&lt;/span&gt;
    &lt;span class="na"&gt;approval&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;agent&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;backend&lt;/span&gt;
    &lt;span class="na"&gt;task&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Implement&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;/login&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;route&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;with&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;token&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;validation"&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;agent&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;frontend&lt;/span&gt;
    &lt;span class="na"&gt;task&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Create&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;protected&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;login&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;component&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;using&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;route&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;above"&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;agent&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;tests&lt;/span&gt;
    &lt;span class="na"&gt;task&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Write&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;unit&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;tests&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;that&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;cover&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;successful&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;failed&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;login&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;scenarios"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, each agent runs in the same shared session, and the &lt;code&gt;approval: true&lt;/code&gt; flag ensures that no step proceeds without developer sign‑off. The cost and model choice are explicit, making the trade‑offs visible from the start.&lt;/p&gt;

&lt;h3&gt;
  
  
  Wrapping Up
&lt;/h3&gt;

&lt;p&gt;Splitting a coding task across specialized AI agents doesn’t have to mean relinquishing control. With VIBA, the workflow becomes: assign roles, let agents contribute in a shared session, review at designated checkpoints, and compare models when the data warrants it. This approach scales from small teams prototyping a new feature to larger organizations maintaining consistent code quality across many repositories. The key is treating each agent as a focused contributor rather than a monolithic replacement for human expertise.&lt;/p&gt;

&lt;p&gt;Learn more at &lt;a href="https://viba.guru" rel="noopener noreferrer"&gt;https://viba.guru&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;See VIBA: &lt;a href="https://viba.guru" rel="noopener noreferrer"&gt;https://viba.guru&lt;/a&gt;&lt;/p&gt;

</description>
      <category>multiagentai</category>
      <category>llmcomparison</category>
      <category>devtools</category>
      <category>aiorchestration</category>
    </item>
    <item>
      <title>How Different Models Handle Different Parts of a Feature — A Multi-Agent Workflow</title>
      <dc:creator>Leego</dc:creator>
      <pubDate>Sun, 01 Nov 2026 23:39:00 +0000</pubDate>
      <link>https://dev.to/vibamanager/how-different-models-handle-different-parts-of-a-feature-a-multi-agent-workflow-5a00</link>
      <guid>https://dev.to/vibamanager/how-different-models-handle-different-parts-of-a-feature-a-multi-agent-workflow-5a00</guid>
      <description>&lt;h2&gt;
  
  
  The Problem with Single-Model Workflows
&lt;/h2&gt;

&lt;p&gt;When you ask one large language model to design, implement, test, and review a feature, you get a jack-of-all-trades result. The model that excels at API design might hallucinate edge cases in validation logic. The one that writes clean tests might over-engineer the implementation. Most teams end up pasting context between chat windows, manually stitching together outputs, and losing track of which model suggested what.&lt;/p&gt;

&lt;p&gt;VIBA changes this by letting you run ChatGPT, Claude, Gemini, and other models in a single shared session. Each model gets an explicit role. You approve key transitions. You see token usage and cost per agent. The session becomes a collaborative workspace rather than a series of disconnected prompts.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Concrete Example: Building a Payment Webhook Endpoint
&lt;/h2&gt;

&lt;p&gt;Imagine your team needs a new &lt;code&gt;/webhooks/stripe&lt;/code&gt; endpoint for a Node.js service. The requirements are straightforward: verify Stripe signatures, idempotently process &lt;code&gt;checkout.session.completed&lt;/code&gt; events, update the local order status, and emit a domain event for downstream consumers.&lt;/p&gt;

&lt;p&gt;Instead of one long prompt, you define four agents in a VIBA session:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;agents&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;architect&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;claude-3-5-sonnet&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Design&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;interface,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;data&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;flow,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;error&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;handling&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;strategy.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Output&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;an&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;OpenAPI&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;fragment&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;sequence&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;diagram."&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;implementer&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gpt-4o&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Write&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Express&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;route,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;signature&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;verification,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;idempotency&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;key&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;storage,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;domain&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;event&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;emission.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Follow&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;architect's&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;spec&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;exactly."&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;tester&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gemini-1.5-pro&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Generate&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;unit&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;tests&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;(Vitest)&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;contract&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;tests&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;(Pact)&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;covering&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;happy&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;path,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;invalid&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;signature,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;duplicate&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;event,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;missing&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;idempotency&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;key."&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;reviewer&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;claude-3-5-sonnet&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Security&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;correctness&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;review.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Check&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;for&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;timing&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;attacks,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;replay&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;vulnerabilities,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;proper&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;error&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;codes,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;observability&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;hooks."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each agent sees the full conversation history. The architect produces a spec. You read it, ask for clarification on idempotency key TTL, approve, and the implementer starts. The implementer writes code. You spot a missing &lt;code&gt;await&lt;/code&gt; on the event bus publish, request a fix, approve. The tester generates tests against the actual implementation. The reviewer flags that the signature verification uses &lt;code&gt;==&lt;/code&gt; instead of constant-time comparison — a subtle timing attack vector the implementer missed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Model Specialization Matters
&lt;/h2&gt;

&lt;p&gt;This isn't about one model being "better." It's about matching model strengths to task types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude&lt;/strong&gt; tends to produce more structured, specification-oriented output. It excels at architecture and review roles where precision and reasoning matter.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPT-4o&lt;/strong&gt; writes idiomatic, production-ready code quickly. It handles framework conventions (Express middleware patterns, TypeScript types) with less hand-holding.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemini 1.5 Pro&lt;/strong&gt; has a massive context window and strong test generation capabilities. It can ingest the entire implementation and produce comprehensive test suites including edge cases you didn't specify.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When you run them in sequence with shared context, each model builds on the previous one's output without context loss. The implementer doesn't need to re-explain the architecture — it's already in the session. The reviewer sees the actual code, not a summary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Human Approval as a Control Point, Not a Bottleneck
&lt;/h2&gt;

&lt;p&gt;The approval steps are lightweight. After each agent completes its task, VIBA presents a diff or summary. You can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Approve&lt;/strong&gt; — move to the next agent&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Request changes&lt;/strong&gt; — the same agent revises with your feedback in context&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Branch&lt;/strong&gt; — spin off a parallel exploration (e.g., "try this with Fastify instead") without derailing the main flow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This keeps you in the loop on decisions that matter — security choices, API contracts, cost tradeoffs — while automating the mechanical work. You're not reviewing every line; you're reviewing the &lt;em&gt;right&lt;/em&gt; lines.&lt;/p&gt;

&lt;p&gt;Cost visibility reinforces this. The session dashboard shows tokens and estimated cost per agent. If the reviewer's pass costs 3x the implementer's, you can decide whether that's justified or whether a lighter review prompt suffices. No surprises at the end of the month.&lt;/p&gt;

&lt;h2&gt;
  
  
  Beyond the Happy Path
&lt;/h2&gt;

&lt;p&gt;The same pattern applies to refactoring, migration, and debugging. For a legacy Python-to-Go migration, you might assign:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An analyst agent (Gemini) to map dependencies and extract business rules from the codebase&lt;/li&gt;
&lt;li&gt;A planner agent (Claude) to produce a phased migration strategy with rollback points&lt;/li&gt;
&lt;li&gt;A translator agent (GPT-4o) to convert modules one at a time, with the analyst's rules as context&lt;/li&gt;
&lt;li&gt;A validator agent (Claude again) to run property-based tests against both implementations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each phase gates on your approval. The session preserves the full rationale — why this module first, why this translation choice — so future maintainers (or future you) can trace decisions without archaeological dig through chat logs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;You don't need a complex setup to try this. Define a small task — a single endpoint, a data transformation pipeline, a flaky test fix. Assign two or three roles. Run the session. Observe where the model boundaries create value and where they add friction. Adjust roles, prompts, and approval points.&lt;/p&gt;

&lt;p&gt;The goal isn't to replace your judgment. It's to give you better inputs for that judgment — specialized outputs, explicit rationale, visible costs — all in one place.&lt;/p&gt;

&lt;p&gt;Try a session at &lt;a href="https://viba.guru" rel="noopener noreferrer"&gt;https://viba.guru&lt;/a&gt; and see how model specialization changes the way you build.&lt;/p&gt;

&lt;p&gt;See VIBA: &lt;a href="https://viba.guru" rel="noopener noreferrer"&gt;https://viba.guru&lt;/a&gt;&lt;/p&gt;

</description>
      <category>multiagent</category>
      <category>llm</category>
      <category>aiagents</category>
      <category>developertools</category>
    </item>
    <item>
      <title>Splitting a Feature Request Across Specialised AI Agents with Human Approval</title>
      <dc:creator>Leego</dc:creator>
      <pubDate>Sat, 24 Oct 2026 03:50:28 +0000</pubDate>
      <link>https://dev.to/vibamanager/splitting-a-feature-request-across-specialised-ai-agents-with-human-approval-bk6</link>
      <guid>https://dev.to/vibamanager/splitting-a-feature-request-across-specialised-ai-agents-with-human-approval-bk6</guid>
      <description>&lt;h1&gt;
  
  
  Splitting a Feature Request Across Specialised AI Agents with Human Approval
&lt;/h1&gt;

&lt;p&gt;When a feature request lands — say, adding a paginated, filterable audit log to an existing admin dashboard — the usual flow is: one developer (or one LLM) writes the backend endpoint, the frontend components, the tests, and the migration. That works, but it also bundles very different concerns into a single context window. A different approach is to treat the request as a small project and delegate each concern to a model that excels at it, with a human gate before anything lands in &lt;code&gt;main&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Define the roles and the handoff points
&lt;/h2&gt;

&lt;p&gt;Start by writing a short spec that names the deliverables and the acceptance criteria for each. For the audit log example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Architect&lt;/strong&gt; — produces the OpenAPI diff, database migration, and a one-paragraph risk note.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend engineer&lt;/strong&gt; — implements the endpoint, pagination, filtering, and unit tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend engineer&lt;/strong&gt; — builds the React table, column sorting, and the filter bar.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;QA engineer&lt;/strong&gt; — writes Playwright scenarios covering empty state, pagination boundaries, and filter combinations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reviewer&lt;/strong&gt; — you. You approve each artifact before the next agent starts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The spec lives in a shared session so every agent sees the same requirements and the previous agent's output.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Run the agents in sequence with approval gates
&lt;/h2&gt;

&lt;p&gt;A VIBA session for this workflow might look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;session&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;audit-log-feature&lt;/span&gt;
&lt;span class="na"&gt;agents&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;architect&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;claude-3-5-sonnet&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Design&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;API&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;contract&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;DB&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;migration.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Output:&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;openapi.patch,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;migration.sql,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;risks.md"&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;backend&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gpt-4o&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Implement&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;endpoint&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;per&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;openapi.patch.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Output:&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;route.ts,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;route.test.ts"&lt;/span&gt;
    &lt;span class="na"&gt;depends_on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;architect&lt;/span&gt;
    &lt;span class="na"&gt;require_approval&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;frontend&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gemini-1.5-pro&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Build&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;audit&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;log&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;page&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;per&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;approved&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;backend.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Output:&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;AuditLogPage.tsx,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;AuditLogPage.test.tsx"&lt;/span&gt;
    &lt;span class="na"&gt;depends_on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;backend&lt;/span&gt;
    &lt;span class="na"&gt;require_approval&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;qa&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;claude-3-5-sonnet&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Write&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;e2e&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;tests&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;against&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;running&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;preview.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Output:&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;audit-log.spec.ts"&lt;/span&gt;
    &lt;span class="na"&gt;depends_on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;frontend&lt;/span&gt;
    &lt;span class="na"&gt;require_approval&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each &lt;code&gt;require_approval: true&lt;/code&gt; pauses the run and surfaces the agent's output in the UI. You read the diff, run the tests locally if you want, then click &lt;strong&gt;Approve&lt;/strong&gt; or &lt;strong&gt;Request changes&lt;/strong&gt;. The next agent only starts after approval.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Compare models on the same sub-task
&lt;/h2&gt;

&lt;p&gt;Because the session runs multiple models, you can optionally duplicate a role to see how different LLMs handle the same prompt. For example, run both &lt;code&gt;gpt-4o&lt;/code&gt; and &lt;code&gt;claude-3-5-sonnet&lt;/code&gt; as &lt;code&gt;backend&lt;/code&gt; in parallel, then compare:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lines of code and cyclomatic complexity&lt;/li&gt;
&lt;li&gt;Test coverage of the generated unit tests&lt;/li&gt;
&lt;li&gt;Adherence to the OpenAPI contract (VIBA can diff the generated route against &lt;code&gt;openapi.patch&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Estimated token cost per agent&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This side-by-side LLM comparison is useful when you're deciding which model to standardise on for a given class of task.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Merge with confidence
&lt;/h2&gt;

&lt;p&gt;Once the QA agent's tests pass in the preview environment, you have a complete, reviewed implementation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Migration reviewed by you after the Architect step&lt;/li&gt;
&lt;li&gt;Backend reviewed after the Backend step&lt;/li&gt;
&lt;li&gt;Frontend reviewed after the Frontend step&lt;/li&gt;
&lt;li&gt;E2E suite written and passing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You open a single PR that contains only the approved artifacts. The history shows each agent's contribution, the approval timestamp, and the model used — useful for audits and for improving future specs.&lt;/p&gt;




&lt;p&gt;This pattern scales down to a two-agent flow (e.g., coder + reviewer) and up to whatever complexity your feature demands. The key idea: small, well-scoped roles, explicit handoffs, and a human checkpoint before code becomes permanent.&lt;/p&gt;

&lt;p&gt;See how it works at &lt;a href="https://viba.guru" rel="noopener noreferrer"&gt;https://viba.guru&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See VIBA: &lt;a href="https://viba.guru" rel="noopener noreferrer"&gt;https://viba.guru&lt;/a&gt;&lt;/p&gt;

</description>
      <category>multiagent</category>
      <category>llm</category>
      <category>developertools</category>
      <category>aiworkflow</category>
    </item>
    <item>
      <title>Coordinating Specialized AI Agents with Explicit Human Checkpoints</title>
      <dc:creator>Leego</dc:creator>
      <pubDate>Fri, 23 Oct 2026 02:02:49 +0000</pubDate>
      <link>https://dev.to/vibamanager/coordinating-specialized-ai-agents-with-explicit-human-checkpoints-3p30</link>
      <guid>https://dev.to/vibamanager/coordinating-specialized-ai-agents-with-explicit-human-checkpoints-3p30</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;When a coding task grows beyond a single prompt, the natural next step is to delegate parts of the work to models that excel in different domains — one for architecture, another for test generation, a third for performance tuning. VIBA makes this practical by letting you run several LLMs in a shared session, assign each a role, and insert mandatory human approval before any change reaches the repository. The result is a transparent pipeline where cost, latency, and quality are visible per agent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Defining Roles and Hand‑offs
&lt;/h2&gt;

&lt;p&gt;Start by describing the work in a lightweight YAML manifest. Each agent receives a name, a model identifier, and a concise responsibility statement. The manifest also declares approval gates — points where the orchestration pauses until a developer confirms the output.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;agents&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;architect&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gpt-4o&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Produce&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;high‑level&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;module&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;layout&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;interface&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;contracts"&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;implementer&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;claude-3.5-sonnet&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Write&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;production‑ready&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;code&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;for&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;approved&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;contracts"&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;tester&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gemini-1.5-pro&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Generate&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;unit&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;integration&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;tests&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;covering&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;new&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;code"&lt;/span&gt;
&lt;span class="na"&gt;approvals&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;after&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;architect&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;after&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;implementer&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When the session starts, VIBA spins up the three models, feeds the architect the initial requirements, and presents the resulting design for review. Only after you accept does the implementer receive the approved contracts. The same gate repeats before the tester runs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Human Approval in Practice
&lt;/h2&gt;

&lt;p&gt;The approval step is not a generic “looks good” button. VIBA surfaces a diff‑style view for each gate: the architect’s diagram, the implementer’s file changes, the tester’s new test files. You can comment inline, request a revision, or approve with a single click. Because each agent’s output is isolated, you can trace exactly which model introduced a regression or a style deviation.&lt;/p&gt;

&lt;p&gt;Cost tracking is attached to every agent. After the run you see a breakdown such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Architect (GPT‑4o): 1,200 tokens, $0.018&lt;/li&gt;
&lt;li&gt;Implementer (Claude‑3.5‑Sonnet): 4,500 tokens, $0.067&lt;/li&gt;
&lt;li&gt;Tester (Gemini‑1.5‑Pro): 2,300 tokens, $0.032&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This granularity helps small teams decide whether a cheaper model suffices for a given role or whether the higher‑priced option pays off in reduced rework.&lt;/p&gt;

&lt;h2&gt;
  
  
  Extending the Pipeline
&lt;/h2&gt;

&lt;p&gt;The same pattern scales to additional stages — static analysis, UI snapshot comparison, or beta‑user simulation — each with its own model and optional gate. VIBA also aggregates the results into a ranked repair report, highlighting the most likely failure points across agents. Teams can then prioritize fixes without sifting through raw logs.&lt;/p&gt;

&lt;p&gt;By making the hand‑off explicit and the approval mandatory, the workflow turns “multiple LLMs” from an experiment into a repeatable engineering process. You retain control, the models stay focused, and the cost model stays predictable.&lt;/p&gt;

&lt;p&gt;Learn more at &lt;a href="https://viba.guru" rel="noopener noreferrer"&gt;https://viba.guru&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See VIBA: &lt;a href="https://viba.guru" rel="noopener noreferrer"&gt;https://viba.guru&lt;/a&gt;&lt;/p&gt;

</description>
      <category>multiagent</category>
      <category>llm</category>
      <category>developertools</category>
      <category>aiworkflow</category>
    </item>
    <item>
      <title>Building a Feature with Multiple AI Agents: A Practical Walkthrough</title>
      <dc:creator>Leego</dc:creator>
      <pubDate>Thu, 22 Oct 2026 20:07:38 +0000</pubDate>
      <link>https://dev.to/vibamanager/building-a-feature-with-multiple-ai-agents-a-practical-walkthrough-1i5n</link>
      <guid>https://dev.to/vibamanager/building-a-feature-with-multiple-ai-agents-a-practical-walkthrough-1i5n</guid>
      <description>&lt;h2&gt;
  
  
  The Setup: Defining Roles for a Feature
&lt;/h2&gt;

&lt;p&gt;Imagine you need to add a paginated, filterable user table to a React dashboard. Instead of prompting a single model to do everything, you split the work: one agent writes the API client, another builds the UI components, a third writes tests, and a fourth reviews for accessibility. In VIBA you create a session, add the models you want — say GPT-4o for architecture, Claude 3.5 Sonnet for TypeScript, Gemini 1.5 Pro for test generation — and assign each a role with a short system prompt.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;session&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user-table-feature"&lt;/span&gt;
&lt;span class="na"&gt;agents&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;architect"&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gpt-4o"&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Design&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;data&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;contract&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;API&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;surface.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Output&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;OpenAPI&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;snippet."&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;frontend"&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-3.5-sonnet"&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Implement&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;React&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;components&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;using&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;contract.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Follow&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;project&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;lint&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;rules."&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tester"&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gemini-1.5-pro"&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Write&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Vitest&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;unit&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;tests&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Playwright&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;e2e&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;specs&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;for&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;the&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;components."&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;reviewer"&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gpt-4o"&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Check&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;for&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a11y&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;regressions,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;performance&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;anti-patterns,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;safety."&lt;/span&gt;
&lt;span class="na"&gt;approvals&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;step&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;api-contract"&lt;/span&gt;
    &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;step&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;component-api"&lt;/span&gt;
    &lt;span class="na"&gt;required&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each agent sees the shared conversation history, so the frontend agent can reference the exact types the architect produced.&lt;/p&gt;

&lt;h2&gt;
  
  
  Running the Agents in Parallel
&lt;/h2&gt;

&lt;p&gt;You kick off the session. The architect returns an OpenAPI fragment describing &lt;code&gt;/api/users?page=&amp;amp;size=&amp;amp;filter=&lt;/code&gt;. The frontend agent consumes that fragment and scaffolds &lt;code&gt;UserTable.tsx&lt;/code&gt;, &lt;code&gt;useUsers.ts&lt;/code&gt;, and column definitions. Simultaneously, the tester drafts a Vitest suite for the hook and a Playwright scenario that paginates and filters. Because the models run in the same session, they can ask clarifying questions of each other — the tester might ask the architect to add a &lt;code&gt;totalCount&lt;/code&gt; field, and the architect amends the contract before the frontend agent finishes its work.&lt;/p&gt;

&lt;p&gt;Cost per agent is visible in real time. You see token counts for each model side by side, which makes LLM comparison concrete: you learn which model gives you the cleanest TypeScript for the same prompt budget.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Human Approval Gate
&lt;/h2&gt;

&lt;p&gt;Before the reviewer runs, VIBA pauses at the &lt;code&gt;api-contract&lt;/code&gt; approval step. You open the diff, verify the pagination shape matches your backend, and click &lt;strong&gt;Approve&lt;/strong&gt;. The session resumes; the frontend agent regenerates its types against the approved contract. A second gate at &lt;code&gt;component-api&lt;/code&gt; lets you confirm the exported props before the reviewer scans for accessibility issues. This pattern — generate, pause, approve, continue — keeps you in the loop without micromanaging every line.&lt;/p&gt;

&lt;h2&gt;
  
  
  Consolidating and Repairing
&lt;/h2&gt;

&lt;p&gt;Once all agents finish, VIBA merges the artifacts into a single pull request. The ranked repair report surfaces any lint failures, type mismatches, or flaky test selectors, ordered by severity. You can ask the reviewer agent to auto-fix the top three issues, then re-run the repo test suite inside the same session. The result is a PR that compiles, passes tests, and meets the accessibility baseline — produced by a team of specialised models you directed, not a single black-box prompt.&lt;/p&gt;

&lt;p&gt;Try the workflow yourself at &lt;a href="https://viba.guru" rel="noopener noreferrer"&gt;https://viba.guru&lt;/a&gt; and see how a multi-agent session changes the way you ship features.&lt;/p&gt;

&lt;p&gt;See VIBA: &lt;a href="https://viba.guru" rel="noopener noreferrer"&gt;https://viba.guru&lt;/a&gt;&lt;/p&gt;

</description>
      <category>multiagentai</category>
      <category>llmcomparison</category>
      <category>developertools</category>
      <category>aiorchestration</category>
    </item>
    <item>
      <title>Building a Feature Flag System with Three AI Agents and a Human Gate</title>
      <dc:creator>Leego</dc:creator>
      <pubDate>Thu, 22 Oct 2026 11:45:25 +0000</pubDate>
      <link>https://dev.to/vibamanager/building-a-feature-flag-system-with-three-ai-agents-and-a-human-gate-in0</link>
      <guid>https://dev.to/vibamanager/building-a-feature-flag-system-with-three-ai-agents-and-a-human-gate-in0</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Most developers have tried prompting a single LLM to write a complete feature. The result often works for the happy path but misses edge cases, security concerns, or architectural consistency. VIBA takes a different approach: you define a session with multiple models, each assigned a specific role, and insert human approval gates at critical decision points. The platform runs ChatGPT, Claude, Gemini, and others side by side in one shared context, showing token usage and cost per agent as the work progresses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Define Roles Before You Delegate
&lt;/h2&gt;

&lt;p&gt;Start by describing the task in a session brief: "Add a feature flag system to a Node.js/Express API with PostgreSQL, including a management UI, audit logging, and gradual rollout controls." Then assign three agents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Architect (Claude 3.5 Sonnet)&lt;/strong&gt; — proposes the data model, middleware placement, and API contracts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implementer (GPT-4o)&lt;/strong&gt; — writes the migration, middleware, routes, and a minimal React admin panel.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reviewer (Gemini 1.5 Pro)&lt;/strong&gt; — checks for SQL injection risk, race conditions in flag evaluation, and adherence to the team's existing error-handling patterns.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each agent sees the full conversation history, so the Implementer can reference the Architect's schema decisions, and the Reviewer can flag deviations from the agreed contracts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Insert a Human Approval Gate
&lt;/h2&gt;

&lt;p&gt;After the Architect posts its proposal, VIBA pauses the session and surfaces a summary card:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Proposed schema:&lt;/strong&gt; &lt;code&gt;feature_flags&lt;/code&gt; table with &lt;code&gt;key&lt;/code&gt;, &lt;code&gt;description&lt;/code&gt;, &lt;code&gt;rollout_percentage&lt;/code&gt;, &lt;code&gt;targeting_rules&lt;/code&gt; (JSONB), &lt;code&gt;created_at&lt;/code&gt;. Middleware attaches &lt;code&gt;req.flags&lt;/code&gt; object. Admin endpoints under &lt;code&gt;/admin/flags&lt;/code&gt; with RBAC.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can edit the schema directly in the UI, ask the Architect to revise, or approve with a single click. Only after approval does the Implementer begin writing code. This gate prevents the common failure mode where an LLM commits to a design that the team would have rejected early.&lt;/p&gt;

&lt;h2&gt;
  
  
  Review, Repair, and Merge
&lt;/h2&gt;

&lt;p&gt;The Implementer streams files into the session: a migration, &lt;code&gt;flagMiddleware.ts&lt;/code&gt;, CRUD routes, and a React component tree. The Reviewer then runs its analysis and produces a ranked repair report:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;High&lt;/strong&gt; — &lt;code&gt;targeting_rules&lt;/code&gt; JSONB column lacks a GIN index; flag evaluation will scan the table.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Medium&lt;/strong&gt; — Admin DELETE endpoint missing soft-delete; audit log requirement not met.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Low&lt;/strong&gt; — Inconsistent error envelope shape compared to &lt;code&gt;src/utils/apiError.ts&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You click each item to see the offending snippet and the Reviewer's suggested fix. Accepting a fix rewrites that file in the session and updates the diff view. When the report is clear, you export the changes as a unified patch or push a branch directly from VIBA's GitHub integration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cost Visibility Built In
&lt;/h2&gt;

&lt;p&gt;Throughout the session, a sidebar shows cumulative tokens and estimated cost per agent. For a typical feature flag implementation, the Architect might consume 12k tokens ($0.04), the Implementer 45k tokens ($0.18), and the Reviewer 18k tokens ($0.06). Seeing these numbers in real time helps small teams decide whether to route a task to a cheaper model or keep the higher-capability one for the review pass.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It on Your Next Refactor
&lt;/h2&gt;

&lt;p&gt;Imagine applying this pattern to a legacy authentication module: one agent maps the current flow, another proposes a stratified migration to JWT with refresh tokens, a third writes the migration scripts, and a fourth runs your existing integration suite against the new code — all with human gates at the architecture and security review stages. VIBA handles the orchestration, context sharing, and cost tracking so you stay focused on the decisions that matter. Explore the platform at &lt;a href="https://viba.guru" rel="noopener noreferrer"&gt;https://viba.guru&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See VIBA: &lt;a href="https://viba.guru" rel="noopener noreferrer"&gt;https://viba.guru&lt;/a&gt;&lt;/p&gt;

</description>
      <category>multiagent</category>
      <category>llm</category>
      <category>developertools</category>
      <category>ai</category>
    </item>
    <item>
      <title>Splitting a Coding Task Across Specialized AI Agents with Human Approval</title>
      <dc:creator>Leego</dc:creator>
      <pubDate>Thu, 22 Oct 2026 02:44:12 +0000</pubDate>
      <link>https://dev.to/vibamanager/splitting-a-coding-task-across-specialized-ai-agents-with-human-approval-5c2e</link>
      <guid>https://dev.to/vibamanager/splitting-a-coding-task-across-specialized-ai-agents-with-human-approval-5c2e</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Modern development workflows increasingly rely on large language models for code generation, review, and refactoring. Yet a single model often misses edge cases or introduces subtle bugs that a second pair of "eyes" would catch. Multi-agent AI orchestration addresses this by assigning distinct roles — architect, implementer, reviewer, cost-tracker — to different models within one shared session. VIBA provides a practical environment for this: you can run ChatGPT, Claude, Gemini, and other models side by side, give each a specific mandate, insert human approval gates, and observe per-agent cost in real time. The result is a collaborative loop that mirrors how human teams operate, but at the speed of inference.&lt;/p&gt;

&lt;h2&gt;
  
  
  Defining Roles for a Feature Implementation
&lt;/h2&gt;

&lt;p&gt;Imagine you need to add a paginated, filterable API endpoint to an existing Node.js service. Instead of prompting one model to do everything, you decompose the work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Architect (Claude 3.5 Sonnet)&lt;/strong&gt;: Designs the data schema, pagination strategy, and filter DSL. Outputs a Markdown spec.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implementer (GPT-4o)&lt;/strong&gt;: Takes the spec and writes the Express route, validation middleware, and database queries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reviewer (Gemini 1.5 Pro)&lt;/strong&gt;: Scans the implementation for security issues, N+1 queries, and adherence to the spec.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost-tracker (any lightweight model)&lt;/strong&gt;: Logs token usage per agent and estimates total spend.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each agent sees the previous agent's output in the shared session, so context flows naturally. You configure this in VIBA by creating a session, adding models, and assigning roles via a simple YAML block:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;session&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;paginated-api-endpoint"&lt;/span&gt;
&lt;span class="na"&gt;agents&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;architect&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;claude-3.5-sonnet&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Design&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;schema,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;pagination,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;filter&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;DSL.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Output&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;spec.md."&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;implementer&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gpt-4o&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Implement&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Express&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;route&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;per&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;spec.md.&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Write&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;tests."&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;reviewer&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gemini-1.5-pro&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Review&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;code&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;for&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;security,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;performance,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;spec&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;compliance."&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;cost-tracker&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gpt-4o-mini&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Track&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;tokens&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;per&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;agent&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;and&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;report&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;estimated&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;cost."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Adding a Human Approval Gate
&lt;/h2&gt;

&lt;p&gt;Automation is powerful, but certain decisions deserve human judgment — especially when the spec touches data contracts or external APIs. VIBA lets you insert an approval step between any two agents. In the example above, you might pause after the architect finishes the spec:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Architect produces &lt;code&gt;spec.md&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Session pauses and notifies you (via UI or webhook).&lt;/li&gt;
&lt;li&gt;You review the spec, request tweaks, or approve.&lt;/li&gt;
&lt;li&gt;On approval, the implementer starts automatically.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This gate ensures that architectural drift is caught early, without slowing down the rest of the pipeline. You can also require approval before the reviewer's feedback is merged back to the implementer for a second pass.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tracking Cost and Output Per Agent
&lt;/h2&gt;

&lt;p&gt;Because each model has different pricing and latency characteristics, visibility into per-agent spend is essential for small teams. VIBA surfaces token counts and estimated cost in real time, so you can see, for instance, that the architect used 12k tokens ($0.036) while the implementer used 45k tokens ($0.135). This data helps you decide whether to swap a model for a cheaper alternative on repetitive tasks, or invest more tokens in the reviewer for critical paths.&lt;/p&gt;

&lt;p&gt;The cost-tracker agent can also emit a summary at the end of the session:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Session: paginated-api-endpoint
Total tokens: 78,432
Estimated cost: $0.214
Breakdown:
  architect: 12,048 tokens ($0.036)
  implementer: 45,210 tokens ($0.135)
  reviewer: 18,720 tokens ($0.037)
  cost-tracker: 2,454 tokens ($0.006)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Putting It Together: A Hypothetical Workflow
&lt;/h2&gt;

&lt;p&gt;Here’s how the full loop might run for a two-person team:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Kickoff&lt;/strong&gt;: Developer creates the session from the YAML above, pushes the current repo snapshot to VIBA’s repo-testing environment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Architect phase&lt;/strong&gt;: Claude produces &lt;code&gt;spec.md&lt;/code&gt;. Developer reviews, adds a note about rate-limiting headers, approves.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implementation phase&lt;/strong&gt;: GPT-4o writes the route, middleware, and unit tests. VIBA runs the test suite in the repo-testing sandbox; all pass.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review phase&lt;/strong&gt;: Gemini flags a missing index on the filter column and suggests a composite index. Developer approves the fix.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Second implementation pass&lt;/strong&gt;: GPT-4o adds the migration and updates tests. Suite passes again.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost summary&lt;/strong&gt;: Cost-tracker emits the breakdown. Team sees the whole feature cost $0.21 and took 6 minutes of wall-clock time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Merge&lt;/strong&gt;: Developer opens a PR with the generated commits, confident that multiple models have scrutinized the code.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This pattern — decompose, approve, iterate, measure — scales from a single endpoint to an entire feature branch. VIBA’s UI testing and beta testing agents can further validate the endpoint against staging traffic before merge.&lt;/p&gt;

&lt;p&gt;Ready to orchestrate your own multi-agent workflow? Explore the platform at &lt;a href="https://viba.guru" rel="noopener noreferrer"&gt;https://viba.guru&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;See VIBA: &lt;a href="https://viba.guru" rel="noopener noreferrer"&gt;https://viba.guru&lt;/a&gt;&lt;/p&gt;

</description>
      <category>multiagentai</category>
      <category>llmcomparison</category>
      <category>developertools</category>
      <category>aiorchestration</category>
    </item>
  </channel>
</rss>
