
📡 Glitched-out terminal Meshtastic messenger.
An irssi-style chat client for your LoRa radio with a vintage BBS
aesthetic — maxheadroom palette, ░▒▓█ glitch borders, BitchX-style
rotating splash, mutt-grade keyboard, and ham-radio slash-commands
baked in.
✨ Features
- 📡 Connects to your Meshtastic radio over USB serial, TCP, or Bluetooth LE (no radio needed for
meshx demo)
- 📱 Bluetooth LE workflow —
meshx ble scan / pair / list / connect / fav to save multiple radios by uuid or friendly name and switch between them without re-pairing
- ⌨️ irssi-style modal UI — input always live,
Esc drops to scrollback nav
- 💬 mutt-grade message log — dense one-row-per-message, zebra-striped,
j/k walks
- 🎯 Ham-radio slash-commands —
/cq, /73, /qth, /rs, /qrz, /sk, /mesh, + 9 more
- 👥 BitchX-style bracketed users grid —
[ @KC7XYZ ] tiles with IRC sigils
- 🎨 Maxheadroom 80s-neon palette — cyan / mesh-green / magenta / pink, matches grind + tlock
- 🎨 BitchX-style rotating ASCII splash — different graffiti logo every launch
- 🔎 Live
/ search across log / channels / users with n / N cycling
- 📑 Tab completion — commands,
#channels, nicks; irssi nick-addressing quirk included
- 🖥️ Stable tmux-pane channel tabs +
Alt+1..4 quick-hop
- ❓ Scrollable
? help overlay — every keybinding and command, vim-scrollable
- 💾 SQLite-backed history — message log, node cache, and paired BLE devices survive restarts (
~/.meshx/meshx.db)
- 📌 Ephemeral notices —
/whois / /ping / /config cards auto-expire after 60s with a fade; /pin or P holds them with ⌜ ⌟ corners
- 🛠️ Stale-send recovery —
R resends pending or failed messages; boot sweep flips zombie rows to ✗ so they're actionable
📦 Install
curl -fsSL https://github.com/retr0h/meshx/raw/main/install.sh | sh
Installs to ~/.local/bin (or /usr/local/bin as root) — SHA256 checksums verified. Override with MESHX_INSTALL_DIR=/some/path or pin a version with MESHX_VERSION=1.1.1.
🔨 Build from source
git clone https://github.com/retr0h/meshx.git
cd meshx
go build -o meshx .
install -m 755 meshx ~/.local/bin/meshx
🚀 Quick start
meshx demo # try the UI with no radio
meshx # auto-connect to a plugged-in radio (USB → saved BLE)
meshx --help # usb, tcp, ble subcommand trees
Full command + keybinding reference in docs/commands.md.
🤖 Claude Code / MCP
meshX ships a plugin marketplace
so Claude Code (or any MCP-aware agent) can operate the mesh directly.
Add the marketplace and install:
/plugin marketplace add retr0h/meshx
/plugin install meshx-mcp@meshx
Requires a running daemon — the MCP server is a thin stdio adapter
that proxies every call to the HTTP+SSE daemon:
meshx server start
24 tools are exposed — the agent can scan for radios, pair BLE
devices, send messages, manage channels, ping peers, and more.
⚙️ How It Works