Skip to main content

My reference implementation of a terminal-based chat program using sockets; supports both client and server modes.

Project description

PyTermTalk-Ref 🖥️💬

Python License

A Python reference implementation of a terminal-based chat program using sockets. Supports both server and client modes. This project serves as a starting point for building a production-ready terminal chat application.

⚠️ Warning: This script does not provide authentication. Do not use it for production or sensitive purposes.

The original script by Andrea Ciarrocchi was published in Linux Magazine, October 2025.


Features

  • Terminal-based chat via sockets
  • Non-blocking communication using threads
  • Supports multiple clients simultaneously
  • Easy to extend and modify for educational purposes

Installation & running from PyPi

mkdir testing && cd testing
python -m venv .venv
source .venv/bin/activate
pip install pytermtalk-ref

# and now run the script ...

python pytermtall-ref

# when finished, deactivate the venv:

deactivate

Installation & running from PyPi with uv

When using the uv tool:

mkdir testing && cd testing
uv init
uv add pytermtalk-ref

# and now run the script ...

uv run pytermtalk-ref

Installation & running from github

When using the uv tool:

git clone https://github.com/rikroos/pytermtalk-ref.git
cd pytermtalk-ref
uv run pytermtalk-ref

Otherwise, if not using the uv tool:

git clone https://github.com/rikroos/pytermtalk-ref.git
cd pytermtalk-ref
python src/pytermtalk_ref/chat.py

Usage

On startup, choose between server or client mode.

Server Mode

  • Initializes a socket (127.0.0.1:5555)
  • Starts listening for client connections
  • Launches a thread for non-blocking broadcasting to all connected clients
  • For each new client, a separate thread is created to handle communication

Client Mode

  • Initializes a socket (127.0.0.1:5555)
  • Launches a thread to receive messages from the server non-blocking
  • Messages may come from other clients or the server operator
  • Client can send messages to other clients via the server

Future Work

  • None, the project serves as a reference implementation for other projects

Example

# Start server
$ uv run pytermtalk-ref

Warning: do not use in production environments or for exchanging sensitive information!

Start server or client? (s/c): s
[LISTENING] Server is listening on 127.0.0.1:5555
[NEW CONNECTION] ('127.0.0.1', 33076) connected.
('127.0.0.1', 33076): Hi there. Anybody home?

# Start client
$ uv run pytermtalk-ref

Warning: do not use in production environments or for exchanging sensitive information!

Start server or client? (s/c): c
Hi there. Anybody home?

License

MIT License

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

pytermtalk_ref-1.1.0.tar.gz (3.4 kB view details)

Uploaded Source

Built Distribution

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

pytermtalk_ref-1.1.0-py3-none-any.whl (5.0 kB view details)

Uploaded Python 3

File details

Details for the file pytermtalk_ref-1.1.0.tar.gz.

File metadata

  • Download URL: pytermtalk_ref-1.1.0.tar.gz
  • Upload date:
  • Size: 3.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.5

File hashes

Hashes for pytermtalk_ref-1.1.0.tar.gz
Algorithm Hash digest
SHA256 c3ebb159f077856acd72c55437ab09702d7cc6f447cbbc2e879e011bf495186a
MD5 2b15ab0b36ea013657526f4c086bda7e
BLAKE2b-256 580633f4afca01911b93deccb42153cdb29f1ff7a6c513b30c19a772d18d127a

See more details on using hashes here.

File details

Details for the file pytermtalk_ref-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pytermtalk_ref-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6430b9b0e4741757fc9102cac1e01413e1686dbf78c3c5fbdd7c6d58dcab3d29
MD5 2df7aa2fc5a11410f7aa0f4b43169304
BLAKE2b-256 4c43aa3667c21c23c5e333d38cb6904597d74607209461dd07d6216ec67e5e9c

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