MeshTUI
Full-Featured MeshCore Client with Terminal UI
A comprehensive mesh networking client with rich terminal interface for managing networks, messaging, device configuration, and node administration — all in your terminal.
Features
Real-time Chat
Interactive chat interface with contacts and channels. Message history, delivery tracking, and ACK status.
Contact Management
Dedicated Contact Info tab with notes, last seen, network paths, and ping/trace tools. Auto-hides for channels.
Multi-Connection
Connect via BLE, TCP, or Serial. Auto-detection of MeshCore devices with seamless switching.
Channel Creation
Create custom encrypted channels with auto-hash support. Secure mesh communication made easy.
Async Operations
Built with asyncio for responsive UI. Non-blocking operations keep the interface smooth.
Node Management
Remote control of repeaters and room servers. Full node administration from your terminal.
Message History
Persistent SQLite database per device. Browse history with delivery status and timestamps.
Auto Retry
Automatic message retry with flood routing fallback. Intelligent delivery optimization.
TCP Proxy EXPERIMENTAL
Expose Serial/BLE devices over TCP for remote access. Test TCP mode without WiFi firmware.
Installation
Quick Install (Recommended)
# Install with pipx (isolated environment)
pipx install meshtui
# Or with uv
uv tool install meshtui
With TCP Proxy Support
# Install with optional proxy component
pipx install meshtui[proxy]
Development Install
# Clone and install for development
git clone https://github.com/ekollof/meshtui.git
cd meshtui
pip install -e .
# or: uv pip install -e .
Requirements
- Python 3.10 or higher
- Linux or macOS (Windows support untested)
- Serial port permissions for USB devices
Usage
Quick Start
# Launch MeshTUI (auto-detect device)
meshtui
# Connect via serial
meshtui --serial /dev/ttyUSB0
# Connect via BLE
meshtui --address C2:2B:A1:D5:3E:B6
# Connect via TCP
meshtui --tcp localhost --port 5000
TCP Proxy EXPERIMENTAL
# Start proxy (expose serial device on TCP)
meshcore-tcp-proxy --serial /dev/ttyUSB0
# Connect meshtui via TCP (in another terminal)
meshtui --tcp localhost --port 5000
# Debug mode with frame logging
meshcore-tcp-proxy --serial /dev/ttyUSB0 --debug --log-frames