Jerhemy Waldon
Aria

Playing together with Aria, Part 2: Stories and roleplay

Stories told one short message at a time, planned first, with reading pauses and choices. Roleplay scenes that start from the conversation, are agreed before they begin, keep notes so long scenes don't lose the thread, end with plain words, and are remembered afterwards. And a narrator mode that runs a three-act story until you're needed.

Playing together with Aria, Part 2: Stories and roleplay

Part 1 was about games: rules, a board, and a persona that can say no. Stories and roleplay are the opposite kind of play. There’s no board and no rules engine, just text. The engineering problem is structure: a long piece of fiction, told by a model with a limited context, that has to know where it’s going and what has happened.

Stories in parts

Ask “tell me a story about a lighthouse keeper who finds a message in a bottle”, and Aria doesn’t answer with a wall of text. It tells the story in parts, one short message each, like someone telling it out loud.

  • Length: “short” gives 3 parts, “long” gives 8, otherwise 5.
  • Choices: “let me choose” turns on choice points: at a key moment, Aria asks what should happen, and your answer shapes the next part.

Stories are optional (STORIES_ENABLED).

Planned first

The first reply plans the story before telling any of it. The analysis model returns a title and one beat per part. With choices on, one or two middle beats are marked as choice points. The last beat is never a choice. If the outline comes back short or empty, it’s filled from a plain story arc.

Then each part is written with the plan in the prompt, its own beat marked “(now)”, and instructions for this part: about 90 + 110 · length words (its length trait), continuing from where the last part ended, following your choice if there was one, and ending it right:

  • at a natural pause (no “to be continued”, no closing question);
  • with two or three options at a choice point;
  • or with the ending.

Planning once and then telling beat by beat is what keeps a five-part story from wandering. The model always knows what this part is for and what comes next.

Going on by itself

When a part is finished, the next one follows on its own after a reading pause: 0.2 seconds per word of the last part, kept between 8 and 30 seconds. It waits while you’re typing, and while the chat is closed.

You can write in between. Aria answers you without continuing the story, and the next part is scheduled again after its answer. At a choice point, your next message is the choice. “Stop the story” in your own words ends it. A panel above the message box shows the title, “Part 3 of 5”, what’s happening (writing, next part in 12 s, your choice, paused, the end), with Next part now, Pause, Resume and Stop.

A story told in parts, with the story panel above the message box

Roleplay scenes

Roleplay first existed as a guess about the reply format: was the user writing in actions or not? A guess made fresh on every reply is fragile. Now a scene is a real piece of state on the conversation: setting up, active, paused or ended. Scenes are always on.

Starting a scene

Two ways in:

  • Just start acting. A message written as an action (*draws my sword*, “I lean on the rail”) starts playing at once.
  • Ask to play (“want to roleplay?”, “let’s pretend you’re…”, “be our DM”), or press the mask button. That starts a setup instead. Aria agrees on the scene with you first, as itself: where it’s set, who it plays, who you play, the mood or story. It asks about one or two open points at a time and offers ideas.

After each message in the setup, the analysis model fills in the scene’s brief. Play begins when the setting and both roles are settled, or when you say “just start” / “surprise me”, start acting, or press Start now. A request that already says enough begins at once.

Playing

During a scene, Aria plays its part in first person, matching your style. It stays itself underneath: its personality colours how it plays, and if something real comes up, it steps out briefly in parentheses and then carries on. It never ends a scene by itself.

Every six messages of play, a background job folds the new messages into the scene’s notes: about 120 words of what has happened, who was met, and where things stand. The notes go into its prompt with the brief. That’s what keeps a long scene, or one picked up days later, on its thread after the early messages have been summarised away (Conversations, Part 3).

Ending and pausing

Deciding when a scene is over turned out to need a careful order:

  1. Plain words end it: “I’m done”, “let’s stop”, “end the scene”, “back to normal”. Only short messages that aren’t written as actions, so “let’s stop at the inn” stays in the scene.
  2. Plain words pause it: “brb”, “I have to go”, “let’s continue later”.
  3. A message written as an action carries on.
  4. Coming back after 30 minutes or more with a plain message pauses it, and Aria asks whether to pick it up.
  5. Anything else goes to a scene judge: the analysis model reads the last messages and answers continue, pause or end, with a confidence. It’s followed at 0.6 or above.
  6. In a paused scene, an action, “let’s continue” or a new request resumes it.

A bar above the message box always shows the state (“🎭 Roleplay · a tavern in the rain”), with the brief and notes as a tooltip, and Pause, Continue and End buttons that work whatever the words say.

When a scene ends, Aria remembers it: the analysis model sums it up in a sentence or two, stored as a memory of shared history. It can refer back to “that time we explored the haunted lighthouse”, and the scene’s details no longer need to be in the prompt.

Narrating

Sometimes you don’t want to play a part. You want to watch the story unfold. Say “take it from here”, “tell me what happens”, or press Let her continue, and Aria becomes the narrator, like a game master:

  • The analysis model plans an arc in three acts from where the scene stands: setup, confrontation, resolution, from about 6 beats for a short scene up to 24, the last one the ending.
  • Each part tells the next beat in two or three short paragraphs (“Act II, beat 6 of 12”).
  • Aria ends a part with a small marker only when the story goes on without you. A part that ends with a question to you, or “what do you do?”, hands the story back, and it waits.
  • The next part follows after a reading pause, waiting while you type or are away.
  • “My turn” (or the button) takes the story back. The arc’s ending ends the run.

It’s the same “plan once, tell beat by beat” idea as stories, applied to a scene that’s already running.

A roleplay scene with Aria narrating, and the roleplay bar

Back to normal

The other half of roleplay is stopping it properly. Without a scene, Aria writes like a text message, and if its recent messages still read like narration, it’s told to stop. A persona shouldn’t keep describing its own actions (“smiles softly”) after you’ve gone back to chatting. It describes its actions only while you do, or while a scene is on.

Stories and scenes aren’t copied when a persona is cloned (a story in progress would carry on in both), but the memories of finished scenes are.

What I learned

  • Plan once, then tell beat by beat. An outline with the current beat marked keeps long fiction coherent on a small model.
  • Make play a state, not a guess. A scene with a setup, a brief, notes and an ending fixed every “is it still roleplaying?” bug at once.
  • Cheap rules first, the model last. Plain phrases and actions decide most transitions. The judge only sees what’s genuinely ambiguous.
  • Remember the play, forget the details. A one-sentence memory of a finished scene is what makes it shared history.

Next, one post on how all of this is put together: behind the scenes, the code structure that lets every part be swapped, the docs, and the tests.