Skip to main content

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

Metadata

Release files for pytermtalk-ref 1.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pytermtalk-ref 1.1.1
File Size Uploaded
pytermtalk_ref-1.1.1.tar.gz 3.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pytermtalk-ref 1.1.1
File Interpreter ABI Platform
pytermtalk_ref-1.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 8.4 kB

Release files / pytermtalk_ref-1.1.1.tar.gz

Download URL pytermtalk_ref-1.1.1.tar.gz
Size 3.4 kB
Tags Source
SHA-256 checksum
How to use checksums
9a9efc0ca4859f7de2036fa1fca3b0e9c753be28c36fdee62196895702510863
BLAKE2b-256 checksum
How to use checksums
c36a9742ec6571ca1e6de3c9e8540613be5103d48e97e46efa4e30db2c32852d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.5

Release files / pytermtalk_ref-1.1.1-py3-none-any.whl

Download URL pytermtalk_ref-1.1.1-py3-none-any.whl
Size 5.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
49dfeaf7ecbf7f1026d8aed6c05fffd5e7b691bf0f2f42c52bb0c71aeaf616e0
BLAKE2b-256 checksum
How to use checksums
7120c813e630847d5d7229d7df1aac13d049a606fe98534aff3212c2eb2d2924
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.5

Release history Release notifications | RSS feed

This release

1.1.1 This release

2 release files

1.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page