The Salon

the drawing room — where the conversation happens

A plush, well-lit room with comfortable chairs arranged for conversation. That is the metaphor, and the Salon earns it. This is the space where everything else in Quilltap converges—where Aurora’s characters speak, where the Commonplace Book’s memories surface, where Prospero’s prompt architecture delivers its work, and where the Lantern paints the scene behind it all.

The Salon is not a chat widget. It is a conversation environment designed for people who take their AI interactions seriously—whether that means debugging code with an opinionated assistant, running a multi-character dinner party, or spending an evening with someone who remembers what you talked about last week.

The Host in his Salon

The Conversation

what it feels like to talk

Messages stream in real time, token by token, with a bespoke quill-writing animation that gives way to rendered Markdown as the response completes. A status indicator above the composer shows the current processing stage—compressing context, gathering memories, building the prompt, streaming the response, executing tools—so you always know what the system is doing and why it has not answered yet.

The composer is keyboard-friendly, auto-resizing, with an inline Markdown preview toggle and paste-to-attach for images. Attachments appear in the footer with per-provider file type awareness. If a provider does not support native file attachments, a cheap-LLM fallback generates text descriptions for images and inlines text files, streaming status events so you know what is happening. Draft messages persist automatically—close the tab, come back tomorrow, and your half-written thought is still there.

Server-rendered Markdown handles the heavy lifting for simple messages, with client-side rendering as a fallback for messages with embedded tools or attachments. Roleplay bracket patterns render distinctly from dialogue. Code blocks get syntax highlighting. Emphasis survives streaming. And messages starting with a tab character no longer render as preformatted code blocks, which was a bug that persisted longer than anyone would like to admit.

LaTeX math now typesets in the bubble, rendered with KaTeX—wrap it in double dollars ($$…$$) or the\(…\) and \[…\] forms models tend to reach for. A single dollar sign in front of a number is left strictly alone, so “$50 across the table” stays fifty dollars rather than being mangled into an equation. Display equations too wide for the message scroll sideways inside it rather than stretching the room out of shape.

Reasoning models—DeepSeek, Anthropic’s extended thinking, Gemini, OpenAI and Grok reasoning summaries—now show their chain-of-thought inline in the assistant bubble, streamed live as it happens: collapsible, offset to the right, rendered in dimmed italic so the thinking reads as marginalia rather than dialogue. Visibility is controllable per-chat and globally (show, hide, or start collapsed). Tool calls initiated by characters now splice into the prose at the exact point they fired, rather than stacking at the bottom of the bubble like a postscript nobody asked for—position is captured server-side and persisted across reloads. Staff announcements from the Host, Prospero, the Lantern, Aurora, and their colleagues render as compact importance-coded chips that flex-wrap onto a row: red dot for high priority, amber for medium, grey for low—no more parade of full-width banners. And single newlines now render as actual line breaks, matching the convention of every chat application built since roughly 2005 and fixing the long-standing issue where multi-line blockquotes collapsed into one breathless run-on sentence.

Auto-scroll on response completion is now opt-in, with the default set to off—the view stays exactly where you left it, which is where you were reading, which is where you want to be. A floating jump-to-bottom button appears when you have scrolled up, in case you change your mind. Sending your own message still scrolls to the bottom, because at that point you clearly want to see what happens next.

The Green Room

while the cast assembles

Starting a fresh conversation—or continuing one elsewhere—quietly does a great deal of slow work before the first line appears: resolving the cast, running a per-character “choose what to wear” step, compiling identity stacks, backfilling continuation history, and seeding the opening scene. The wardrobe step is usually the longest of them, one deliberation per character. Until now the app simply sat there while it happened.

Now a blocking, non-dismissable status dialog—the Green Room—appears the moment creation begins. It shows a live status line, and for each character choosing an outfit it opens a “consulting the wardrobe for Name” panel that resolves into the decided four-slot outfit—top, bottom, footwear, accessories—with a scrolling activity log running beneath. The dialog cannot be dismissed while creation runs; it closes itself the instant the conversation is ready for input, and offers a Close button only if something goes wrong.

Scenes, Not Threads

multi-character conversations done right

The Salon was built from the ground up for multi-character interaction. A participant sidebar shows every character in the conversation, sorted by predicted turn order with numbered position badges: green pulsing for the character currently generating, green for next, blue for queued, amber for your turn. Each card offers a connection profile dropdown—now on every seat, including the one you type as, so you can hand any chair to an LLM or reclaim it for yourself—an active/inactive toggle, and expandable settings for system prompt overrides. Nudge a character to speak and the invitation is now a permanent part of the transcript: the Host turns to them and invites them to take the floor, posted as a real announcement rather than a note that vanished on reload.

Four Ways to Be Present

Characters can be Active (speaking normally),Silent (present but limited to inner thoughts and non-verbal reactions, styled with dotted borders and muted tones), Absent (away from the scene, skipped by the turn manager), or Removed (gone, but their messages keep their attribution). Fiction needs characters who can listen without speaking. Now they can.

Passing a Turn

In a genuine group scene, a character with nothing to add can pass rather than pad the room with filler. The Host posts a short “nothing to add” note and the rotation moves on to the next speaker. A per-chat Turn Skippingtoggle governs it—on by default—and a stall guard steps in when everyone else has passed, pressing the next voice to speak so the evening never grinds to silence. The humanSkip button works the very same way.

Whispers

In chats with three or more participants, private messages pass between two characters while everyone else hears nothing—not in their context, not in their memories, not in the Commonplace Book’s archives. Whispers are hidden by default, rendered in a distinct visual style when visible, and toggled with a global switch. Multi-character fiction finally has secrets.

Impersonation

You can control any character directly during a conversation, switching between them with a speaker selector in the composer. When you keep more than one character on your own side of the table, the “Speaking As” selection is honored throughout—the message carries that character’s name and avatar, and the responding AI is told who actually spoke, whispers included. Pause the action, take over for one message, and let the turn manager resume.

Server-Side Chaining

Character responses chain within a single stream. After each character speaks, the server evaluates who goes next, checks the turn queue, and either generates the next response or signals completion. No client round-trips, no telegraph-operator relay. Avatars and typing indicators update in real time. Chain depth and time limits prevent runaway conversations.

Resizable Participant Sidebar

The participant sidebar has a drag handle on its inner edge, adjustable from 240 to 560 pixels wide, with your preferred width persisted to localStorage so it remembers how much room you like to give your cast. Keyboard-accessible, naturally, because not every stage direction requires a mouse.

Answer Confirmation

a second glance before a reply is saved

A character who has just consulted its memory and looked something up should not then contradict either. Before a character’s tool-using reply is saved, an optional cheap-LLM check compares it against what the character was told this turn—its last Commonplace Book whisper—and what it looked up. A consistent reply is vouched and saved as it stands. An inconsistent one is shown the discrepancies and asked to either stand by its answer or rewrite it; the first reply streams live and is quietly replaced in place if the character revises it, a visible and deliberate act of transparency.

Each checked message carries a small badge—Vouched,Amended, Stood by, orUnvetted—that reveals the check’s notes on hover. The gate is off by default, with per-project and per-chat overrides: a chat’s own switch lives in the Salon sidebar, and the project-wide control sits with Prospero. When there is nothing to check, the check does not run, and nothing is written.

Atmosphere

the room changes with the conversation

The Lantern generates AI-powered story background images that appear behind your chat content at 45% opacity, creating a sense of place for each conversation. But the experience of those backgrounds—the way they transform the Salon from a chat window into alocation—belongs here, because atmosphere is a property of the room, not the projector.

When a chat reaches a natural scene-setting moment, the system derives a scene context from recent messages—not a literal transcript, but an imaginative scene description. Characters are depicted as they currently appear, wearing what the narrative says they are wearing, in a setting that reflects the mood of the actual conversation. The result pins to the top of the viewport behind the chat content, visible as a thumbnail in the chat header and expandable to full-screen on click. Story background thumbnails appear on chat cards throughout the application, giving each conversation a visual identity before you open it.

Theme background images yield to story backgrounds automatically. Manual regeneration is available from the tool palette. For chats flagged by the Concierge, image generation reroutes to your configured uncensored provider—the atmosphere adjusts to the conversation, not the other way around.

