- Project Status
- Screenshots
- Features
- Getting Started (Download & Play!)
- Software Stack
- Getting Started (Source Code)
- Feedback and Contributing
- Documentation
- Troubleshooting
Serene Pub is a modern, customizable chat application designed for immersive roleplay and creative conversations. Inspired by Silly Tavern, it aims to be more intuitive, responsive, and simple to configure.
Primary concerns Serene Pub aims to address:
- Reduce the number of nested menus and settings.
- Reduced visual clutter.
- Manage settings server-side to prevent configurations from changing because the user switched windows/devices.
- Make API calls & chat completion requests asyncronously server-side so they process regardless of window/device state.
- Use sockets for all data, the user will see the same information updated across all windows/devices.
- Have compatibility with the majority of Silly Tavern import/exports, i.e. Character Cards
- Overall be a well rounded app with a suite of features. Use SillyTavern if you want the most options, features and plugin-support.
-
Clean, intuitive chat interface
-
Sampling/character list/token stats
-
Connections/models/character editing
-
System prompt/persona/response
-
Mobile chat view
-
Mobile characters view
Toggle night mode on or off with over 20 themes!




Alpha: Serene Pub is in early development. Expect bugs and breaking changes. If you are a developer or comfortable with manual setup, your testing and feedback are appreciated!
- Manage sampling and context limits (settings can be individually enabled/disabled)
- Manage roleplay/system prompt instructions
- Mobile responsive view
- Day/night mode & themes
- Chats: create/delete, send persona message, auto character response, edit/delete messages, streaming, regenerate, manual response, hide message, live token/history stats
- Create, manage & import (Image Card Files supported; JSON not yet)
- Create & manage personas (import/export not yet implemented)
- Home page setup guide
- Mobile responsive layout
- Manage context settings (add your own, only one default provided)
- Group chats, continue conversation, trigger response from specific character
- Connect to your favorite API (see supported options)
- App/user settings
- Lorebooks+ - World lore, character lore, timeline/story date tracking, multi-character linking
- Character/chat tags
- Multi-user logins & group chats
- Chat summarizing
- Chat/lore vectorization
- User/chat backgrounds
- Story narration/system instructions
- Screen reader support
- Lorebooks+ features: custom calendars, "eras" historical categories and more
- Download the latest release for your operating system here.
- Extract the archive where every you desire, there's nothing to install.
- Read the INSTRUCTIONS.txt file to launch Serene Pub on your OS.
- Once launched, the node runtime will download automatically and start Serene Pub.
- Access SerenePub on your host machine from http://localhost:3000 or https://0.0.0.0:/3000
- You should be able to access Serene Pub from other devices on your local network as well.
- SvelteKit (Svelte 5)
- Socket.io via sveltekit-io
- Tailwind, themes, and components via Skeleton UI
- ORM, SQLite, and migrations via Drizzle ORM
- Bun for package management
- Download or clone this repository.
- Open a terminal and navigate to the directory.
- Run
bun i
to install dependencies. - Run
bun run db:migrate
to generate the database. - Run
bun run dev
to start the server. - Open
http://localhost:5173
in your browser. - Use the UI to set up connections, characters, personas, and chats.
Feel free to clone & contribute! Bug fixes are appreciated. For new features, please propose your strategy before starting work.
- Open an issue for feedback, bugs, or questions
- Contact on Reddit
- Discord:
285999266088878080
Here is a WIP documentation. At the moment, prioritization is focused on adding documentation for features that are fundamentally different than Silly Tavern's paradigms.
Serene Pub abstracts how groups of information (i.e. characters, personas) are structured to ensure predictability for the LLMS to parse and understand.
How-ever placement is highly granular and customizable.
{{#systemBlock}}
Instructions:
"""
{{instructions}}
"""
Assistant Characters (AI-controlled):
'''json
{{{characters}}}
'''
User Characters (player-controlled):
'''json
{{{personas}}}
'''
Scenario:
"""
{{scenario}}
"""
{{/systemBlock}}
{{#if wiBefore}}
{{#systemBlock}}
{{wiBefore}}
{{/systemBlock}}
{{/if}}
{{#each chatMessages}}
{{#if (eq role "assistant")}}
{{#assistantBlock}}
{{name}}: {{{message}}}
{{/assistantBlock}}
{{/if}}
{{#if (eq role "user")}}
{{#userBlock}}
{{name}}: {{{message}}}
{{/userBlock}}
{{/if}}
{{/each}}
{{#if wiAfter}}
{{#systemBlock}}
{{wiAfter}}
{{/systemBlock}}
{{/if}}
Context role blocks, i.e. {{#systemBlock}}...{{/system}}
can be arranged how-ever you prefer, spliting the contents as you wish.
Information for all characters can be inserted with a label that explains to the assistant what this information represents, i.e. Assistant Characters (AI-controlled): {{{personas}}}
Complex information is formatted as JSON. This keeps the data structured and predictable for the model. It also prevents arbitrary text formatting from character descriptions from confusing the overall prompt structure (a common issue with imported cards.)
Simple information, such as prompt instructions, or scenarios are wrapped in triple quotes to help prevent the model from getting confused from arbitrary text formatting.
To create a new Context Config, click the + button and enter a new name. The currently active Context Config will be cloned.
With your Context Config set, you can then select the appropriate Prompt Format in the Connections sidebar. Prompt Format is selected per-connection so you can ensure your model is always using the correct format regardless of context template.
Data is saved automatically to the following directory, based on your OS:
- macOS:
~/Library/Application Support/SerenePub
- Windows:
%LOCALAPPDATA%\SerenePub
- Linux:
~/.local/share/SerenePub
Key files:
- Database:
./data/main.db
- Character avatar:
./data/users/[userId]/characters/[characterId]/avatar.png
- Persona avatar:
./data/users/[userId]/personas/[personaId]/avatar.png
Avatars must be uploaded through the app; manual placement will not work.
- Why is my token count exceeding the limit?
- Context Tokens set in Sampling is too low, be sure to set a healthy context limit that your model & machine can handle. The oldest messages get truncated when the estimated token count exceeds the threshold. By default, the number of tokens in the compiled prompt are estimated. You can set a more accurate token counter in the Connections sidebar.

- How do I review the compiled prompt before I hit send?
- In the chat input, click the "Statistics" tab, and click the "View Prompt Statistics Button"
- A modal will open where you can review how your prompt is compiled.

-
Why aren't my new settings taking effect?
- To enforce clarity on what configuration is being used and sent with your prompt, all settings have to be saved to apply any changes.
-
Why can't I save my changes?
- Default configurations, annotated with an asterisk
*
are system defaults. Clone the configuration to begin customizating. - This is to ensure there are reasonable defaults always available, incase you feel that you've gotten lost or made a mistake.
- Default configurations, annotated with an asterisk