TomTerm 1.2
A (not only) serial terminal
An All-In-One PySide6 application for embedded work on serial, TCP, UDP and SSH enabled devices.
Highly inspired by the awesome application "HTerm" which served me well for two decades and starting as a platform fluid clone, TomTerm soon emerged to this feature rich tool with its own place in the field.

Features at a Glance
- Multi-connection support: Serial, TCP, UDP, SSH and remote Client/Viewer
- Simultaneous multi-format display: ASCII, Hex, Decimal and Binary at once
- Powerful mixed-format input: combine hex, ASCII, decimal and binary in a single line
- Sequence manager: load, edit and send HTerm-compatible .hts sequence files
- Server/relay mode: broadcast serial data to multiple remote viewers
- VT100 terminal emulation: full ANSI/xterm-256 color terminal mode
- Light & Dark themes: switchable at runtime
- HTerm compatibility: reads and writes original HTerm .cfg and .hts files
- Cross-platform: runs on macOS, Linux and Windows
Quick Start
# Install dependencies
pip install PySide6 pyserial paramiko pyte
# Launch with default settings
python3 -m TomTerm
# Launch with a specific config file
python3 -m TomTerm path/to/config.cfg
Requirements: Python 3.12+, PySide6 (>=6.5), pyserial (>=3.5), paramiko (>=3.0), pyte (>=0.8)
Note: paramiko (SSH) and pyte (VT100 terminal) are optional ? TomTerm runs without them but the respective features will be unavailable.
Connection Types
Serial
- Automatic port scanning with manual entry support
- Baud rates from 300 to 256000 bps (custom rates supported via editable dropdown)
- Configurable data bits (5/6/7/8), stop bits (1/1.5/2) and parity (None/Odd/Even/Mark/Space)
- CTS hardware flow control
- DTR/RTS toggle buttons with CMD mode scripting (
dtr=1; wait=500; rts=0)
- XON/XOFF software flow control for file transfers
- Status line LEDs: CTS, DSR, RI, DCD
TCP
- TCP client with configurable host and port
UDP
- UDP client with configurable host and port
SSH
- SSH connection with host, port and username (password entered at runtime, never saved to config)
- Full VT100 terminal emulation over SSH
Client / Viewer
- Connect to a TomTerm relay server to remotely observe and interact with a serial session
- Supports multiple simultaneous viewers
- Automatic history replay on connect
Data Display
TomTerm uses a high-performance custom QPainter rendering engine (not a text widget) to display data in multiple formats simultaneously:
- ASCII - readable text with non-printable bytes shown as dots
- Hexadecimal - space-separated hex bytes
- Decimal - space-separated decimal values
- Binary - 8-bit binary groups
- Independent format toggles for RX and TX data
- Combined view with color-coded RX (black) and TX (dark green) data, or separate RX/TX panels
- Position ruler with configurable start offset
- Timestamps showing elapsed time
[HH:MM:SS.ssss]
- Selection with byte range, count and delta-time calculation
- Autoscroll with manual scroll override
- Bit masking (0-8 significant bits)
Mixed-Format Input
Combine multiple data formats in a single input line:
| Prefix |
Format |
Example |
h[...] |
Hexadecimal |
h[02 FF A0] |
a[...] |
ASCII text |
a[hello world] |
d[...] |
Decimal |
d[13 10] |
b[...] |
Binary |
b[01010101] |
Combined example: h[02] a[hello] h[03] sends STX + "hello" + ETX
Input Modes
- ASC - ASCII text input (default)
- HEX - hexadecimal byte input
- DEC - decimal byte input
- BIN - binary byte input
- CMD - control mode for DTR/RTS scripting
Send on Enter
Configurable line endings appended on Enter: None, CR, LF, CR-LF, Space, STX/ETX, Null
Input History
- Up/Down arrow keys to navigate through the 20 most recent inputs
- History position shown in status bar
Keyboard Shortcuts
- Alt+A - ASCII mode
- Alt+H - HEX mode
- Alt+D - DEC mode
- Alt+B - BIN mode
Sequence Manager
The sidebar sequence panel manages HTerm-compatible .hts XML sequence files:
- Load multiple .hts files simultaneously
- Double-click or Enter to send a sequence
- Insert to input line without sending
- Edit sequence name, description and data
- Move Up/Down to reorder within a file
- Remove individual sequences
- Create new sequences
- Save changes back to file
- Close a file to remove it from the panel
- Open sequence files are restored on next launch
Server / Relay Mode
Broadcast serial data to multiple remote TomTerm instances:
- Enable via the Server (serial only) checkbox
- Runs on port 55123
- Multiple simultaneous viewer connections
- Automatic history replay to newly connected viewers
- Remote viewers can send data back through the serial port
- Viewer count displayed in status bar
- Setting persisted in config (auto-starts server on serial connect)
VT100 Terminal Emulation
Full terminal emulation for SSH sessions and serial devices with terminal output:
- Off - raw byte display (default)
- Strip escapes - remove ANSI codes for readable output
- VT100 - full terminal emulation with keyboard input, cursor rendering and xterm 256-color support
Powered by the pyte screen buffer emulator.
Autosend
Repeatedly send data with configurable timing:
- Input line mode - resend current input content
- File mode - resend a selected file
- Configurable delay (0-999999 ms)
- Configurable repetitions (0 = infinite)
- Start/Stop controls with remaining counter
File Operations
- Send File - transmit a file with optional XON/XOFF flow control
- Export Session - save RX/TX buffer contents in Raw, Hex or ASCII format with optional timestamps and custom separators
- Import Session - reload previously saved session data
Themes
Switch between Light and Dark themes at runtime via Options > Theme:
- Light - classic HTerm-inspired look
- Dark - glassmorphic design with dark backgrounds and teal accents
Configuration
All settings are stored in HTerm-compatible .cfg XML files:
- Connection type and parameters (serial, TCP, UDP, SSH, client)
- Display format preferences
- Newline and send-on-enter settings
- Window geometry and splitter positions
- Open sequence files
- Theme selection
- Buffer size limits
- Font sizes (independent for RX and TX)
- DTR/RTS states
- Server relay preference
Load/Save via the File menu. Autosave option available for automatic persistence on every change.
Newline Controls
Fine-grained control over line breaking in the data display:
- Newline at character: None, CR, LF, CR+LF, Null, ETX
- Newline every N characters (0 = disabled)
- Newline after N ms pause (0 = disabled)
- Show newline characters toggle
Buffer Management
- Configurable buffer size (256 KB to unlimited)
- Automatic FIFO trimming when limit is exceeded
- Timestamped byte chunks with wall-clock and high-resolution timestamps
- Efficient O(log n) byte-position lookup via prefix-sum binary search
HTerm Compatibility
TomTerm maintains full compatibility with the original HTerm application:
- Reads and writes
.cfg config files (XML version 0.8.1)
- Reads and writes
.hts sequence files
- Preserves original format quirks (typos like
AlwayOnTop, AutosendRepititions)
- Round-trip safe: unknown XML elements are preserved
Building a Standalone App
# macOS .app bundle via PyInstaller
pyinstaller TomTerm.spec
The included TomTerm.spec configures a macOS application bundle with proper metadata and high-resolution support.
License
This software comes as-is without any warranty. It is just a hobby project.
It may be used for private and commercial purposes as long as the original reference is not removed. Selling or monetizing this application is strictly forbidden without written permission from the author.
It may not be modified or offered for download.
Contact
Written by Thomas Gulden, 2026
Any ideas, suggestions or bug reports? Feel free to contact me: