A modern instant messaging client built for PTT (Taiwan's largest BBS).
Transforming PTT's internal mail into a seamless chat experience.
No complex Telnet keyboard commands needed — chat on PTT as naturally as breathing.
Automatically transforms PTT internal mail into intuitive chat bubbles. Supports quote-reply to keep conversation context clear.
Precise background detection scans up to 200 historical messages on first login, then only incremental changes — real-time delivery with minimal system load.
Database-level isolation keeps each PTT account's chat history completely independent, secure, and reliable.
Pin important conversations, drag-and-drop reordering, block or hide contacts. Right-click menu provides multi-level operations.
The app continues running in the system tray after closing the window. Desktop notifications pop up instantly when new messages arrive.
PTT's instant waterball messages are also captured and displayed. Built-in batch deduplication ensures no duplicates or missed messages.
uPtt connects directly to PTT's official servers, using internal mail as the message transport layer — no third-party relay needed.
Messages you type in uPtt are formatted and sent to PTT servers as internal mail via PyPtt, while simultaneously saved to the local database.
A worker thread polls internal mail every 5 seconds, identifying and parsing uPtt-format messages. Built-in timestamp synchronization ensures consistent ordering.
Parsed messages are saved to the SQLite database and the UI thread is notified via Qt Signals to update in real time, displaying familiar chat bubbles.
uPtt intelligently identifies and handles different types of PTT messages.
uPtt-format messages are parsed, saved to the local database, and automatically deleted from PTT inbox to keep it clean.
Regular mail from other users is displayed as mail cards in conversations. Original mail is preserved in PTT inbox — never deleted.
PTT's instant pop-up messages (waterball) are captured and displayed as inline bubbles, with batch fingerprint hashing for deduplication.
Your data belongs only to you. uPtt collects no personal information and connects to no third-party servers.
All chat history and account data is stored exclusively in your local SQLite database — nothing is uploaded to third parties.
Connects directly to PTT's official servers (ptt.cc). The only additional connection is to GitHub API for version checking — pure and secure.
CI integrates TruffleHog scanning, Bandit static analysis, and dynamic credential detection tests to ensure sensitive information never leaks.
Release builds are signed by SignPath.io and verified by the SignPath Foundation, ensuring downloaded binaries haven't been tampered with.
No development environment needed — just download and run.
uPtt is built with Python 3.12 and PySide6. Contributions welcome.
# Clone the project
$ git clone [email protected]:uPtt-messenger/uPtt-app.git
$ cd uPtt-app
# Install dependencies
$ pip install -r requirements.txt
# Run
$ python src/run_app.py
# Test
$ pytest --cov=src/uPtt tests/
| Key | Action |
|---|---|
| Ctrl+N | Focus new conversation input |
| Ctrl+W | Close current conversation |
| Ctrl+Q | Quit the application |
| Enter | Send message |