Chrysalis

Roleplay Official

A roleplay studio for power users, built as a Chrysalis app. It works with every model provider Chrysalis connects to, and like every app you can ask the agent to change it.

Ask the agent to inspect or edit characters, personas, presets, lorebooks, regex, chats, groups, settings, library collections, and data-bank documents. Roleplay includes a focused skill for each area, a data catalog, templates, and a field guide. The agent loads the relevant skill, inspects the target, and uses its revision when saving. Helpers preserve extra fields and inactive swipes. Structural chat actions use the existing app routes. Existing installs receive missing agent templates during updates; saved characters, personas, presets, chats, and settings stay in place. UI saves preserve extra metadata, combine rapid edits, and sync after pending writes finish so text and switches stay steady.

#Install

  1. On first start, pick Roleplay on the welcome screen, or find it later in the launcher's Store.
  2. Add a model connection in Settings > API connections.
  3. Launch Roleplay and start a chat.

The source is at ProjectChrysalis/Roleplay-Chrysalis.

#Features

ChatsStreaming replies with swipes, continue, impersonate and stop. Edit, hide, bookmark and branch any message. Group chats with turn order and muting.
Characters and personasA tabbed character editor, alternate greetings, tags and folders, personas you can lock to a chat or character, expression sprites and a card marketplace browser.
Prompts and memoryPresets with a drag-and-drop prompt manager, lorebooks, regex scripts, an Anthropic prompt-cache depth control, a running chat summary, a facts vault and a data bank.
MoreTool calling, image generation, text to speech, quick replies, themes, a command palette, and a layout made for phones.

Swipes slide the avatar and reply out, then bring the next reply in from the opposite side. Generating a new swipe uses the same transition. Faster repeated swipes shorten the animation; Reduced Motion skips it.

Stop keeps the reply received so far. Provider errors keep partial replies too and show the error. Stopping Continue extends the current reply. If saving fails, the reply stays on screen with a Retry action.

When Roleplay exports a file, click Save file in Chrysalis to finish the download.

Roleplay 4.19 requires Chrysalis 1.0.3 or newer.

In a preset’s Reasoning tab, Thinking history chooses Preserve across turns (default) or Each reply only. Preserve sends saved thinking and provider signatures with later turns using the same provider and model. Each reply only keeps thinking for viewing. Providers decide which native thinking they retain. Compact history folds readable thinking into text and cannot retain native signatures.

Expand thinking to see Copy and an actions menu above its scrolling text. The menu contains Edit thinking and Remove all thinking.

Edit thinking changes the saved text and clears signatures that no longer match. Edited thinking is sent as ordinary context in Preserve mode. Remove thinking clears the reply’s thought text and signatures while keeping reply text and tool results. Each swipe keeps its own thinking, including replies stopped mid-stream. Switching swipes restores the chosen reply’s thinking and measured thinking time. Older replies can reuse saved thinking text, but missing signatures cannot be recovered.

In Connections, Test connection sends a short message to the model in use and shows the response time or the provider error. Tests do not use your chat or preset.

Generation data shows the preset used for the selected reply. The name is saved when generation starts and stays the same if you switch or rename presets. Older replies without a saved name show Not recorded.

#Notifications

In Roleplay’s Settings > Notifications, choose popup types and areas, such as chat actions, imports, memory and tools. Popups start at the bottom; Position lets you choose another corner or center. Popups use neutral borders. A popup appears when its type and area are both on, except errors, which follow only the Errors switch. Turn off Successes, Tips and information, and Progress to keep only warnings and errors, or turn off Show notifications to hide all popups. Preferences save automatically.

#Bring your characters

Roleplay imports PNG and JSON character cards (V2 and V3), chat transcripts, presets, lorebooks, regex scripts, personas and themes in the formats the community already shares.

#Find characters

Marketplace searches Chub, Datacat, Wyvern and Character Tavern with character previews, tags and filters. Previews render Markdown, with Core, First messages, Dialogue, Lorebook and Advanced tabs, embedded entry previews, and import controls that stay visible on mobile. Character Tavern uses its current public catalog and imports complete downloadable cards. Its results follow guest content settings. Wyvern supports adult filters and public character search, tags, popularity, newest, likes and message counts, with direct imports of artwork, alternate greetings, embedded lore and regex. Private definitions stay blocked. Chub cards download directly. Public Datacat cards import directly with artwork, attribution and embedded lore. Creator restrictions and unavailable definitions remain blocked. Search character or creator names and tags, or browse a creator’s catalog. Its official file-download endpoint may still require verification on Datacat.

Character imports report embedded lorebooks and regex scripts. Cards with embedded lore ask Import or Later. Import creates a book linked to that character. Later keeps the lore inside the card without activating it; import it from the character editor’s Lorebook tab when ready. Embedded regex starts off unless you choose Enable embedded regex on import; scripts disabled in the source stay off. Opening a chat shows a notice for linked lore and scoped regex, once per character or preset per page session, with a shortcut to review it. The character editor shows linked lore and script counts at the top, with switches for each script. Preset imports ask Enable or Keep off when scripts are included. Only the active preset shows a compact regex count and a shortcut to the Regex manager. The manager groups scripts by scope, owner and folder, with search and direct enable switches. Imported folders survive saves and exports. Standalone regex imports use the same enable choice. Open a script to edit and test it in Tools > Regex, or search by script name, owner and scope.

Characters > Import > From URL accepts Chub, CharacterHub, Pygmalion, Realm and AI Character Cards links, one per line. These are URL imports; Marketplace search covers Chub and Datacat. PNG and JSON files can also come from other apps that export character cards.

Characters remembers your grid or list view and sort order. Recently imported uses the local import time; Recently chatted uses chat activity. Cards imported before import times were recorded sort after dated imports.

#Large imports and card images

With an updated engine, archive imports upload in 8 MB chunks and read batches from disk. Progress shows bytes uploaded and files processed. A dropped connection retries from the last chunk the engine received. Pause from the progress notice, then select the same file to continue.

Once the archive is uploaded, Roleplay lists what it found, with a file count per category: characters, lorebooks, presets, instruct and context templates, regex scripts, personas, groups, chat images, chats, group chats, quick replies, themes and data bank files. Untick anything you do not want. Instruct and context templates start unticked and become presets of their own. Folders outside these categories, such as backgrounds and thumbnails, are never read.

The engine then runs the import itself, so you can leave Settings, reload or close the page and it keeps going. Settings > Import shows its progress with Pause, Resume and Cancel. An import that was running when the engine stopped picks up again the next time Roleplay opens. Cancel keeps what was already imported.

A zipped data folder from another app imports linked up: chats find their character by the card's file name, group chats find their group, expression sprites in a character's folder join that card, cards that name a world book are linked to it, and a chat locked to a persona stays locked. Personas, their pictures, global regex scripts and the quick reply sets on show come from that app's settings file. Quick reply sets import without their automation. Personal tags keep their colors and folder display. Extra character lorebooks stay linked, including books shared by thousands of characters, and globally selected books stay active. Chat images stored in the archive are copied before transcripts and attached to their messages; filenames that differ only in case keep their own images. Remote images and videos are not downloaded. Message attachments also survive an in-app backup and restore.

Removing an imported extra sampler also removes it from generation requests. Preset imports start from clean defaults. Missing settings never inherit from the preset open in the editor.

Importing the same things again: a preset named like one you have replaces it in place, keeping its chats and scripts. A regex script you already have, either for everything or on the same preset or card, is not added again, and neither is a persona with the same name and description. Characters, lorebooks and chats import as new copies.

Large libraries load in parts. The active chat transfers in pages, separately from the library, so large transcripts can reopen too.

The archive limits are 32 GB compressed, 256 GB expanded and one million files. Large transcripts are read in slices instead of loading the whole file. Card images are limited to 64 MB. Oversized images are reported. Upload speed depends on your connection; processing speed depends on the archive contents and storage.

Cards from an archive keep their full-size image. Cards chosen as files get a 512 px copy unless Keep full-size card art is on in Settings > Import.

Card images live in separate files, shared when their contents match. Updating migrates existing cards automatically while preserving their metadata. If a migration cannot finish, the original card remains readable and conversion retries later. Portable JSON and PNG exports still include the artwork.

These limits apply to data imports. The launcher’s app backup and the in-app backup export use separate paths.

