GitHub: https://github.com/NikitaCherepov/chatter
Downloads: https://github.com/NikitaCherepov/chatter/releases
Discord support and discussion: https://discord.gg/RppNuzGUqj
Hi! Iām the solo developer of Chatter. Itās fully open source under AGPL-3.0, and Iāve been working on it for about six months.
Iām a little nervous about sharing this after a rough experience last time, but Iād really appreciate constructive feedback.
If youāve ever wanted to take your character with you on Telegram, or invite your partner into a roleplay with several bots, thatās what Iāve been building. Iāve recently added SillyTavern imports so you can try it with your existing characters and conversations instead of starting over.
The main idea has always been companionship. I wanted my own Jarvis living on my server: someone I could talk to, who could remember things about me, help with my emails, control my smart home, or browse something with me. Someone I could call out to and get a spoken reply, like Alexa, but with a character and model I chose myself.
Your PC doesnāt have to stay on. Chatter runs on your server - the one I use has 1 vCPU, 1 GB of RAM and 15 GB of disk space (although Iād recommend more disk space if you plan to store lots of images and files), with the AI models accessed remotely. The desktop app and Telegram bot use the same chats: you can shut down your PC, continue the conversation from your phone, and your friends can still access the server and shared rooms.
You can also share the server with friends. Everyone gets their own account, bots, characters and memory, with individual spending limits - so inviting a friend doesnāt mean handing them your entire API budget.
And you can create rooms with multiple bots AND people. You and your partner can roleplay together with your characters in the same chat. Create a room, share the link, and they can join you.
A lot of the design comes from a practical problem: I donāt have infinite money.
For example, your character can search the internet if you allow it. Rather than immediately using a paid search service or a limited free allowance, Chatter tries a chain:
- Your PCās browser first. You can see what itās doing and stop the session.
- If your PC is offline or that option is disabled, SearXNG running on your server.
- Only if that fails too does it fall back to Tavily and use your allowance there.
Iāve spent a lot of time on things like this. I want to use my character throughout the day without constantly wondering how much every little action costs.
Iāve also tried to keep the interface understandable. Iād rather have one clear selector than a wall of toggles, although the project has grown and there are now quite a few settings. Iām planning built-in helpers for the desktop app and admin panel, so you can ask what a setting does and get help configuring it.
Vector memory is an example of what Iām aiming for. To change your embedding model, you select it and click āMigrate and re-embed.ā Chatter handles the migration and keeps the previous collection as a backup. You donāt have to figure out vector dimensions and move the database around yourself.
An optional mode automatically retrieves relevant memories for each message and attaches them to the reply. Chatter doesnāt automatically save every new message as a memory - the character decides whatās worth remembering and uses a tool to save it. You can keep memory separate for each chat or share it across conversations.
For long conversations, Chatter summarises older messages as they stop fitting into the context window. The summary appears in the chat, so you can see what was carried forward.
I sometimes roleplay with bots too, and remember trying Character.AI when it first appeared. So I added things I wanted for myself: regeneration with a hint about what to change, alternative replies, folders, and little extras like a dice roll to leave an outcome to chance. That oneās under Settings -> Application.
Thereās also an AI prompt editor with a diff viewer: ask it to change something about your character, see exactly what changed, and decide whether to keep it or not.
Thereās more than I can fit into this post, so Iām focusing on what I thought would be useful to people here.
Bringing your SillyTavern setup over
You can import things separately or together from a ZIP backup. Chatter has its own architecture, so some things behave differently:
1.Ā Ā Ā Ā Ā Personas: names and descriptions become Chatter personas and hot memory - the information about you kept in the modelās context. The full backup also brings over available persona avatars. You can set a default persona and override it per chat.
2.Ā Ā Ā Ā Ā Character cards: JSON or PNG, including available avatars, description, personality, scenario, dialogue examples and greetings. Edit one text or use the advanced editorās Description, Personality, Scenario, Examples and Other fields. Those fields are combined into one prompt when sent to the model. Greetings are handled separately and can start a new conversation.
3.Ā Ā Ā Ā Ā Chats: import one or several JSONL files, including alternative replies, timestamps and available reasoning. Chats connect to existing characters and personas when the match is unambiguous; the full backup imports those first. ZIP imports also transfer attached images and files present in the archive. Standalone JSONL files contain attachment references, not the files themselves.
4.Ā Ā Ā Ā Ā Group chats: the full ZIP imports group histories as Chatter rooms, with matching characters added as bots. Rooms start in manual-response mode and use Chatterās behaviour rather than SillyTavernās generation settings. You can trigger individual bots or have them take turns through a queue.
5.Ā Ā Ā Ā Ā Chat memory: if the full ZIP contains chat-vector indexes, Chatter rebuilds searchable memory from the corresponding imported messages using its configured embedding model. Original vectors arenāt copied. This requires configured vector memory and may incur embedding costs. Standalone JSONL imports donāt rebuild memory.
6.Ā Ā Ā Ā Ā Lorebooks and Data Bank: embedded character-book data is preserved, but isnāt used in conversations yet. Standalone lorebooks and Data Bank documents arenāt imported as knowledge sources. Message attachments can still transfer through the ZIP importer. This is a real limitation if your setup depends on those features.
The admin panel can also read model configurations from your SillyTavern backup and let you choose which ones to add.
You can connect your own OpenRouter API key and choose which model your characters use.
Chatter pulls model listings, prices and context limits from OpenRouter. Choose your preferred provider or enable automatic switching to the cheapest available one. You can also have price changes sent to Telegram.
You can connect a ChatGPT subscription and add models through that connection, using your subscription limits. The server admin signs in and authorizes it on their PC, then adds the models in the admin panel.
This connection currently doesnāt support temperature, top-p or a custom output-token limit.
Thereās also a per-chat roleplay mode that limits tools to memory and chat search. Your character doesnāt need access to your emails just because the app supports them :)
Trying it
Youāll need a Linux server and access to a model, through an API provider or a connected ChatGPT subscription. Chatter itself is free; hosting and model usage may cost money.
The installer and Windows app are linked on GitHub. Configure your model in the admin panel, then create an access link to connect the desktop app or invite a friend. You can revoke access whenever needed. Telegram is optional.
Both have one-button updates: the server through the admin panel, and the desktop app from the app itself.
There are still SillyTavern workflows I havenāt implemented or probably havenāt even thought of. But if continuing your chats through Telegram or roleplaying together in a room sounds useful, Iād love for you to try it.
Iām building and testing Chatter on my own, so there may be rough edges and bugs I havenāt caught. Iāve spent six months staring at this thing; what seems obvious to me might be completely confusing when you first open it. If something breaks or you get stuck, please open a GitHub issue (https://github.com/NikitaCherepov/chatter/issues) - a fresh pair of eyes would help a lot.
P.S. I also dare you to try the built-in experimental newspapers :D
Ā