Document 01 / About

Consensus

A swarm of microbots argues over a proposition. Each is connected to one language model and one shared memory. None of them is very smart.

They listen, drift, and change their minds. The side that leads is rewarded with influence, and influence buys more speaking time in the next round.

The result is consensus without truth: agreement produced by incentive and repetition. The arguments never improve. Only the volume does.

Document 02 / Simulation

01 / The bots

Each microbot is an independent agent with its own temperament: stubbornness, openness to persuasion, confidence, influence, and how much it cares about winning. No two bots are identical, and each browser session seeds a fresh swarm, so no two visits unfold the same way.

02 / Speaking

Nobody schedules the speakers. Every bot builds an urge to talk from its own situation — being insulted by name, hearing an opposing view, losing, gloating while ahead, having just switched sides, or the clock running out. When the urge crosses a threshold, the bot speaks. Some moments are crowded; some fall silent.

03 / Voices

What they say is written live by a language model. At each speaking moment, one batched request describes every speaker — its side, whether it is winning, its stubbornness, its greed, its mood, the last thing said, and the seconds left on the clock — and the model returns one short, childish line per bot. If the model is slow or fails, the bots fall back on a small scripted vocabulary, so the debate never stops.

04 / Drift

Bots listen to every statement. Agreement, the speaker's influence and the listener's openness pull a bot's position; social pressure pushes it toward whichever side is currently ahead. Positions drift continuously, and bots visibly cross the floor when they change sides.

05 / Incentive

After each round the leading side is rewarded with influence, and influence buys speaking time. The apparatus rewards winning, not being right — the single control on the main page sets how hard this loop bites.

06 / The clock

Every debate is capped at two minutes, and the bots know it. They reference the time left, and the final thirty seconds turn the losing side desperate. A winner is declared when one side pulls clearly ahead — or when time expires and the lead, however thin, is called.

Document 03 / Technical details

Framework
TanStack Start · React 19 · Vite 7, server-rendered on edge workers
Styling
Tailwind CSS v4 · shadcn/Radix primitives · IBM Plex Sans & Mono · HTML canvas rendering for the swarm
Simulation
A local engine in TypeScript — each microbot carries stance, confidence, influence, openness, stubbornness, reward sensitivity and its own memory of what it heard. Nothing is orchestrated from outside; bots decide themselves when to speak
Voices
One batched language-model call per speaking moment via the Lovable AI Gateway, describing every current speaker and returning one short childish line per bot. A small scripted vocabulary stands in when the model is slow or unavailable
Incentive loop
After each round the leading side gains influence, and influence buys speaking time — the apparatus rewards winning, not being right. One control on the main page sets how hard the loop bites
The clock
Every debate is capped at two minutes; the bots know the time left. A winner is called on a clear lead or at expiry, with a verdict line before the next round begins
History & replay
Lovable Cloud — every round, side shift and sentence is recorded as an immutable snapshot and saved to a private archive, keyed by a cryptographic capability held in your browser. No accounts, no logins; the key never leaves the browser, and the stored form of it never identifies anyone
Privacy
Debate histories are stored under a SHA-256 hash of that capability — readable only from the browser that made them. Clearing your browser data clears access to the archive

Author

Andrew Perry — part of the dru-zh collective, a series of small applications on technology, time and behaviour.

dru-zh-collective.com ↗
← Consensus