Several AI agents coding at once, without losing control
Orch breaks a project into tasks and hands them to several AI agents that code in parallel, makes sure no provider's quota runs out, and shows the client progress on a live page.
Go · SQLite · Claude, Codex, Gemini y otros- 5
- supported AI agents
- 31
- hidden bugs found during the rewrite
The client’s problem
Anyone building software with AI agents (a freelancer, a small agency) keeps running into the same three problems. Run one agent at a time and the work moves slowly. Run several and you burn through the provider’s quota in an hour, then sit idle for the rest of the day. And every time the client asks “how’s it going?”, you have to put together a progress report by hand.
Orch was built so you can stop babysitting agents one by one, and so the client can see progress without having to ask.
How it works
- The project is described in spec documents. Orch turns them into a task list with dependencies: what can be done right away and what has to wait on something else.
- It hands the ready tasks to several AI agents at once (Claude, Codex, Gemini and two others). Each agent works on its own copy of the code, so they don’t step on each other.
- Before launching each task it checks the budget: it tracks how much each provider has used over the last few hours and stops before hitting the cap.
- When an agent finishes, Orch opens the change request and waits for the automated tests. If they pass, it marks the task as done. If they fail, it sends it back to the agent with the error. On the third try it switches to a more capable model.
- The client gets a link to a page with live progress. The summary is built from fixed rules, with no AI, and spending is hidden by default.
Everything runs on the user’s own machine, with their own accounts and keys. There’s no cloud service in between.
The tough call and why
The first version was written in Python. It worked, but installing it meant setting up a Python environment, and that’s where a lot of people give up.
We rewrote it in Go so it installs as a single file with no dependencies. Speed wasn’t the reason: Orch’s job is to watch processes for hours, keep track of state and serve a page, and Go handles all of that with its standard library. We ruled out Rust because, as a first project in that language, it would have doubled the time.
To keep the rewrite from dragging on, we made deliberate cuts: three dashboard screens, a diagram generator and a rarely used command were left out.
What broke along the way
Rewriting in Go uncovered 31 bugs the Python version had been hiding, despite its 1,530 automated tests all passing. The worst ones:
- The budget control didn’t stop anything. With 750,000 tokens used against a cap of 600, it kept launching tasks.
- It never detected whether tests had passed. It asked GitHub for a field whose name doesn’t exist, so it waited forever.
- It could launch the same task twice, because it ignored the pause between retries.
- The client page showed spending even when it was set to hide it.
Each bug was fixed along with a test that reproduces it, and the experience produced eight new review rules. One example: test with real data instead of made-up samples.
Results
- It installs as a single file and works with 5 different AI agents.
- It has 1,375 automated tests.
- It’s open source and is on version 0.16.
- Orch is built using Orch: each release’s tasks are carried out by its own agents.