// project · in development

Meshtastic TUI

A terminal user interface for Meshtastic nodes, packaged for NixOS. Monitor mesh traffic, send and receive messages, and configure the radio over serial or TCP — all from a tty, with the node declared as a NixOS service. No carrier, no cloud relay, no telemetry.

View source on GitHub
Development lifecycle Currently: In Development
  1. Concept
  2. In Development
  3. Alpha Testing
  4. Beta Testing
  5. Released

Why it exists

A phone is not really a communication tool. It is a client of a communication system — one operated by a carrier, a chat-app vendor, and a cloud provider, any of which can go dark without notice. When the cell tower loses power, the fibre is cut, or the cloud provider has a bad Tuesday, the phone in your pocket becomes expensive glass. Meshtastic runs the other way: each radio is a node, messages hop from node to node over LoRa, and the network's reach grows with every node added. No carrier, no central server, no monthly bill.

This TUI is for the operator of one of those nodes — the person who wants to keep an eye on traffic, send and receive messages, and configure the radio from whatever terminal they happen to be on, without standing up a full GUI stack to do it.

Why a TUI

A terminal interface is the smallest possible surface that still does real work. It runs over SSH, in tmux, on a serial console, in a phone's terminal app, or on the cheapest single-board computer with a display-free life. There is no browser, no Electron runtime, no toolkit that needs a display server — just bytes on a tty. It is the same reason Meshtastic itself runs quietly on a cheap LoRa board rather than a flagship phone: the right amount of interface for the job.

A TUI also composes. Its output can be piped, logged, scripted, or fed into another tool. Try doing that with a web dashboard.

Why NixOS

NixOS treats the entire system as a declarative configuration. The Meshtastic node — its serial device path, the TUI service that runs at boot, its user and permissions, the firewall rules around it — becomes a few lines in configuration.nix. Reproduce the install on a new box by copying a file. Roll back a broken change with a single boot entry. There is no apt install that mutated state on you in 2022 and is now load-bearing.

NixOS also makes packaging honest. The TUI's dependencies are declared in a flake; they hash to the same bits on your machine and mine. That matters for a tool you might run on the box doing disaster comms for your street — predictable, reproducible state is the whole game.

Off-grid by design

There is no telemetry here because there is no path for it. The TUI talks to the radio over a serial or TCP socket and stops. No account, no cloud relay, no "share anonymous usage data to help us improve". The mesh itself is the network; the node is the only server, and you own it. If the internet is gone, the TUI still works, the node still relays, and the messages still hop.

Open source, open hardware, open spectrum

LoRa operates in license-free ISM bands — spectrum that belongs to no carrier and cannot be sold back to you. The Meshtastic firmware is open source, the radio hardware is largely open, and the software on top — this TUI included — is open source as well. If the project disappears tomorrow, your node keeps running, your mesh keeps routing, and your copy of the source keeps compiling. Nothing about that depends on us.

Want to follow along?

Watch the repo, or get in touch if you'd like to test.

View on GitHub