A terminal-based encrypted chat system for LAN and remote connections
Project description
ChaTerminal
ChaTerminal is a cross-platform terminal-based encrypted chat system built with Python. It supports multiple users on a local network or via tunneling tools like Ngrok or LocalXpose, providing a lightweight and interactive chat experience — right from the terminal.
Features
- Encrypted communication using custom crypto utilities
- Multi-user chat over LAN or tunneled internet
- Color-coded messages with timestamp formatting
- Auto-complete for commands via
readlineand TAB - Direct messaging using
/dm <user> <message> - Username renaming with
/rename <new_name> - List online users using
/list - Admin controls:
/kick <user>(admin-only) - Emote support:
/me <action> - Help menu:
/helpdisplays command reference - User join/leave notifications
- Sound alert for DMs and admin actions
- Graceful client disconnect and server feedback
- Color personalization based on username hash
Getting Started
Requirements
- Python 3.9+
- pip packages:
colorama,pyfiglet,readline(Linux/macOS),pyreadline3(Windows)
Installation
pip install ChaTerminal
Running the Server
python -m ChaTerminal init server
- Enter a port (e.g.,
5555) and the admin username - Displays local IP with instructions for LAN or tunneled access
Running the Client
In a new terminal window:
python -m ChaTerminal init client
- Enter the server IP, port, and a unique username
Commands
| Command | Description |
|---|---|
/dm <user> <msg> |
Send a private message |
/kick <user> |
Kick a user (admin only) |
/list |
View online users |
/rename <name> |
Change your username |
/me <action> |
Send an action/emote (e.g., waves) |
/help |
Show all available commands |
Networking Tips
To let others join:
- Local network: Share the IP and port printed on server start
- Ngrok:
ngrok tcp <port> - LocalXpose:
./lx tcp <port> - Port Forwarding: Map the server's port on your router
Example
# Start server
$ python -m ChaTerminal init server
Port: 5555
Admin Username: admin
# Start client
$ python -m ChaTerminal init client
Server IP: 192.168.1.100
Server Port: 5555
Username: myname
Security Note
All messages are encrypted using the crypto_utils module before transmission. Ensure that this module uses secure encryption practices for production deployments.
License
This project is licensed under the MIT License. See LICENSE for more info.
Author
Gofaone Tlalang
GitHub: @Gofaone315
Contributors ✨
Thanks goes to these wonderful people:
ChaTerminal – Real-time encrypted chat, right from your terminal.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file chaterminal-1.0.2.tar.gz.
File metadata
- Download URL: chaterminal-1.0.2.tar.gz
- Upload date:
- Size: 7.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b4e1cc2c05e98c54aa9a10efd0afa9241605e25ddb10e4d67e8aa0bce82e1b5f
|
|
| MD5 |
f1ab1ec460bef6693dc92f653c28cf50
|
|
| BLAKE2b-256 |
4a3e3e6760ed2ba874ef47475be14f36dcbdcbe028764372c8ca1df97c45834c
|
File details
Details for the file chaterminal-1.0.2-py3-none-any.whl.
File metadata
- Download URL: chaterminal-1.0.2-py3-none-any.whl
- Upload date:
- Size: 8.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1dadc27eb247a3e54937c3ab83ca8189c4bdb6f3e362009f68566445692cf68a
|
|
| MD5 |
68c87698b35a204b252a4aa26ffb4a93
|
|
| BLAKE2b-256 |
9d76c1d0e100d5c1ce9d2f29284ca99e6d8521918a00ccd561d4dc2dd8b7e42f
|