Two guard rails on a public LLM toy
Nothing ticks in a room nobody has opened. A party already under way plays to its end and then stops. A rolling hourly cap drops a room to the house brain past a fixed dollar figure.
- Idle rooms
- never start
- Abandoned party
- finishes, then stops
- Worst case for walking away
- the rest of one party (~3¢)
- Hourly cap
- PARLOUR_MAX_USD_PER_HOUR, default $2, per room
- Past the cap
- house brain, and the room says so
Watcher-started, not watcher-stopped
shouldRun() in lib/sim/runtime.ts says a room starts when somebody opens it and then finishes what it started. It deliberately does not stop when the last watcher leaves.
Both halves earn their place. Starting on a watcher means an untouched room costs nothing at all. Refusing to stop mid-party means you can close the tab and come back to a night that went on without you, which is the difference between a simulation and a video, and it caps the downside at the rest of one party.
The hourly cap
PARLOUR_MAX_USD_PER_HOUR, default $2, limits live spend per room per rolling hour. Past it the room keeps playing on the house brain and puts that on the badge. Degrade, never stop.
The budget is process-wide, which is what stops resumed private parties multiplying it. Fork a party six times and you are still sharing one hour's allowance.
Why not a login
Because the costs really are this small and the sharing really is this good. An auth wall on something that costs three cents an hour to run buys nothing and loses everyone who would have stood in the corner for ninety seconds.
Read next
What a live LLM simulation actually costs
A Parlour party runs five or six minutes on roughly 250–300 evaluation calls of about 3,000 input tokens each, which is three to four cents. Every watcher of a room shares one party, so the bill does not grow with the audience.
The house brain: running with no model at all
The house brain is a deterministic personality heuristic that answers the same nine questions and synthesises its own distributions, so the simulation stays watchable, and tunable, with no API key and no network.
One party in memory, streamed to everyone
A room is a single party held in server memory and streamed to every watcher, so everybody sees the same betrayal at the same moment and the model is paid for once per beat however many people are looking.
Saving a party as one file
Save writes the whole night, full world state plus every ticker line with timestamps, as a single JSON document that reads as a transcript in any editor. Resume picks the night back up at exactly that beat.