English

Stories

Help: Quick Start · Stories · Characters · Lore Books · Multiplayer · Discover · Advanced · Templates · FAQ


A story is the main container for a roleplay session. It holds the scenario, the cast of characters, the full message history, and all generation settings. Stories are private to their owner unless shared via a multiplayer invite link or published to Discover as a scenario.


Creating a Story

Go to Stories → Create Story. The form is divided into a main section and several collapsible accordion panels.

Main Fields

FieldDescription
NameThe story's title, shown in your story list and (if published) in Discover.
Short DescriptionA private note for your own reference; never sent to the AI.
ScenarioThe current situation or setting injected into every prompt. Keep it focused on what is true right now in the story rather than deep backstory (use lore books for that).
Background ImageClick any image in the grid to set the background displayed on the play screen.
TemplatePick one of your own generation presets to pre-fill all the accordion fields below in one click. Manage your presets under Config → Presets, or clone one from Discover Presets.

Model Selection

Above the accordions, pick the models this story uses: the Completion model (main text generation), an optional Image Generation model (for AI-generated scene images), an optional Embedding model (for lore vector search — see Lore Books), and an optional Mood/State model. The Mood/State model falls back to the Completion model when left unset.

Prompts Accordion

Five independent prompt fields, each a full Mustache template rendered on its own. Fields marked with a preview button (available once the story exists) let you see the exact assembled prompt that would be sent.

FieldWhen it is used
System PromptThe default prompt for a character's turn. This is the one you build out with template variables — character descriptions, lore, and message history are not injected at fixed positions; you place them yourself using {{#presentChars}}, {{#hasLore}}, {{#messages}}, and the other variables described in Templates.
Narrator PromptUsed instead of the System Prompt when you trigger a Narrate generation (see below) — a separate template so character-less narration can have its own tone, rules, and layout.
Narrator NameThe display name shown as the author of narrator-generated messages (defaults to "Narrator" — rename it to whatever fits your story, e.g. "The Dungeon Master").
Mood System PromptUsed instead of the System Prompt whenever the AI re-evaluates a present character's Mood (see Characters), right before that character's turn. Leave blank to disable AI mood updates for this story.
State System PromptSame as above, for a character's State field. Leave blank to disable AI state updates for this story.

Context Accordion

SettingDescription
Context LengthTotal token budget for the prompt (including all injected text and message history).
Lore Context LengthTokens reserved for lore book entries. If entries are being cut off, increase this value.
Recent Message TokensHow many tokens of raw recent messages to keep alongside any summaries.
Enable Mood/State EvaluationTurns on automatic AI mood/state updates (see Characters). Off by default, since it adds an extra round of LLM calls before every character turn.
Mood/State Context LengthToken budget for mood/state evaluation calls, independent of the main Context Length. Only shown when Mood/State Evaluation is enabled.
Mood/State Max TokensMaximum tokens the model may generate per mood/state evaluation — these are meant to be a sentence or two, so this is kept small. Only shown when Mood/State Evaluation is enabled.

Generation Accordion

SettingDescription
Max New TokensMaximum number of tokens the AI may generate per response.
TemperatureControls randomness. Lower (0.5–0.8) = more consistent; higher (1.2–1.5) = more creative.
Top PNucleus sampling cutoff. Lower values narrow the pool of candidate tokens.
Presence PenaltyDiscourages the model from reusing any token that has already appeared in the prompt or response.
Frequency PenaltyScales with how many times a token has been used; more repeated tokens are penalized more heavily.
SeedSet to -1 for a random seed each generation. A fixed positive integer makes output deterministic — useful for testing.
Thinking BudgetFor models that support extended reasoning (chain-of-thought); sets the token budget for internal reasoning before the response.
Prefix messages with character namesWhen enabled, each message is prefixed with the character's name before being sent to the model (e.g. Aria: Hello.). Useful for chat-format fine-tuned models that expect speaker labels.
Stop TokensTokens that end generation early when the model outputs them. Useful for chat-format models that tend to continue past the intended response boundary.

Summarization Accordion

