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.

meshtui - Connected via Serial
MeshTUI Screenshot

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

Keyboard Shortcuts

Tab Switch between panels
↑↓ Navigate contacts/messages
Enter Send message
F1 Show help
Ctrl+C Quit application