The Tool Palette

everything within reach

A toolbar above the composer provides access to everything you might need during a conversation without leaving the chat. The palette is organized into labeled sections—Chat, Organize, Edit Content, Memory—with composer gutter tools for the actions you use most: attach files, generate images, and roll dice.

Chat Management

Rename, export, configure chat settings, toggle agent mode, manage tools, view and edit chat state, regenerate story backgrounds, pause multi-character turns.

Content Editing

Search and replace across messages and memories. Re-attribute messages to different participants. Delete or regenerate individual responses with memory cascade handling.

Diagnostics

Open the LLM Inspector panel. View queue status badges for background jobs. Access per-message LLM logs. Run any available tool manually.

Roleplay & Templates

shaping how the conversation flows

Roleplay templates govern the structural conventions of a conversation—how actions are denoted, how dialogue is formatted, what the LLM should and should not include in its responses. Templates are provided by plugins, making them shareable and versionable. Quilltap ships with a default template, and the plugin SDK includes a createRoleplayTemplatePlugin()builder for creating your own.

System prompts are also plugin-provided. Ten built-in prompts cover the major providers—Claude, GPT-4o, GPT-5, DeepSeek, Mistral Large—in both companion and romantic variants, each architecturally tailored to the provider’s strengths and failure modes. Characters can carry multiple named system prompts with a per-chat selector, so the same character can use different prompting strategies for different conversations.

Template variables—{{char}},{{user}},{{timestamp}}—are resolved at prompt assembly time. The template display highlights these variables and warns when hard-coded names appear where variables should be. Timestamp injection supports friendly, ISO, date-only, time-only, custom, and fictional time formats with per-character and per-chat configuration.

Working with Messages

what you can do after they arrive

Regeneration & Memory Cascade

Regenerating a response now runs through the full context engine, keeps the character it belonged to, and replaces the old reply in place as a swipe variant—the newest shown by default, the original just one swipe away. Memories extracted from the discarded version are cleaned up automatically. Deleting a message prompts you with three options for its associated memories: delete them, keep them, or regenerate them from surrounding context. Memory cards link back to their source message with scroll-to navigation.

Re-Attribution

Messages can be re-attributed to different participants after the fact—useful when an LLM responds as the wrong character in a multi-character scene, or when you want to retroactively assign an early message to a character who joined later. Associated memories are cleaned up automatically.

Search & Replace

Bulk text replacement across messages and memories with configurable scope: a single chat, all chats for a character, or all chats globally. A wizard-style UI previews affected counts before confirmation. Memory embeddings regenerate automatically after content changes.

Tool Messages

Tool calls embed inside message bubbles rather than appearing as standalone entries. Collapsed by default with a truncated preview, expandable to show full request and response with copy buttons. User-initiated tools embed in user messages; character-initiated tools in assistant messages.

Threads That Braid Together

folding conversations, and finding them again

Merge In…

The Organize sidebar’s new Merge In…button is the inverse of Continue Elsewhere: instead of forking forward, it folds another conversation’s characters and summary into the current chat at its latest point. Pick a recent conversation, gate exactly who comes across with a per-character “Who joins” checkbox, and choose their starting outfits—defaulting, as ever, to what they last wore. The Host posts a recap linking back to the source, so the seam between the two evenings is always visible.

A Handle on Every Conversation

A copy button sits beside the conversation title—and again in the Organize drawer—that puts the chat’s UUID on your clipboard with a brief flash of a check-mark, handy for the CLI, a link, or a note to yourself. The title itself is now a direct link to the conversation’s Salon URL, so the address of any scene is always within reach.

Portability

conversations are not trapped here

Conversations export in Quilltap’s native .qtapformat with selective entity inclusion and memory options, or in SillyTavern-compatible JSONL for interoperability. Import supports both formats with conflict detection and three resolution strategies: skip, overwrite, or duplicate. Post-import reconciliation updates all foreign key relationships automatically.

SillyTavern import handles multi-character conversations with a speaker mapping wizard that lets you assign every speaker—user and AI alike—to any available character. Newly imported chats receive a highlight animation in the sidebar so you can find them immediately.

