Slink — Secure Terminal-to-Terminal Communication System
Slink is a production-quality, security-first terminal-to-terminal text messaging application written in Python 3.12+. It enables direct peer-to-peer encrypted text communication between two computers with peer authentication, forward secrecy, replay protection, session key rotation, and interactive terminal UX.
Key Features
- Direct Peer-to-Peer: Communication flows directly between terminals over TCP. No central server or database required.
- End-to-End AEAD Encryption: Authenticated encryption using ChaCha20-Poly1305 (or AES-256-GCM).
- Identity Signatures: Long-term Ed25519 identity keypairs for peer authentication.
- Forward Secrecy: Ephemeral X25519 key agreement for every session.
- Replay Protection: Monotonic 64-bit sequence numbers and sliding-window anti-replay filter.
- Key Rotation: Automatic periodic session key derivation via HKDF-SHA256.
- Trust-On-First-Use (TOFU): Formatted identity fingerprints and peer database with security alerts on identity key changes.
- Interactive Terminal UX: Clean terminal session view with live message streaming and interactive slash commands (
/help,/status,/peers,/fingerprint,/clear,/quit). - Cross-Platform: Windows 10/11, Linux, macOS.
Installation & Setup
Prerequisites
- Python 3.12+ (or Python 3.14)
Development Installation
# Clone or open repository directory
cd d:/Projects/Terminal
# Create virtual environment
python -m venv .venv
# Activate virtual environment
# Windows PowerShell:
.\.venv\Scripts\Activate.ps1
# Install dependencies and editable package
pip install -r requirements.txt
pip install -e .
Usage Guide
1. Check Local Identity & Fingerprint
slink identity show
slink identity fingerprint
2. Start Listener (Computer A)
# Listen on default port 9000
slink listen
# Listen on custom port with LAN discovery enabled
slink listen --port 9000 --discover
3. Connect to Listener (Computer B)
# Connect to peer IP address and port
slink connect 192.168.1.10:9000
# Connect using IPv6 address
slink connect "[2001:db8::10]:9000"
4. Interactive Chat Session
Once connected, type text messages directly. Use slash commands inside the terminal:
/help— Display list of commands/status— View current session encryption status and message count/fingerprint— Show local identity fingerprint/peers— List trusted peer records/clear— Clear terminal buffer/quit— Gracefully terminate encrypted session
5. Peer Discovery
slink discover
6. Configuration Management
slink config show
slink config set port 9000
slink config set max-message-size 65536
Building Executable for Windows (slink.exe)
PyInstaller packaging script is provided in scripts/build_windows.ps1.
To build a standalone executable:
.\scripts\build_windows.ps1
The compiled executable will be generated at dist\slink.exe.
Security Model & Limitations
Security depends on:
- Correct implementation of cryptographic primitives (
cryptographylibrary). - Verification of peer identity fingerprints upon initial connection.
- Endpoint OS security (protection against malware, keyloggers, and physical theft).
Disclaimer: Slink does not protect against compromised endpoints, hardware keyloggers, or OS-level memory extraction by administrative malware.
Running Tests & Benchmarks
# Run full unit, integration, and security test suite
pytest
# Run performance benchmark
python tests/benchmark.py
Metadata
Release files for slink-terminal 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| slink_terminal-0.1.0.tar.gz | 44.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| slink_terminal-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 96.7 kB
Release files / slink_terminal-0.1.0.tar.gz
| Download URL | slink_terminal-0.1.0.tar.gz |
|---|---|
| Size | 44.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d204724dab5b71fcf3fdac3dd6250c2797ec51ba081dda585f3e2d3a44434d98
|
|
BLAKE2b-256 checksum How to use checksums |
9889d9f614ed168d52781c4ebb7dd9f8f444c3541e9e7183a88072603d64f19d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|
Release files / slink_terminal-0.1.0-py3-none-any.whl
| Download URL | slink_terminal-0.1.0-py3-none-any.whl |
|---|---|
| Size | 52.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f6bb4ea7ba58d74fafbd7705508adc9b7a25fc81fb63ee933de244c122f620da
|
|
BLAKE2b-256 checksum How to use checksums |
8dada0cbb239dd93e0e1e4b7f88d19f04c61ea00b9fb049b42fd0ab5641128d2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|