See the Advanced page for a full explanation of summarization settings. In brief: enable summarization here and configure how aggressively old messages are compressed to free up context window space.


The Play Screen

Click Play on any story to open the play screen. The layout is:

  • Message history — the center of the screen, showing the full conversation in chronological order.
  • Config panel — on the right side on desktop; collapsible on mobile via the settings icon (the sliders icon in the slim story bar at the top). Tap the same icon to close it.
  • Message input — pinned to the bottom of the screen.

On mobile, the top bar is slimmed down to a home icon (to return to the story list) and the panel toggle icon. The full navbar is hidden on the play screen on mobile to maximize reading space.


Sending Messages

  • Press Enter to send a message.
  • Press Shift+Enter to insert a newline without sending.
  • You must be incarnating a character to send messages as that character. If you have not taken control of a character, the input is disabled.
  • To incarnate a character, open the Characters tab in the config panel and click Voice on the character you want to control.

The Continue Button

The Continue button appears next to the message input. Clicking it asks the AI to generate a response without you posting a message first. Use it to nudge the story forward when you want the AI to take the next turn without writing anything yourself.

The Narrate Button

The Narrate button (open-book icon, between the story settings panel and the character list panel) triggers an AI generation that isn't attributed to any character. The resulting message is a system message authored by the story's Narrator Name (default "Narrator") with no character avatar, and uses the story's Narrator Prompt instead of the main System Prompt. Use it for scene-setting, environmental description, or any narration that shouldn't come from a specific character's point of view.


Image Messages

You can insert images directly into the story feed in two ways:

Uploading an Image

Use the image attachment button next to the message input to upload an image file from your device. The image is inserted as an IMAGE message in the story feed, visible to all participants. Image messages are not sent to the AI as text — they act as a visual scene break in the narrative.

AI-Generated Images

If an image generation model is configured for the story (set in the Model tab of the config panel), you can trigger the AI to generate an image. Generated images appear as IMAGE messages and can be regenerated using the standard regenerate action on the message.

Image messages pause story continuation — the Continue button is disabled while the last message in the feed is an image, to prevent the AI from generating text over a scene boundary you just set.


Message Actions

Hover over any message to reveal its action buttons.

ActionDescription
RegenerateDiscards the message and asks the AI to produce a new one from the same point. For image messages, requests a new generated image.
EditOpens the message content for inline editing. Save when done to update it in place.
DeletePermanently removes the message from the history.
SwipesAI messages may have multiple generated alternatives (swipes). Use the arrow buttons on the message to cycle through them. Navigating to a different swipe replaces the current message content without deleting the alternatives.

Config Panel Tabs

TabPurpose
ParticipantsSee who is in the session; copy the invite link; kick guests (owner only).
StoryEdit the scenario, prompt templates, and generation settings without leaving the play screen.
LoreAttach or detach lore books; create new lore books directly from within the play session.
CharactersToggle each character's Presence and Voice (incarnation) for this session.
ModelSwitch the AI model used for text generation mid-session, and configure the image generation model for AI-generated scene images.

Commands

Type a slash command in the message input to perform special actions. Commands produce a message visible to all participants.

CommandExampleResult
/roll XdY/roll 2d6Rolls two six-sided dice. Result formatted as 🎲 2d6: [3, 5] = **8**, attributed to your incarnated character.

Export and Import

Exporting a Story

From the story list, open the menu on any story and choose Export. This produces a .scenario.zip archive containing:

  • All story settings (scenario, prompts, generation config, summarization config).
  • All lore books currently attached to the story, including their entries.
  • All characters attached to the story, including their presence settings (isPresent, isMuted, chativity).

This archive is a complete snapshot of the story setup — it does not include the message history. The story's model selections (Completion, Image, Embedding, Mood/State) are carried along as portable hints and re-matched by name on import; if no model with a matching name exists on the importing install, that slot falls back to the install's default.

Importing a Story

Go to Stories → Import Story and upload a .scenario.zip file. Dream Scrolls will recreate the story, its characters, and its lore books in your account. Existing items with the same name are not overwritten; new copies are created.