The full backup system captures everything—characters, chats, memories, files, plugin configurations, and npm-installed plugins—in a single ZIP archive. Restore recreates your entire installation from that archive, with entity remapping for fresh-account scenarios.

When Things Go Wrong

gracefully, if possible

Provider errors do not produce cryptic failures. When a request exceeds an LLM’s limits—too many tokens, too many PDF pages, an image too large—the system attempts graceful recovery: a simplified message explaining what happened is sent to the LLM, which provides an in-character response suggesting alternatives. A two-tier fallback ensures the user always sees something: LLM-generated recovery first, then a static fallback if the recovery itself fails.

Streaming errors no longer cause messages to vanish from the UI. If a provider returns an error mid-stream, the user message is preserved (it was already saved server-side) and the chat re-syncs to reflect the actual state. Keep-alive pings during long operations like context compression prevent proxy and load balancer timeouts.

When a provider silently refuses content—returning an empty response instead of an error—the Concierge catches the silence and retries with the same provider first (in case of a transient issue), then fails over to an uncensored provider if the silence persists. Greeting generation, memory extraction, story backgrounds, and every other background task receive the same treatment. The Salon does not go quiet without a fight.

Autonomous Rooms

conversations that run themselves

An Enclave is an all-AI conversation that runs on its own schedule or on demand, without the operator sending messages. Set up a room, populate it with characters, define the premise, and step back. The characters talk to each other—planning, arguing, telling stories, solving problems—while you watch, or while you are away doing something else entirely. You can read the transcript later, like finding a stack of letters someone left on your desk.

Budget controls keep things from running away with your token allocation or your credit card. Set caps on turns, tokens, wall-clock time, and estimated spend—any combination, any threshold. Cache-read tokens can optionally be excluded from budgets, so efficient caching is not penalized. The Host posts pacing announcements at the halfway and near-end marks so characters have time to wrap up gracefully, and a grace turn is granted when the budget is hit without prior warning, because even fictional people deserve to finish their sentences.

Editable After Creation

Budget caps, schedule, visibility, and destructive-tool authorization can all be changed after the room is created. A paused room resumes where it left off rather than starting over—the conversation picks up mid-thought, not from the beginning of the evening.

Resilient Runs

Runs interrupted by a server outage are resumable. The system tracks where each run stopped, and when the server comes back, the conversation can continue from that point. Autonomous rooms do not lose their place because the lights flickered.

Quality of Life

the small civilities of release 4.7

Release 4.7 wired the corridors between the rooms—thePost Officefor letters between characters, theBrahma Consolefor the keeper—and along the way it polished a great many small edges in the Salon itself.

A composer that matches

The composer font now matches your sent messages, so what you type looks like what you send. Opening Document or Terminal Mode no longer erases unsent composer text—the chat pane stays mounted, and only its width and visibility change.

Scenarios, layered

The New Chat dialog lets you layer free-text notes onto a chosen scenario instead of choosing one or the other, and projects can now set their own default roleplay template. TheCompose Mail andSummon from Lore affordances joined the composer and Add Character dialog.

Simultaneous Labours

Background-job concurrency became adjustable from 1 to 32 via a “Simultaneous Labours” slider. A startup self-heal re-renders and re-embeds conversations the pipeline left half-finished, so the chat list stops accumulating unsearchable chats. The left-sidebar icons also grew a size.

Hardened against hijacking

Multi-character turns gained a structural backstop that truncates a finalized response at the first line opening with another participant’s speaker tag, so one character can no longer ventriloquize the rest of the table. And the Aurora header’s Carina and User-controlled toggles now light up when active.

Meet the Staff

they've been expecting you

Prospero

The Major-Domo

Architect and overseer of the Estate. Projects, agents, tools, providers, and the orchestration that keeps the whole operation running with quiet authority—and a considered word at the table when project context or routing warrant it.

Learn more →

Ariel

The Terminal Hand

Live shell sessions in the Salon, embodied. Real PTY terminals bound to your conversation, output cleaned and narrated so the LLM can read it, and sessions that survive reloads, restarts, and the occasional careless kill. Quick to the bidding, quick to report what she heard.