Presets and lorebooks sit in a compact tree: folders first, then everything without one. Click a folder to open or close it; open folders stay remembered. Drag any row to move it. Drop a preset or lorebook between two rows to place it there, or on a folder, open or closed, to put it at the end of that folder. Drag a folder up or down to reorder folders. A line shows where the row will land. While you drag an item, a bar under the list offers No folder and New folder. On touch, hold a row briefly before dragging. The folder button beside the search box adds a folder and lets you name it in place; double-click a folder or press F2 to rename it. Each row's menu has the same moves, and a folder's menu has Rename, Move up, Move down and Delete folder. Deleting a folder keeps its items. The order is saved with your data, so it is the same on every device. A check marks the folder containing the preset in use, even when closed. Search matches item and folder names. Folders do not affect generation or lore activation.

On a wide screen, drag the right edge of an open section to make it wider or narrower, and drag the line between a list and its editor to resize the list. Drag the edge all the way to the right, or use the button beside the close button, to fill the window. Double-click either edge to get the default size back. Sizes are remembered in this browser.

Lorebooks, personas and presets remember the last item, editor tab, expanded lore entries and scroll position in this browser tab. Connections starts with 40 models; search covers the full catalog and Show more reveals additional rows. Message model icons update when generation starts and follow the selected reply afterward. Thinking borders and Markdown dividers use higher contrast.

#Search chats

Chats searches names, titles and saved messages across your library, including chats you have not opened. Open Search filters to choose Messages only or Names and titles, or narrow results by character. Folder chips appear when you have folders. All search words must occur somewhere in the chat; use quotes for an exact phrase. Results show a highlighted excerpt and matching message counts. Click an excerpt to open that message, including older turns. Search covers active replies, so unused swipes and image prompts do not appear. Missing or unreadable chat files are reported.

The message input keeps its height while the app tab is hidden and refits when you return, resize the window or load a font.

#Backups

There are two kinds, and both keep everything on your device:

  • Roleplay's own backup in its settings exports your characters, chats, presets, lorebooks, regex scripts and personas as one zip in the common interchange formats, and restores from one.
  • An app backup from the launcher (Export app) copies the whole app: its data plus any changes you or the agent made to it. Use it to move Roleplay to another device. See Back up an app.

#Updates

Roleplay updates on its own schedule, separately from Chrysalis. The launcher shows an Update badge when a new version is out. Updating merges it with anything you changed and preserves your chats and character content. See Updating apps.

The composer’s Speak as menu shows titles beside personas with the same name and different titles.

Every chat uses the current preset and persona unless it is locked. In the chat's quick switch, Lock to this chat keeps the preset or persona on that chat, and Lock to the character's name keeps a persona on every chat with that character or group. A lock icon on the switch shows a chat is locked. Picking another preset or persona while locked moves the lock. Personas list the characters they are locked to, and the character editor shows its locked persona. Unlocked chats change with the current choice. Preset selection is saved immediately and survives refreshes.

Use the Lore button in the chat header, or Chat lorebooks in its menu, to select lorebooks for that chat. The dialog also lists the books the character brings, and the button counts both. Search the library and remove selected books using their chips. Lorebook activity shows which entries fired. These apply alongside character, persona and global lore. Branches keep the selection, and backups preserve it.

Preset selection and current chat IDs can be attached in agent Settings. See The agent.

The home page’s daily character rotates through the full character library and refreshes at midnight or when you return to the page.

Chat and marketplace images share a lightbox with pinch zoom, dragging, zoom buttons and reset. On phones it fills the screen. Connection model lists load more rows as you scroll, while search covers the full catalog.

Preset editors have extra scrolling space below their controls on phones. Numeric fields preserve an empty draft while editing, so deleting a value does not immediately refill the input.

Model prices use compact decimal formatting, keeping small rates visible without floating-point artifacts.

The Tools header and tab buttons scroll with the page, including the Regex workspace.

Markdown dividers use a brighter line. Thinking panels keep their muted text and standard borders.

Single tildes in dialogue stay visible, such as hello~. Use ~~text~~ for strikethrough.

Section drawers keep their title and contents visible throughout the closing slide, then release them once hidden.

Edit this page on GitHub