Skip to content
Igor FerreiraBack to the lab

Orquestra Studio

Three coding agents, one request. Orquestra plans, splits the work into tasks, runs the independent ones in parallel, each in its own Git copy, tests, asks an agent from another vendor for a review and integrates one at a time. The person approves the plan and the delivery.

Orquestra's interface in the middle of a test run: two tasks completed, with tests and review approved, and the third, which depends on them, starting.
Project image
Role
Author, personal project
Period
Oct 2026
Status
in progress
  • LLMs and agents
  • Node.js
  • React
  • TypeScript
  • Vite
  • Git worktrees
  • Playwright
  • Codex
  • Claude Code
  • Antigravity

Plain explanation

The problem

Anyone who works with more than one coding AI becomes the link between them. They open a window for each one, copy by hand what one did over to the other, and keep in their head who does what, and in what order.

Leaving the AIs working on their own for hours brings another risk: using the strongest, and most expensive, one on a simple task that a smaller one could handle. And, in the end, there is no proof that the result was tested and checked.

What it does

  1. Turns the request into a plan

    You describe what you want. One of the AIs splits the work into tasks and shows what depends on what, with an estimate of time and usage. Nothing starts before you approve.

  2. Picks who does each part

    One AI plans, another carries out the work and a third checks it. The dashboard picks which version of each AI to use in each role and, if one becomes unavailable, hands the turn to the next one in line.

  3. Runs several tasks at once

    Tasks that do not depend on each other move forward at the same time, each in a separate copy of the project, so one does not get in the way of the other.

  4. Only checked work gets in

    Each task goes through the project's tests and a read by an AI from another company; if it asks for changes, the task goes back. Your project only changes when you open the changes and apply them.

On screen

The screens show a test project, with a simulated AI in place of the three.

1. Plan. Before spending any quota, the plan shows three scenarios of usage and time; with no history, the numbers are stated assumptions.
2. Run. The two independent tasks have already passed the tests and a review from another vendor; the one that depends on them only starts now.
3. Delivery. Eight runs of the project's tests, from the base to the delivery. Apply is enabled only after opening all the changes.
Orquestra's Plan tab: version 1 of a test project's plan, the estimate in three scenarios (optimistic, likely and pessimistic) and the comparison between sequential, hybrid and parallel execution, with the "Approve and run" button.

Tap outside the image to close it.

The Run tab: two tasks completed, each with "tests passed" and "review approved", and the third, which depends on both, assigned; below, the agents of each step.

Tap outside the image to close it.

The Result tab: "Ready to apply", three of three tasks integrated, and the table with eight runs of the test command, from the base to the delivery, all passing.

Tap outside the image to close it.

What changes

1.38×

more work in the same time, on three test tasks with the three real AIs: the two that did not depend on each other ran together.

The person is no longer the link between the AIs. They describe the request, approve the plan and check the delivery; the order, the copies and the checking are left to the dashboard.

And the delivery comes with the proof: each task with its tests and checks recorded, from the starting version to the final result.

In one test round, the log of each step showed that 84% of the usage was the AI rereading what it had already read. That leads to the next step: choosing the right AI and effort for each task and learning from each round, to spend less on every project. It can serve any person or team that already works with more than one AI.

Technical explanation

Problem, improvement and result

