Story Copilot / Local web application
A second pair of eyes for the person running the story.
Players change their minds. One character learns a secret the others haven’t heard. A correction changes what happened five minutes ago. Story Copilot follows those changes and helps the facilitator find a useful next response.
Python · FastHTML · HTMX · SQLite · Local models and optional task adapters
AT THE TABLE
The human runs the game.
The copilot suggests narration, questions, and rule advice. The facilitator can use a suggestion, ignore it, or ask for another. Only the actual conversation supports the working story state.
Bring your own setting, rules, character sheets, and participants—or start with the included original fictional example. Type contributions or opt into separate microphone and system-audio capture.
“I leave the hatch closed. I want to talk to the caretaker.”
The player changed direction. The hatch remains closed.
Give the caretaker a reply. Leave the next choice to the player.
A suggestion is a possibility. The conversation is the record.
AGENT BEHAVIOR
Decide what is missing before answering.
Recall the exchange
Retrieve earlier dialogue with the surrounding questions, replies, and corrections. Keep sources attached to the memory.
Inspect a character
Look up current resources and recorded knowledge. A fact visible to the facilitator is not automatically something every character knows.
Consult the campaign’s rules
Search only the supplied rule documents. Verify quotations and calculate from explicit inputs; ask when the rule or necessary value is missing.
Review the draft
A bounded editing pass checks player agency, knowledge, and continuity against the source. It retains the original draft and explains its edits; separate evaluation judges whether those edits helped.
Respond—or clarify
A bounded decision loop chooses its next evidence tool, then produces private guidance or a concrete question. Its decisions and failures are inspectable in the trace.
CONTINUITY
Carry the story across sessions.
The application packs complete exchanges and relevant state into a measured context budget. Source revisions invalidate stale work. Continuing a session preserves its history; branching creates an alternative without changing the original.
Model requests can share one local base with small task adapters. Speech recognition runs through a separate queue. Starting the application does not start recording.
EVALUATION
See how each response was built.
Regression tests cover revisions, stale answers, private guidance, rule isolation, context budgets, audio ordering, and session continuity. An original multi-exchange scenario compares the agent loop with a fixed workflow using the same model and source sequence.
The live review includes changed choices, character-private information, corrected resource costs, missing rules, and resuming a session. Valid structure and exact citations do not establish narrative quality; those responses need separate judgment.
Read the evaluation method ↗RELATED WORK
The application and the model workshop.
Story Copilot is the interactive application. The Qwen TTRPG toolkit prepares, trains, reloads, and evaluates task adapters from a dataset you provide.
Explore the training toolkit →