SillyTavern MultiPlayer is an LLM chat interface that allows multiple users to chat together with one or more AI characters. It also includes a sidebar chat for users only, and many tools for the Host to control the behavior of the AI and to moderate users.
Created by RossAscends
If this software brings you and your friend's joy, donations to Ross can be made via:
Ko-fi | Patreon |
---|---|
For tech support or to contact RossAscends directly, join the SillyTavern Discord.
- Make sure Node JS is installed on your system and has access through your firewall.
- Clone this github repo into a new folder NOT the main SillyTavern folder. (
git clone https://github.com/RossAscends/STMP/
in a command line, or use a Github GUI like Github Desktop) - Run
STMP.bat
to install the required Node modules and start the server. - On the first run, the server will create an empty
secrets.json
and a defaultconfig.json
, as well as the/api-presets/
and/chats/
folders. - Open
http://localhost:8181/
in your web browser.
(instructions coming soon)
You can use Horde as an anonymous user, but that generally leads to slower response times.
To use your Horde API key in STMP, add it to secrets.json
like this (server should run at least once):
{
// some content
"horde_key": "YourKeyHere",
// some other content
}
Don't have one? Registering a HordeAI account is free and easy.
This must be done AFTER completing all installation steps above.
- Make sure your STMP server is running.
- Run
Remote-Link.cmd
to downloadcloudflared.exe
(only one time, 57MB). - the Cloudflared server will auto-start and generate a random tunnel URL for your STMP server.
- Copy the URL displayed in the middle of the large box in the center of the console window.
- DO NOT CLOSE THE CLOUDFLARE CONSOLE WINDOW
- Share the generated cloudflared URL with the guest users.
- User will be able to directly and securely connect to your PC by opening the URL in their browser.
- User can change their display name at any time using either of the inputs at the top of the respective chat displays.
- You can have a different name for the User Chat and AI Chat.
- Usernames are stored in browser localStorage.
- Chatting can be done in either chat windows by typing into the appropriate box and then either pressing the Send button (βοΈ), or pressing Enter.
Shift+Enter
can be used to add newlines to the input.- Markdown formatting is respected.
- Some limited HTML styling is also possible inside user messages.
- Users with the Host role can hover over any chat message in either chats to see editing and deletion buttons.
The host will see the following controls:
AI Config Section
Mode
can be clicked to switch between TC/CC mode, and HordeAI mode.- π = Completions
- π§ = Horde
Context
defines how long your API prompt should be. Longer = more chat history sent, but slower processing times.Response
defines how many tokens long the AI response can be.Streaming
togles streamed responses on or off.AutoAI
Toggle to determine whether the AI should respond to every user input, or only on command from the Host.Instruct
sets the type of instruct sequences to use when crafting the API prompt.Sampler
sets the hyperparameter preset, which affects the response style.API
selector to choose which LLM API to use, and anEdit
button to change its configuration.Models
allows selection of models served by the connected API.
Insertions Section
System Prompt
defines what will be placed at the very top of the prompt.Author Note(D4)
defines what will be inserted as a system message at Depth 4 in the prompt.Final Instruction(D1, "JB")
defines what to send as a system message at Depth 1 in the prompt.
Currently STMP supports Text Completions (TC), Chat Completions (CC), and HordeAI.
STMP has been tested with the following APIs:
- TabbyAPI
- YALS
- KoboldCPP
- Aphrodite
- Oobabooga Textgeneration Webui (OpenAI compatible mode)
- OpenRouter is supported in CC mode.
- OpenAI official API
- Anthropic's Claude
Other LLM backends that provide an Open AI compatible API should wotk with STMP.
- Select
Add new API
from theAPI
selector to open the API Editing panel. - A new panel will be displayed with new inputs:
a.
Name
- the label you want to remember the API as b.Endpoint URL
- this is the base server URL for the LLM API. If the usual URL does not work, try addingv1/
to the end. c.Key
- If your API requires a key, put it in here.API Keys are saved in config.json. Do not share this file!
d.Endpoint Type
- select from Text Completions or Chat Completions as appropriate for the API endpoint. e.Claude
- select this if the API is based on Anthropic's Claude model, because it needs special prompt formatting. f.Close
- will cancel the API editing/creating process and return you to the main AI Config panel. g.Test
- sends a simple test message to the API to get a response. This may not work on all APIs. h.Save
- confirms the API addition/edit and saves it to the database. i.Delete
- removes the APi from the database. - When all of the fields are filled out, press
Save
to return to the main Control panel display.
- System Prompt: Inserted into the top-level system prompt.
- D4 "Author's Note": inserted above the 4 most-recent pre-existing chat history messages.
- Optional checkbox to insert the Description of the next-responding character here as well.
- D1 "Jailbreak": inserted above the most recent pre-existing chat history message.
- D0 "Post-history Instructions": inserted after all pre-existing chat history messages.
- Response Prefill: Prefixes the upcoming AI response.
- If you want to add more presets for Instruct formats or hyperparameter Samplers, put the JSON file into the appropriate folder:
- Samplers go in
/public/api-presets/
- Instruct formats go in
/public/instructFormats/
- It's strongly recommended to look at the structure of STMP's default preset files.
- SillyTavern preset files will not work.
- A list of past AI Chats, click one to load it.
- Information listed with each past session item:
- AI characters in the chat history
- Number of messages in AI Chat
- Timestamp for the last message
- The list is ordered in reverse chronological (newest chats first)
- Place any SillyTavern compatible character card into the
/characters/
folder and restart the server. - Drag-drop a v2 card spec character card over the chat to import.
- Characters can be added, removed, edited, or swapped out inside the π panel.
- Changing the character roster does not require restting the chat.
- Hosts will see a (π§ ) next to Character Selectors. This will open a popup with the character definitions.
- STMP handles three types of character definitions:
Name
- What is displayed as the character's name in the chat.Description
- What goes into the prompt at either the top, or at D4 if 'D4 Char Defs' box is checked.First Message
- What gets auto-inserted into a new chat with that character.
Embedded Lorebook
- is currently not used by STMP, but is visible for user reference.- (ποΈ) at the top of the character definition panel will show Legacy Fields
- Legacy Fields are read-only. STMP does not use them.
- Legacy fields = Personality, Example Messages, and Scenario.
Save
will update the character definitions.Close
will close the popup with no changes.
Why are Personality, Scenario, and Example Messages considered 'Legacy'?
- Personality and Scenario are outdated distinctions without a meaningful purpose, and should be incorporated into the Description.
- Example Message can also be incorporated into the Description. We recommend doing so in the form of AliChat.
- (π¨) (all users) Three inputs for Hue, Saturation, and Lightness to define the base color for STMP UI theming.
- (πΆ) (all users) is a toggle that will play/stop a looping background audio track ("Cup of COhee" be Deffcolony). This helps mobile keep their websocket connection active when they minimize the app.
- (π€) is a toggle to completely disable guest inputs for both chats.
- (ποΈ) is a toggle to allow or deny markdown image display.
- (π’) lets the Host send a large notification to all connected users.
- The right side of the screen contains two users lists, one for each chat.
- Users with the Host role will have a π next to their name.
- The AI Characters will have a π€ next to their names in the AI Chat User List.
- (πΌοΈ) toggles the chat windows between three modes: maximize AI chat >> maximize User Chat >> return to normal dual display.
- (π) forces a page refresh.
- (
βΆοΈ /βΈοΈ) allows for manual disconnect/reconnect to the server. - (π) opens a text box for input of the Host key in order to gain the Host role.
- Once a vlid key has been entered, the page will automatically refresh to show the host controls.
- The Host key can be found in the server console at startup.
- After the user enters the key and presses Enter, their page will refresh and they will see the Host controls.
- (β) clears the saved Usernames and UniqueID from localStorage.
- If you are not the primary Host you will lose any roles you were given.
- You will be asked to register a new username next time you sign in on the same browser.
- (ποΈ) Host only, Clears either chat.
- clearing the AI Chat will automatically create a new chat with the selected Character.
- (π§Ή) All users, visually clears the chat to reduce UI lag, but does not actually destroy anything.
- (β³) Sets the chat 'cooldown' for regular members.
- During the delay period the (βοΈ) for that chat will become (π«), and no input will be possible.
- (π€) Manually triggering an AI response without user Input
- (βοΈ) Deleting the last message in the AI Chat
- (π) Retry, i.e. Remove the last chat message and prompt the AI character to give a new response.
- Edit button to edit the message. (AI Chat only, at the top right of the message)
- Delete button to delete the message. (at the top right of the message)
- Continue button (AI Chat only, AI message only, at the end of the message contents)
Smarter retry logic (add entity metadata to each chat message; only remove the last AI response)
Toggle for locking AI chat for users? (this is already kind of done with AutoResponse off)- Turn-based Mode with Drag-sort list to set input Order
- Ability to rename chats.
- ability for Host to edit a User's role from the UI
- ability to change the max length of chat inputs (currently 1000 characters)
- make control for AI replying every X messages
- make control for host, to autoclear chat every X messages
disallow names that are only spaces, punctuations, or non ASCII (non-Latin?) charactersrequire at least 3? A-Za-z characters
- disallow registering of names that are already in the DB
- character creation in-app
- create instruct preset types in-app
- I/O for full app setup presets (includes: single API without key, )
- basic use of character-embedded lorebooks
make control for guests to clear DISPLAY of either chat (without affecting the chat database) to prevent browser lag- auto-parse reasoning into a collapsable container
- highlight exact username matches in AI response with their color
- fade out users in user chat list who havent chatted in X minutes (add a css class with opacity 50%)
- fade out users in ai chat list who are no longer connected, or are faded out in user list (same)
- show which users in the User Chat are using which name in the AI Chat
- add a link to the User message that the AI is responding to at the top of each AI message.
- When an AI resposne is triggered by UserX's input, UserX sees that response highlighted in the chat
- add external folder selector to source characters from.
Multiple AI characters active at once (group chats)- export chats as text, JSON, or SillyTavern-compatible JSONL?
UI themes- Bridge extension for SillyTavern to enable intra-server communication?
- send images from local drive to user-only chat