Skip to main content

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)

  1. Push your code to GitHub
  2. Go to render.com → New Web Service
  3. Connect your repo
  4. Set:
    • Build command: pip install ".[server]"
    • Start command: port69-server
    • Environment variables: SECRET_KEY, DATABASE_URL
  5. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

port69-1.0.0.tar.gz (38.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

port69-1.0.0-py3-none-any.whl (39.8 kB view details)

Uploaded Python 3

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

Hashes for port69-1.0.0.tar.gz
Algorithm Hash digest
SHA256 a014b74c6e8a8ec31957859da2d0ac9ed72dc519664a8814271ecb7520dec756
MD5 55bd4e04533fac6f184544e3484c6a68
BLAKE2b-256 705e4dc8d30be5b42eaf74cab32e9062d715bf38bf24e6e16035ca6efcc6174f

See more details on using hashes here.

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

Hashes for port69-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 61ad89657f425792ac11a0e29fc8a4d97747613330e1fcfcd65173f9c63b3d44
MD5 0fa73790e904ed73ccdd3f252d97569b
BLAKE2b-256 1daada51991d55b813f2192eecbd76d735e824c344f6d8e54f67fc2559aeddfb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page