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.
- π‘ Connects to your Meshtastic radio over USB serial, TCP, or Bluetooth LE
- π΅ Bluetooth LE workflow β
meshx ble scan/pair/list/connect/favto save multiple radios by uuid or friendly name and switch between them without re-pairing - β¨οΈ irssi-style modal UI β input always live,
Escdrops to scrollback nav - π mutt-grade message log β dense one-row-per-message, zebra-striped,
j/kwalks - π» 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 withn/Ncycling - β₯ Tab completion β commands,
#channels, nicks; irssi nick-addressing quirk included - π Stable tmux-pane channel tabs +
Alt+1..4quick-hop - β Scrollable
?help overlay β every keybinding and command, vim-scrollable - πΎ bbolt-backed history β message log, node cache, and paired BLE devices
survive restarts (
~/.meshx/meshx.bolt)
curl -fsSL https://github.com/retr0h/meshx/raw/main/install.sh | shInstalls 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.
git clone https://github.com/retr0h/meshx.git
cd meshx
go build -o meshx .
install -m 755 meshx ~/.local/bin/meshxmeshx # auto-connect to a plugged-in radio (USB β saved BLE)
meshx --help # usb, tcp, ble subcommand treesFull command + keybinding reference in docs/commands.md.
meshX is a Meshtastic client. It connects to a radio you already own (T-Beam, Heltec, RAK, Station G2, etc.) over one of three transports and reads the mesh:
- USB serial (default) β plug the radio in; auto-detect port
- TCP β radios with WiFi expose port 4403, or connect to
meshtasticd - Bluetooth LE β
meshx ble pair <uuid>saves a device, thenmeshx ble connect <name>opens the TUI over Bluetooth
All three speak
Meshtastic's protobuf protocol and
funnel through one Client interface, so the UI is oblivious to which
transport's carrying the packets. meshX subscribes to FromRadio, emits
ToRadio for sends, and surfaces everything in a scrollable terminal chat UI
with vim/irssi ergonomics.
Every report (/rs, /ping, /tr, /whois) pulls from node state that maps
1:1 to real Meshtastic protobuf fields.
meshX sits at the intersection of three lineages:
- irssi β the input-first modal UI, the
/commanddispatcher, and the stable bottom status line with channel tabs come straight from irssi.Alt+nchannel hop too. - BitchX β the rotating graffiti ASCII
splash (different logo every launch), the bracketed
[ @nick ]users grid, and the unapologetic neon palette are pure BitchX. (RIP caf.) - mutt β the dense one-row-per-message log,
j/kscrollback nav,rreply on selection, and the modal input β nav distinction come from mutt. - vim β every window scrolls with
j/k/h/l/gg/G/Ctrl+D/Ctrl+U,Ctrl+Wfor window nav,/+n/Nfor search. - tmux β
Ctrl+N / Ctrl+Pchannel cycle and the giant flash-digit pane picker. - grind,
tlock β sibling retr0h projects; meshX
reuses their maxheadroom palette,
ββββblock-border language, and block-art primitives.
- π PSK import β
/channel add <meshtastic://url>paste a shared-channel link and join without manually typing the PSK - π± QR code share β
/channel share <name>emits the meshtastic:// URL as ASCII QR for phone-side scanning - π Channel mint + delete β
/channel new <name>generates a random AES256 PSK locally and pushes viaAdminMessage_SetChannel;/channel del <name>disables a slot - π¨ Low-color fallback palette β detect
$COLORTERM/$TERMand swap hex values for 16-color ANSI when the terminal doesn't support 24-bit color
- docs/commands.md β every keybinding and slash-command, with the Meshtastic API call each command makes
- docs/development.md β architecture, setup, testing
- docs/contributing.md β PR workflow
The MIT License.