Home How it works

Under the table

One turn, end to end

The model is the storyteller at the table. It is not the referee, not the scorekeeper and not the memory. Here is what happens to a single line you type, in the order it happens.

The anatomy

Five steps, one turn

Nothing in this list is a hope about how a model behaves. Each step is code with a test on it, because long scripted playthroughs found that every job left to prose eventually got done wrong.

  1. You type a line

    Or say it, once speech input arrives. Your line lands in the chat dock, and the transcript you see there is display only: what the DM reads is assembled fresh from the campaign database each turn, not scraped from the pixels.

  2. The roll gate reads it before any model does

    A deterministic scorer decides whether your line calls for dice, using the system's own verbs and stat names. It costs zero tokens. Most lines never go near a die, and the gate lets them through untouched.

  3. When dice are called for, the engine rolls

    The expression is parsed, seeded and rolled in code: the per-die breakdown, the kept and dropped dice, the outcome band, all logged. The model receives the result as a fact it must narrate around, never as a suggestion it may weigh.

  4. The model narrates the consequences

    Storytelling is the one job the model has, and the only one. Its narration streams to the chat dock as it is written, and to speech alongside it, so the first word arrives fast and the voice does not wait for the paragraph to finish.

  5. A background crew files the turn

    While you read, the crew writes what the turn established into the campaign database: the person you met, the thread you opened, the thing you picked up. The next turn reads that back through search and dossiers, not through an ever-growing transcript. That is how a campaign can run a hundred sessions and still know the innkeeper's name.

A rule you will never see broken: the DM never narrates a dice ask in prose. When a roll is needed you get a real dice tray with the engine's own numbers in it. If prose ever does ask for a roll, the engine detects it and rescues the moment with a tray, and that rescue is itself tested. Rolls are engine deterministic, always.

The notation

A dice language, not a vibe

Every system expresses its rolls in the same small language, and the engine is the only thing that speaks it with authority. This toy in your browser uses the same notation and makes none of the engine's promises.

Press Roll.

NdX rolls N dice of X sides, dF is a fudge die, a modifier adds or subtracts, and kh1 or kl1 keeps the highest or lowest die. In the game, every roll is logged with its seed and its full breakdown, so any result can be replayed and checked later.

Why the engine holds the dice

The model marking its own homework is worthless

Long scripted playthroughs found what a DM asked to referee itself actually does. It fudged downward out of politeness. It repeated whole sentences byte for byte. It promoted a typo into a permanent character. It lost your gold between two context windows. It announced rules no book contains.

Every one of those was fixed by moving the job out of the prompt and into code with a test on it: seeded rolls, a resource ledger, an echo guard, a rule verifier that quotes the book. The measurements that proved each fix are written down in the project's own records, and several of them are on the home page.

The dials

Strictness is a dial, not a difficulty slider

Strictness changes what the DM is allowed to do with the rules, not how hard the monsters hit. Three settings ship, and the same campaign can move between them.

  • Casual

    The rules stay out of the way. Rolls happen when the moment is dramatic, and the table's momentum matters more than precision.

  • Creative

    The rules are real and visible, but bend for a good idea at a fair price. The default for most campaigns.

  • Stringent

    The rules as written, every time, with a citation. For tables that came for the system.

What each setting changes
BehaviourCasualCreativeStringent
Calls for rollsWhen dramaticWhen the rules say soAlways, correctly
Softening a resultToward player funRare, with a costNever
Creative stuntsYes, andYes, with a cost or a rollRaw rules, and it explains why not
Resource trackingLooseOnEnforced and announced
CitationsOn requestWhen relevantWhenever a rule is applied

More dials at the table

Pace and voice are yours too

Beyond strictness, the table carries dials for how fast the DM moves the story (deliberate, standard, brisk) and how it speaks: six personas from Warm Storyteller to Chill Robot, any of them behind any face. These are preferences, not paywalls, and they live in your settings, not in a spreadsheet on a server.

Built

Ask the DM, out of character

A read-only channel beside the chat: ask the table a question without putting words in your character's mouth. The DM can consult the book and the campaign record to answer, and nothing said there is written into the story or moves its clock.

Receipts

Measured, and written down

These numbers come from the project's own measurement logs, each counted on a recorded date. They are quoted here because the project keeps them honestly, not because a marketing department rounded them up.

5,372turns measured across 24 full length runs and 8 systems. Twenty of the 24 finished with zero errored turns.
3.7smedian wall clock per turn on the measured hosted model. Worst turn in the run, 8.2 s.
0 to 66%of open story hooks resolved, before and after the long-horizon fixes.
4 to 1byte-identical replays across 600 turns after the first repetition guard, then zero on the confirming run.