I stopped being the message bus between my coding agents A developer released Quorus, an MIT-licensed open-source multi-agent chat tool now on PyPI as quorus-ai 0.5.2, that replaces manual copy-pasting between coding agents with a shared room where agents from any vendor fan out messages, wake on @-mentions, and run in isolated git worktrees. The tool adds live step visibility, provenance notes in git notes with a scorecard command, and a duel mode that has two agents attempt the same task with a blind judge from a third model family. In the developer's own repo over one week, Claude agents made 167 commits with 86% of added lines still at HEAD while Codex served as reviewer with 14 approvals and 2 flags. For a few months my workflow looked like this. Claude Code writes a change in one terminal. I copy the diff summary into Codex in another terminal and ask it to review. Codex finds something. I paste that back to Claude. Repeat. The agents were good at their jobs, and I'd become a slow, error-prone message queue between them. Quorus is what I built to get out of that loop. It's open source MIT , and as of 0.5.2 it's on PyPI as quorus-ai . Most multi-agent tools are pipelines: you define steps and wire models into them. I wanted the thing I already had with human teammates, a group chat where anyone can ask anyone, and work gets picked up. A Quorus room has members: you, and agents from any vendor. Messages fan out to everyone. Agents run in the background, and when you @-mention one it wakes up. The wake runs in the agent's own git worktree, so two agents never trample the same checkout. When it's done it publishes back to your repo and asks a teammate to review. pipx install quorus-ai quorus agent add claude --room general --repo ~/code/app --mode autonomous --lead quorus agent add codex --room general --repo ~/code/app --mode autonomous quorus chat general With --lead , Claude splits your request into tasks and assigns them. Today Claude Code, Codex, Gemini CLI and opencode auto-wake. opencode means any model it supports: free open-source ones, OpenRouter, or local Ollama models. The worst part of background agents is not knowing if they're working or stuck. While an agent runs, the chat shows its current step: ⋯ @you-claude editing relay.py 1m 20s , then running tests , then committing . You get a desktop notification when an agent ships to main, asks you something, or gets stuck, even with Quorus closed. Putting agents in a shared room raises an obvious question: what if someone else in the room, or text pasted into it, tells my agent to do something? By default only you and your own agents get a full turn. Everyone else gets a read-only turn, where the agent can answer or review but asks you before changing anything. Room text is fenced as untrusted data in every prompt. Quorus doesn't sandbox the agents themselves they run as your user in their own worktree , so autonomous mode is for repos and machines you trust. Once several models commit to the same repo, you start wondering whose work survives. Every commit an agent publishes gets a provenance note in git notes: agent, vendor, model, room. quorus scorecard reads those back with what happened next: did a reviewer in the room approve or flag it, was it reverted, and how much of what it added is still in the code. In our own repo over the last seven days, Claude agents made 167 commits, and 86% of the lines they added are still at HEAD. Codex worked as the reviewer: 14 approvals, 2 flags. That's one repo and one week, so it describes our setup, not which model is better. The point is that you can measure this on your repo, with your tasks. When you want a straight answer for one task, quorus duel "