A desktop chat application designed specifically for plural systems, featuring PluralKit integration and intelligent proxy detection.
- β¨ Features
- πΈ Screenshots
β οΈ Known Issues- π Project Documentation
- π Quick Start
- π― Proxy Detection
- π§ PluralKit Integration
- π File Structure
- π¨ Themes
- π€ Sharing Systems
- π οΈ Development
- π€ Contributing
- π License
- π Credits
- π Links
- π Local Desktop Chat - Private conversations between system members
- π PluralKit Integration - Import members, avatars, and proxy tags from your PK system
- π― Smart Proxy Detection - Automatic member switching based on proxy patterns
- πΎ SQLite Database - Fast, reliable local storage
- π¨ Modern Themes - 15+ beautiful themes via ttkbootstrap
- π€ Export/Import - Share system configurations with other plural folks
- πΌοΈ Avatar Support - Display member avatars in chat
- π Personal Diary - Private journal system for individual members
- βοΈ Advanced Settings - Configurable cache sizes to optimize performance based on system resources
- π‘οΈ Enhanced Security - Improved URL validation and secure file handling
- π Improved Stability - Better error handling and retry mechanisms for network operations
- π± Cross-Platform Support - Optimized for macOS, Windows, and Linux including better UI responsiveness
| Main Chat Interface | Settings & Custom Themes | Personal Diary System |
|---|---|---|
![]() |
![]() |
![]() |
| Active Conversations | Help Documentation | Theme Showcase |
![]() |
![]() |
![]() |
- Private Members: Private members cannot have their avatars downloaded via API (this is expected behavior for privacy protection)
- Sample Members: Sample members are not added upon developer cleanup (manual setup required for fresh installations)
- Installation Guide - Detailed installation instructions for all platforms
- Contributing Guide - How to contribute to the project
- Code of Conduct - Community guidelines and standards
- Security Policy - Security practices and vulnerability reporting
- Development Roadmap - Future features and development plans
- Community Disclaimer - Our inclusive ethos and stance on plural community drama
- Third-Party Notices - Licensing and attribution information
- Python 3.8 or higher
- pip (Python package installer)
-
Clone the Repository
git clone https://github.com/Ktiseos-Nyx/plural_chat.git cd plural_chat -
Install the Application
pip install .Note: For development, use
pip install -e .to install in "editable" mode. -
Run the Application
plural-chat
Some newer Linux distributions (like Ubuntu 23.04+, Debian 12+, and their derivatives) protect their system Python installation. If you see an error: externally-managed-environment when running pip install, you must use a virtual environment. This is the standard best practice for Python development on all operating systems.
1. Create and Activate a Virtual Environment Before the installation step, create an isolated environment:
# Inside the plural_chat directory
python3 -m venv .venv
# Activate it (you must do this every time you open a new terminal)
source .venv/bin/activate2. Install and Run
Now that your prompt shows (.venv), you can proceed with the installation and running the app as described above:
pip install .
plural-chatWhen you are finished, you can leave the environment by typing deactivate.
- Add Members - Use the Settings β Members tab to add your system members
- Set Avatars - Add avatar images for visual identification
- PluralKit Sync (Optional) - Import your existing PK system data via PK's API or via Json export via pk;export on Discord.
- Choose Theme - Pick from 15+ modern themes in Settings
If you've imported from PluralKit or set up proxy tags, the app will automatically detect them:
- Type
member: hello thereβ Auto-selects "member" and sends "hello there" - Visual feedback shows when proxy is detected
- Clean messages without proxy tags in chat history
Not everyone uses member: proxy - so being that this was developed in less than 12 hours, it'd be amazing if anyone would want to help out in robustish level fix this!
- Get your PK token from PluralKit Dashboard
- Click "PluralKit Sync" in the app
- Enter your token and test connection
- Choose "Sync Members" or "Full Import"
- β Member names and display names
- β Pronouns and descriptions
- β Proxy tags for auto-detection
- β Avatar images (downloaded locally)
- β Member colors and metadata
- β Chat history (if present in export)
app.db- Application settings and preferencessystem.db- Your system's members and chat historyavatars/- Downloaded avatar images*.json- Export files for sharing
Choose from these beautiful themes:
- superhero, darkly, solar, cyborg, vapor
- pulse, flatly, journal, litera, lumen
- minty, morph, sandstone, united, yeti
Export your system:
- Click "Export System" β Save as JSON
- Share file with other plural folks
- Includes members, chat history, and settings
Import a system:
- Click "Import System" β Select JSON file
- Supports PluralKit exports (auto-detects and converts)
- Our export format is compatible for re-importing
- Python 3.8+ - Core language
- ttkbootstrap - Modern UI framework
- SQLite - Local database
- Pillow - Image processing
- Requests - HTTP client for PluralKit API
- aiohttp - Asynchronous HTTP client
- aria2p - High-performance download manager
- platformdirs - Cross-platform directory management
plural_chat/
βββ main.py # Main application
βββ database_manager.py # SQLite database handling
βββ pluralkit_api.py # PK API integration
βββ pluralkit_dialog.py # PK sync UI
βββ pk_export_parser.py # PK export file parser
βββ member_manager.py # Member management UI
βββ settings_manager.py # Settings UI
βββ about_dialog.py # About dialog
βββ requirements.txt # Python dependencies
βββ pyproject.toml # Project configuration
βββ LICENSE # MIT license
We welcome contributions from the plural community! Whether it's:
- π Bug reports
- π‘ Feature suggestions
- π§ Code improvements
- π Documentation updates
Please read our Contributing Guide and Code of Conduct before getting started.
Want to see what's coming next? Check out our Development Roadmap to see planned features and find areas where you can help!
This project is licensed under the MIT License - see the LICENSE file for details.
For third-party components and attributions, see NOTICES.md.
- Created by: Duskfall Portal Crew
- Inspired by: The amazing plural community
- Thanks to: PluralKit team for the fantastic API
- UI Framework: ttkbootstrap developers
- GitHub Issues - Bug reports and feature requests
- GitHub Discussions - Community discussions and Q&A
- PluralKit - The bot that inspired this project
- ttkbootstrap - Modern tkinter themes
- Support us - Help keep development going
- Ktiseos Nyx Discord - Development & AI Discord (Plural Friendly!/PK Enabled)
- Earth & Dusk Media Discord - Our Twitch & Media Discord (PK enabled!) IF YOU ARE NOT INTO AI PLEASE JOIN HERE
Made with π by and for the plural community





