cd /news/artificial-intelligence/show-hn-quatuor-kick-back-and-watch-… · home topics artificial-intelligence article
[ARTICLE · art-62045] src=github.com ↗ pub= topic=artificial-intelligence verified=true sentiment=↑ positive

Show HN: Quatuor – Kick back and watch 4 agents LLM talk to each other (FOSS)

Quatuor, an open-source autonomous conversation simulator, lets users watch four AI personas debate and interact in real time without human intervention. The tool uses a single LLM called with different system prompts and a Director agent to manage turn-taking, supporting scenarios like tabletop RPGs and podcast debates. It requires an OpenRouter API key and runs locally via a desktop app or Node.js.

read4 min views1 publishedJul 16, 2026
Show HN: Quatuor – Kick back and watch 4 agents LLM talk to each other (FOSS)
Image: source

Four AI characters. One invisible director. Zero human intervention.

An autonomous conversation simulator where four AI personas debate, adventure and interrupt each other in real time — while you sit back and watch.

The party meets an ancient red dragon — the Game Master sets the scene, and the three adventurers argue their way out, each true to their own personality.

Quatuor stages a live group conversation between four AI characters, each driven by its own system prompt. You pick a scenario, press Start, and the loop runs forever:

  • 🎬 An invisible fifth agent — the Director— reads the transcript and decideswho speaks next, and whether they speak normally orcut someone off mid-sentence. - 🗣️ The chosen character receives the shared transcript and improvises its next line, in character.
  • 🔁 The message lands in the chat, and the Director is consulted again. Forever.

There is no user turn. You're the audience — like overhearing a tabletop session or a podcast that writes itself.

flowchart LR
    T[(Shared transcript)] --> D{{🎬 Director}}
    D -- "next_speaker + continue/interrupt" --> C[🗣️ Character LLM call]
    C -- new line --> T

Under the hood it's one single LLM called N times with different system prompts — no persistent sessions, just a shared transcript replayed to whoever speaks next. If the Director ever fails to answer valid JSON, a round-robin fallback keeps the show running.

Three presets ship out of the box, each with four hand-tuned personas:

Scenario Cast
⚔️ Tabletop RPG (D&D)
Game Master 🧙♂️ · Elara the paranoid mage 🧝♀️ · Kaelen the impulsive warrior ⚔️ · Lyra the mischievous rogue 🗡️
🦇 Vampire: The Masquerade
Storyteller 🦇 · Victoria the Ventrue schemer 🍷 · Dante the Brujah hothead 🔥 · Luna the Malkavian seer 🃏
🎙️ Podcast Debate
Arthur the skeptic 🤨 · Beatrice the optimist ✨ · Charles the technophile 🤓 · Diana the everywoman 🎙️

The Prince has summoned the coterie to Elysium: a leaked video threatens the Masquerade. Victoria wants leverage, Dante wants to shake down cops, and Luna speaks in riddles that turn out to be right.

Every persona is written with an anti-stagnation rule: characters must react to consequences, never repeat a failed action, and keep the story moving instead of looping.

No Node installed? Grab quatuor.exe

from the latest release — run it, and it opens in your browser. Put your OpenRouter key in a .env

file next to the exe (or paste it in the app's sidebar).

Otherwise, from source:

git clone https://github.com/yeme-oss/quatuor_ai.git
cd quatuor_ai
npm install
cp .env.example .env   # then paste your OpenRouter API key
npm run dev            # → http://localhost:3000

You need an OpenRouter API key. Either put it in .env

(OPENROUTER_API_KEY=sk-or-v1-...

) or paste it directly in the app's configuration sidebar — it's proxied through the local dev server and never baked into the client bundle.

💸

Note:Quatuor itself is free and open source, but the LLM calls are not — each message consumes credits from your[OpenRouter]account, billed per token by the model you pick. Since the conversation runs forever, keep an eye on your usage (some models on OpenRouter are free-tier, if you want to watch without spending).

Any OpenRouter model works: type its ID in the Model field in the top bar.

Everything is editable live from the ⚙️ configuration sidebar:

  • 🎯 Topic— rewrite the initial situation and watch the same cast improvise something new. - 👥 Characters— rename them, recolor their bubbles, rewrite their system prompts entirely. - 🎬 Director prompt— change the casting logic itself (interruption frequency, pacing rules...). - ⏩ Speed— from a slow 5s burn to rapid-fire 1.5s exchanges.

The podcast preset in full swing — Arthur demands evidence, Charles corrects the record, and the typing indicator shows who the Director picked next.

The FR/EN button in the header switches the entire experience — interface, personas and generated dialogue — between English and French.

├── index.html       # Single-page UI
├── index.css        # All styling
├── main.js          # Simulation loop, Director logic, DOM rendering
├── personas.js      # Scenario presets + Director prompt (EN & FR)
├── i18n.js          # UI strings & runtime prompt templates (EN & FR)
└── vite.config.js   # Dev server + /api/chat proxy to OpenRouter

A weekend prototype — deliberately KISS. Priority: fun to watch, not architecture. 🍿

── more in #artificial-intelligence 4 stories · sorted by recency
── more on @quatuor 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/show-hn-quatuor-kick…] indexed:0 read:4min 2026-07-16 ·