Terminal chat platform — talk to friends, share files, all from your CLI
Project description
⚡ Port69
Terminal chat platform. Talk to friends. Share files. No browser needed.
pip install port69
What is Port69?
Port69 is an open-source CLI chat app — like WhatsApp or Discord, but fully in your terminal. Chat in rooms, send DMs, share files, react to messages, create polls, and more.
┌─────────────────────────────────────────────┬────────────────┐
│ ⚡ Port69 v1.0 #general ● janak│ Friends │
├─────────────────────────────────────────────│ ● rohan │
│ │ ● priya │
│ J janak 14:02 │ │
│ Hey everyone! 👋 │ Rooms │
│ 👍2 ❤️1 │ 💬 #general │
│ │ 🎮 #gaming │
│ R rohan 14:03 │ 💻 #code │
│ ↩ janak: Hey everyone! │ │
│ Sup! Just joined │ Online │
│ │ ● alex │
│ 📊 Poll: Best language? │ ● sam │
│ 1. Python 2. Go 3. Rust │ │
│ 👍 12 votes │ │
├─────────────────────────────────────────────┴────────────────┤
│ /help · /join · /msg · /add · /sendfile · /poll Ctrl+C quit│
└──────────────────────────────────────────────────────────────┘
#general ❯
Quick Start (User)
1. Install
pip install port69
2. Connect to a server
port69 config
# Enter server URL when asked: https://your-friends-server.com
3. Register
port69 register
4. Chat!
port69 chat
Self-Host Your Own Server
So your friends can connect to you:
# Install server dependencies
pip install "port69[server]"
# Create config
echo "SECRET_KEY=$(python3 -c 'import secrets; print(secrets.token_hex(32))')" > .env
echo "DATABASE_URL=sqlite+aiosqlite:///./port69.db" >> .env
mkdir uploads
# Start server
port69-server
Server runs on http://0.0.0.0:8000
Friends connect to you:
port69 config
# Server URL: http://YOUR_IP:8000
port69 register
port69 chat
All Commands
In Terminal
port69 register # Create account
port69 login # Login
port69 chat # Open chat (main room)
port69 chat <username> # Open DM with someone
port69 friends # Your friends list
port69 users # Who's online
port69 rooms # Public rooms
port69 stats # Server statistics
port69 whois <username> # View someone's profile
port69 add <username> # Send friend request
port69 profile # Edit your profile
port69 config # Change server / settings
Inside Chat
Messages
/reply <id> <text> Reply to a message
/edit <id> <text> Edit your message
/delete <id> Delete your message
/react <id> 👍 React with emoji
/me <action> /me waves hello
Navigation
/join <room> Join a room
/leave Leave current room
/create <name> [desc] Create a new room
/rooms List all public rooms
/msg <user> <text> Send a direct message
Files
/sendfile <path> Send a file to current room
/sendfile <path> <user> Send a file to a specific person
/download <id> Download a file
Friends
/add <user> Send friend request
/accept <user> Accept a request
/reject <user> Reject a request
/friends Show friends
/requests Pending requests
Polls
/poll "Question?" A | B | C Create a poll
/vote <poll_id> <number> Vote in a poll
Status
/status away Grabbing coffee Set custom status
/away /busy /back Quick status shortcuts
Other
/users Who's online
/whois <user> User profile
/search <name> Find users
/stats Server stats
/clear Clear chat
/help Show all commands
/quit Exit
Markdown in Chat
**bold** *italic* `code`
~~strikethrough~~
@username #roomname
https://links automatically become clickable
Features
- 💬 Real-time messaging — WebSocket powered, instant delivery
- 📁 File sharing — Send any file type up to 200MB
- 👥 Friends system — Add friends, accept/reject requests
- 📊 Polls — Create polls with live vote counts
- 🔔 Notifications — Offline message delivery when you reconnect
- 😀 Reactions — React to any message with any emoji
- ↩️ Reply threads — Reply to specific messages with quote preview
- ✏️ Edit & delete — Edit or delete your own messages
- 🟢 Presence — Online/Away/Busy/Invisible status
- 🌐 Multi-room — Create and join multiple rooms
- 🔍 User search — Find anyone on the server
- 🎨 Rich UI — Colors, avatars, markdown rendering
Deploy to the Cloud (Render — Free)
- Push your code to GitHub
- Go to render.com → New Web Service
- Connect your repo
- Set:
- Build command:
pip install ".[server]" - Start command:
port69-server - Environment variables:
SECRET_KEY,DATABASE_URL
- Build command:
- Deploy!
Share your Render URL with friends — they install port69 and connect to you.
Docker
docker compose up -d
License
MIT — free to use, modify, and distribute.
Built with FastAPI · SQLAlchemy · WebSockets · Rich · Click
Project details
Release history Release notifications | RSS feed
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 port69-1.0.0.tar.gz.
File metadata
- Download URL: port69-1.0.0.tar.gz
- Upload date:
- Size: 38.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a014b74c6e8a8ec31957859da2d0ac9ed72dc519664a8814271ecb7520dec756
|
|
| MD5 |
55bd4e04533fac6f184544e3484c6a68
|
|
| BLAKE2b-256 |
705e4dc8d30be5b42eaf74cab32e9062d715bf38bf24e6e16035ca6efcc6174f
|
File details
Details for the file port69-1.0.0-py3-none-any.whl.
File metadata
- Download URL: port69-1.0.0-py3-none-any.whl
- Upload date:
- Size: 39.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61ad89657f425792ac11a0e29fc8a4d97747613330e1fcfcd65173f9c63b3d44
|
|
| MD5 |
0fa73790e904ed73ccdd3f252d97569b
|
|
| BLAKE2b-256 |
1daada51991d55b813f2192eecbd76d735e824c344f6d8e54f67fc2559aeddfb
|