MeshTerm v0.3.4
MeshTerm for MeshCore.
What it is
MeshTerm is a full-featured MeshCore client for the terminal. It talks to companion devices running the stock firmware over serial, Bluetooth, or TCP.
Nearly everything MeshTerm can do thru its interactive Text-based User Interface (TUI), it can also do from the Command-Line Interface (CLI). The live pictures stay in the TUI, where they belong — the map, the dashboard, the live feed, the watchtower, the mesh walk — and everything else has a command. The TUI runs the same code as the CLI, so you get the best of both worlds: a great user experience, and the ability to script or schedule tasks! Every command prints for a person by default, and speaks JSON with --json when a program is reading!
Everything the radio overhears is recorded to a local database from the moment it's turned on — adverts, telemetry, signal quality, positions, etc. Features like maps, dashboard, and route graphs read back from it, so the longer it runs, the more it know about the mesh!
Where it came from
The project had humble beginnings as a set of scripts in early 2026. As time passed, quality-of-life features were added, and at some point, the logical next step was to build a complete MeshCore client with all the features I felt were missing in other offerings.
I wanted something I could run from my computer. I wanted it to run on Windows, macOS, and Linux, and I wanted it to work with any MeshCore companion device, via Bluetooth, USB, or TCP. I wanted a mouseless keyboard-driven MeshCore experience. I wanted something retro-futuristic. I wanted to push the envelope of what can be done on a text terminal, while keeping system requirements low so it could run on an older computer or a lower-end System on a Chip (SoC).
Platform-specific developments
In addition to generic Terminal setup, I wanted it to run on two devices I had lying around on my nerdcave.
Clockwork uConsole
MeshTerm is compatible with the HackerGadgets AIO board v1. The AIO board has just a raw LoRa radio, meaning it can't run MeshCore firmware. MeshTerm includes a script to run the mesh node in software, and expose it using a TCP port which MeshTerm can connect to.
MeshTerm feels right at home on the uConsole. Running MeshTerm on it makes it feel like a piece of gear straight out of a William Gibson novel.
Clockwork PicoCalc
Getting MeshTerm to run on the PicoCalc is a bit more involved, but totally worth it:
- Swap out the Raspberry Pi Pico for a Luckfox Lyra to run Calculinux.
- Add a compatible 3.3v USB wifi dongle (e.g.: TP-Link TL-WN725N N150 Nano) to the Lyra's internal USB port.
- Add a LoRa device. Here's a few options:
- Connect a companion via USB-C;
- add Seeed Studio XIAO nRF52840 + Wio-SX1262 internally, soldered to GPIO connectors' legs.
- In order to use the XIAO nRF52840 via GPIO, we do need to use a modified firmware. A PR has been submitted to MeshCore, but it might take a while for it to go through.
The UX is a bit different on the the PicoCalc's 16-color 53-column screen layout, but it's been tailored to make good use of the available space and the PicoCalc's F-keys. The result is, in my humble opinion, the best MeshCore experience you can get on a portable device. With two 18650 batteries, it'll run all day.
What the future holds
MeshTerm will evolve over time, it is a work in progress.
I've build MeshTerm for myself — I find that's when I produce my best work — but I sincerely hope it will be appreciated by others.
If you'd like a specific feature, pitch your idea on the Discord!
Licence
MeshTerm ships under the Apache License, Version 2.0 — free to use, change, and redistribute, commercially or otherwise, as long as the LICENSE and NOTICE files travel with it. The full terms: apache.org/licenses/LICENSE-2.0.
The licence covers the code, not the name: MeshTerm and its logo are trademarks the author keeps, so a fork goes out under a name of its own. The donate link in this app supports this project and its original author — a fork that keeps soliciting through it, without pointing it at itself, isn't affiliated with MeshTerm.
Built on MeshCore — its firmware and companion library — with Rich, prompt_toolkit, Typer, bleak, pyserial, pycryptodome, markdown-it-py, tomli/tomli-w and Segno, each under its own terms.
Map data © OpenStreetMap contributors, served as vector tiles by OpenFreeMap on the © OpenMapTiles schema openmaptiles.org, used under the ODbL www.openstreetmap.org/copyright. That last address is where the map's own corner credit points — nothing on a console is clickable, so the link is spelled out here instead.
Copyright © 2026 Jean-Pierre Martineau