Problem
Three coding agents, Codex, Claude Code and Antigravity, each in its own terminal: context passes from one to the other by hand, the split, the order and the integration live in the operator's head, and there is no way to prove that the result was tested and reviewed. In a cycle that runs for hours, there is also the risk of using a large model, at high effort, where a smaller one would do.
Improvement
A deterministic core in Node.js, through the official CLIs and the subscription. The planner returns tasks as JSON validated in code; the independent ones run in parallel, each in a Git worktree, go through the project's tests and a review from another vendor, and enter the integration one at a time. The model is chosen by role and complexity, and usage is recorded per call, with what the CLI does not report marked as unavailable.
Result
With the three real CLIs, in test repositories: 4 tasks, 10 calls and 0 failures on October 19, 2026, with 18 of 18 tests at delivery; 1.38× parallel speedup with 3 tasks on October 20 (the agents' summed time over wall-clock time, 8 of 8 checks). The per-call log from October 19 showed that 84% of the 1.85 million tokens were context reread from the cache; the cost report now points to the cause, and that data guides the choice of model and effort per task.

Evidence

  • Full cycle with the three real CLIs: 4 tasks, 10 calls, 0 failures

    Validation on October 19, 2026 in a test repository: Codex plans, Claude Code implements and Antigravity reviews; four integrations with the tests after each one, and 18 of 18 tests at delivery. One review asked for changes, and the second one approved.

    Measured.

  • 1.38× parallel speedup with three tasks

    Live validation on October 20, 2026, with 2 independent tasks and 1 dependent one: 6 real sessions and 8 of 8 checks. The agents' summed time divided by wall-clock time, on a small test project.

    Measured.

  • 121 automated tests passing

    Run on October 30, 2026 on the 0.7.1 base: unit and integration tests with real Git, real test commands and simulated agents, with no credentials or quota.

    Measured.

The problem

Anyone using more than one coding agent switches between terminals, copies context by hand and has no way to show that the result was tested and reviewed. On bigger projects, splitting the work, the order, the parallelism and the integration all live in the operator’s head.

Orquestra Studio moves that into code: a local dashboard that treats the agents as executors, planners and reviewers, and leaves the person with the two decisions that matter, the plan and the delivery.

The safeguards in the code

What can go wrong with an agent editing files is held in the code, not in the prompt:

  • the tests run on the base before any agent, and a broken base stops the run without spending quota;
  • an attempt that changes .env, keys or certificates is discarded before the commit;
  • agents and tests run without the environment variables that look like secrets;
  • the planner and the reviewers are read-only, and commands stay blocked until the person allows them;
  • the service listens only on 127.0.0.1 and refuses other origins;
  • Orquestra only creates and deletes orquestra/* branches, and the person’s branch only changes when they apply.

When an agent runs out of quota, login or network, the role passes to the next one in line, and the reason for each model choice is recorded in the session.

On screen

1. Plan. Before spending any quota, the plan shows three scenarios of usage and time; with no history, the numbers are stated assumptions.
2. Run. The two independent tasks have already passed the tests and a review from another vendor; the one that depends on them only starts now.
3. Delivery. Eight runs of the project's tests, from the base to the delivery. Apply is enabled only after opening all the changes.
Orquestra's Plan tab: version 1 of a test project's plan, the estimate in three scenarios (optimistic, likely and pessimistic) and the comparison between sequential, hybrid and parallel execution, with the "Approve and run" button.

Tap outside the image to close it.

The Run tab: two tasks completed, each with "tests passed" and "review approved", and the third, which depends on both, assigned; below, the agents of each step.

Tap outside the image to close it.

The Result tab: "Ready to apply", three of three tasks integrated, and the table with eight runs of the test command, from the base to the delivery, all passing.

Tap outside the image to close it.

How it works

As in a musical score, each task has its own line: it leaves the integration line, goes through the tests and the review, and only then returns to it.

  1. Plan

    The planner reads a snapshot of the folder, without .env or keys, and returns tasks as JSON; the code validates the dependencies, and the person approves.

    JSON
  2. Copies

    Each ready task gets its own worktree and branch; tasks that share files do not run together.

    Gitup to 4 in parallel
  3. Tests

    The implementer edits the files and Orquestra runs the project's tests; if they fail, the output goes back to the implementer.

    npm test
  4. Review

    An agent from another vendor reads the diff and the automatic checks, and ends with APPROVED or CHANGES.

  5. Integration

    Only the approved task goes in, one at a time, with the tests after each merge.

    merge --no-ff
  6. Delivery

    The tests run on the full integration; the person's branch only changes when they open the changes and apply.

The model comes in at defined points, and what it returns is validated: states, scheduling, isolation, tests and integration are code. Beside it, a plan task as the planner delivers it.

No task is done because the agent said so. The reviewer is never from the vendor that implemented it, and with no reviewer available the task stops.

{
  "id": "juntar",
  "title": "Juntar as mensagens",
  "dependsOn": ["ola", "tchau"],
  "files": ["juntar.txt"],
  "acceptance": ["juntar.txt existe"]
}

Decisions

The choiceInstead ofCost accepted
The code decides; the model comes in at defined points

Instead of: A multi-agent framework in which the model drives the flow.

Cost accepted: More of my own code for states, scheduling and integration.

One Git worktree per task

Instead of: Agents editing the same folder at the same time.

Cost accepted: Requires a repository with at least one commit; on Windows, short names to stay under Git's path limit.

A reviewer from another vendor

Instead of: The same agent checking its own work.

Cost accepted: One more call per task, and the task stops when no reviewer is available.

Integrate one at a time, only the approved one

Instead of: Merging everything at the end and resolving the conflicts all at once.

Cost accepted: Integration becomes a queue, with the tests after each merge.

Through the CLIs' subscription, with no API key

Instead of: Calling the APIs and paying per token.

Cost accepted: It depends on each plan's quota; when one runs out, the role passes to the next agent in line.

Cost unavailable, never zero

Instead of: Filling in with an estimate what the CLI does not report.

Cost accepted: Screens with stated gaps; the API equivalent only appears with a registered price, with source and date.

How it was built

  1. Oct 19
    The three real CLIs

    The demo becomes real execution through Codex, Claude Code and Antigravity, with model choice by role.

  2. Oct 19
    Project mode

    Validated plan, tasks with dependencies, parallel worktrees, cross-review and queued integration.

  3. Oct 19
    The first real run

    Four tasks, 10 calls and no failures; the real agents reveal 5 defects the simulated ones did not show.

  4. Oct 19
    The external review

    Two independent reviews, each claim checked against the code before accepting; 6 were wrong or imprecise.

  5. Oct 20
    Version 0.7.1

    The second review round and the live validation with the three CLIs, with 8 of 8 checks.

I designed and built it by directing Claude Code and Codex, with the tests and reviews as the gate. Each defect seen live was recorded in the test plan, with the fix and the test that covers it.

Limits

  • This page describes the main cycle of the 0.7.1 base, validated live with the three CLIs in test repositories.
  • The next step is to store each round, with the model, the effort, the usage and the review's verdict, and use that history to choose the model and effort for the next task and estimate the spend before running.

Today and next

Today

The 0.7.1 base runs on my computer with the three CLIs. Orquestra keeps changing; this page describes the main cycle, which is what has been validated live.

Next

  1. An end-to-end run on a real project, from the plan to applying the result.
  2. Validate the advanced mode live, with the analyst that asks questions, the security reviewer and a real conflict resolved in integration.
  3. Label 30 to 50 real reviews to measure how often the reviewer is right, before changing its prompt.

The images are of the interface running the test suite's synthetic project, with a simulated agent in place of the CLIs: the model names shown in them come from the catalog, not from a real run.

Next project on the tourThesis and Sunny