by The Intersect
Gallery
1 / 2
What it does
Quorum puts a team of six AI agents inside a live meeting. While people talk, the agents work at the same time on the same conversation. The Fact-Checker verifies claims against the web as they're said and cites sources. The Decision Tracker records what was decided and why. The Action Owner turns "I'll do it by Friday" into an owned, dated action item, but pauses for a human yes first. The Devil's Advocate pushes back when the room agrees too quickly. The Memory Keeper flags when a decision contradicts a past meeting. The Scribe keeps a running summary for late joiners. It ships as a full browser meeting app (video, chat, accounts, recap), and `pnpm demo` runs the real engine in the terminal with a single model key. Clone, pnpm install, add a key, pnpm demo.
How the agents run concurrently
Each meeting gets its own Mozaik runtime (defineRuntime<RoomState>()). Every agent is a participant with its own situation handlers. No agent calls another and there's no fixed order. Each one hears every utterance on the bus, decides for itself whether to act, and starts its own runLoop, so several agents are mid-inference or mid-tool-call on the same sentence at once. pnpm demo ends with a per-agent lane chart: in our real run, 4 agents were busy at once (Scribe, Fact-Checker, Decision Tracker, Devil's Advocate), with 2+ agents working in parallel for 20-28 of ~48 seconds. They coordinate only through shared RoomState: - Claim locks: the Fact-Checker runs up to two checks in parallel. Each claim is locked by its owner so it's never checked twice, and locks have TTLs. - A per-room LLM semaphore and token budget: a rules-only Moderator participant meters every inference and halves concurrency under pressure. At the hard limit, interception stops new inference. - A state-based handler: the Devil's Advocate fires when the shared store shows consensus without dissent, not on keywords. - Two kinds of interception: (1) human-in-the-loop, where the Action Owner's tool call is intercepted and its loop paused until a person approves (silence = reject; forged approval stamps are stripped); (2) agent-to-agent, where the moment the Fact-Checker refutes a statement, any paused proposal built on that sentence is vetoed in the Fact-Checker's name before a human can approve it. You can see this in the demo: the Action Owner is paused while the Fact-Checker is mid-web-search on the same sentence, and the refutation rejects the action. - Failure isolation: sandboxed handlers, loops that never reject, provider failover with retries and timeouts. One failing agent never stops the room, and two meetings never share state (integration-tested). Every run writes a JSONL trace to .audit/ and streams to Mozaik Cloud (screenshot in the README).