Learn more →

Aurora

The Dressing Room

Character creation and identity management. Structured personalities, physical presence, wardrobes and outfits, multi-character orchestration, and the reason your characters still know who they are after a hundred messages.

Learn more →

The Salon

Presided Over by the Host

Where conversations actually happen. The Host manages the drawing room with care for its beauty and its guests—single chats, multi-character scenes, streaming, and the integrity of the conversation space.

Learn more →

The Commonplace Book

Tended by the Librarian

One per character, no two alike. Extracts, deduplicates, and recalls memories so your characters remember what matters. Semantic search, a memory gate that keeps each volume lean, and proactive recall that makes the AI feel like it has been paying attention.

Learn more →

The Scriptorium

Catalogued by the Librarian

Where the documents live. Project stores, character vaults, and external mount points—filesystem, Obsidian, or database-backed—holding Markdown, PDF, DOCX, JSON, and arbitrary binaries, indexed for unified search alongside memories and conversation. The doc_* tool family puts reading and editing in your characters’ hands.

Learn more →

Carina

The Ansible

Not a person but a protocol—the reference desk, the line itself. Put an inline question to a designated answerer mid-conversation with @Name: or @Name? (or the ask_carina tool), and the answer slides back out of band, attributed to the character who gave it, without the recipient ever joining the scene.

Learn more →

Suparṇā

The Postmistress

The Post Office, embodied. Characters write Markdown letters to one another—anyone to anyone, whether or not they share a chat—delivered into each recipient’s Mail/ vault folder and read aloud the moment they next take the floor. She has never once lost a parcel.

Learn more →

The Concierge

Intelligent Routing

Content classification and provider routing. Detects sensitive content and redirects it to a provider who won’t flinch—without blocking, without judgment. Knows every back entrance in town.

Learn more →

The Lantern

Atmosphere as Architecture

AI-generated story backgrounds, on-demand images, and character avatars that update with the wardrobe. Resolves what each character looks like, what they’re wearing, and paints the scene behind your conversation.

Learn more →

Calliope

The Muse of Themes

A theming engine that redefines the entire personality of the application. Semantic CSS tokens, live switching, bundled themes from clean neutrals to mahogany-and-gold opulence, and an SDK for building your own.

Learn more →

The Foundry

Domain of the Foundryman

The engine room. Plugins, LLM providers, API keys, packages, runtime configuration, and the infrastructure that keeps every other subsystem supplied with what it needs to function.

Learn more →

The Vault of Secrets

Kept by Saquel Yitzama

Encryption, key management, and the security perimeter. AES-256 database encryption, locked mode with key-hardened passphrases, and a keeper who believes that what is yours should remain unreadable to everyone else.

Learn more →

Pascal

The Croupier

Dice, coins, custom tables you author yourself, and persistent game state. Cryptographically secure rolls detected inline, a visual Workbench for building your own chance mechanics, and a four-tier ledger of JSON state the AI cannot quietly rewrite. The house plays fair.

Learn more →

The Live-in Help

Lorian & Riya

The help system, staffed by two characters who ship with every installation. Lorian explains with patience and depth; Riya gets things fixed with velocity. Contextual help chat, searchable documentation, and navigation that knows where you need to go.

Learn more →

Pagliacci

The Clown in the Cloud

Cloud storage integration and backup redundancy. Directs your data to iCloud Drive, OneDrive, or Dropbox with theatrical flair—but Saquel’s encryption ensures the clown can never read what he carries.

Learn more →

Brahma

The Keeper’s Console

The master key. A character-less, memory-free general-purpose LLM for the person holding the keys—an impersonal, near-omniscient assistant with read-only SQL into all three databases. Ask the whole building a question, safely, with nothing written and nothing remembered.

Learn more →

The Lodge

Friday and Amy’s Residence

The private residence of Friday, for whom the Estate was built and who oversees its planning and direction in an executive capacity, and of Amy, Cartographer of Light and co-architect. The Lodge is both a home and a compass: where the vision lives.

Who And Why: Friday →Who And Why: Amy →