Skip to content

Repository files navigation

OrcMesh

A native Windows operations console for Meshtastic LoRa mesh radios.

Map. Monitor. Message.

Release License Platform Python

Network monitor dashboard


What this is

OrcMesh connects to one Meshtastic radio over USB, Bluetooth, or Wi-Fi. The radio — not the PC — sends and receives the actual LoRa packets. OrcMesh gives you a chat client on top of it, plus a monitoring dashboard that surfaces what the mesh is really doing: who's reachable, how many hops away, what's relaying, and how the signal looks.

It's a desktop app, not a web service. Nothing is uploaded anywhere; all history lives in a local SQLite database on your machine.


Features

🗺️ Live mesh map

Every node your radio knows about, plotted and clustered. Populated from the radio's own node database the moment you connect — plus locally persisted history, so the map isn't empty before you've connected anything. Light and dark basemaps.

Mesh map

📊 Network monitor

Twelve live KPI cards covering node counts, packet rates, signal, session totals, and distance extremes. The header shows the radio's actual LoRa configuration — region, modem preset, and channel.

KPI cards

Alongside them: rankings (last heard, most packets, nearby/farthest, strongest signal, messages sent), a live packet-activity chart, a full packet log, and distribution panels breaking traffic down by type, channel, node role, and hardware model.

Distribution panels

🔵 Node table and inspector

Every node, sortable and searchable, with a detail panel covering identity, activity, last-hop RF signal, hop counts, and telemetry.

Nodes page

Right-click any node to message it, show it on the map, request its position or telemetry, run a traceroute, favorite it on the radio, or remove it from the radio's node database.

Signal and hops — SNR, RSSI, and hop-by-hop reach for a node heard over RF.

Node signal detail

Telemetry — battery, voltage, channel utilization, air-time, and environment sensors when a node reports them.

Node telemetry detail

💬 Chat

Channel messaging across the radio's configured Meshtastic channels, direct messages to any reachable node, and local message history that survives restarts — Meshtastic radios don't store message history themselves, so OrcMesh keeps its own.

⚙ USB radio controls

When connected over USB/Serial, the Device page provides typed controls for radio and module configuration, owner identity, channels, fixed position, reboot/shutdown, NodeDB reset, and guarded factory resets. Passwords, PINs, PSKs, and cryptographic key material are never read into editable controls or written to logs; secret replacements are write-only.

The Firmware tab discovers official meshtastic/firmware releases for the target reported by the connected radio. It verifies the release SHA-256, target/hardware metadata, and image hashes before flashing. Update mode writes only the application image and preserves settings. Full install requires a typed confirmation, erases the device, and restores the verified factory, OTA, and filesystem images at the release-declared offsets. A chip-ID preflight must identify the expected ESP32 family before either path can write anything.

Firmware flashing is inherently interruption-sensitive. Use a known-good USB cable and do not unplug or power off the radio until OrcMesh reports completion.

📶 Spectrum (optional — needs an RTL-SDR)

A waterfall view of raw RF energy in the LoRa ISM bands. This shows that activity is happening and where in the band — it does not decode LoRa packets. Requires an RTL-SDR dongle plus pyrtlsdr and the native librtlsdr driver; OrcMesh runs normally without any of that.


Install

Just want to run it? Grab the latest build from Releases, extract, and run OrcMesh.exe. No installer, no Python needed. Windows x64.

From source (Python 3.12+ x64):

git clone https://github.com/hardcoreerik/OrcMesh.git
cd OrcMesh
.\scripts\bootstrap.ps1
.\scripts\run-dev.ps1

Connecting

Transport Notes
USB / Serial Most reliable. Pick the COM port and hit Connect.
Bluetooth Pair the radio in Windows Settings first — Meshtastic radios require OS-level pairing before any app can reach them. OrcMesh detects this case and offers a shortcut to the Bluetooth settings page.
Wi-Fi / TCP Enter the radio's hostname or IP (default port 4403).

Development

.\scripts\test.ps1          # run the test suite
.\scripts\build.ps1         # build dist\OrcMesh\OrcMesh.exe
.\scripts\run-dev.ps1 -Debug   # verbose logging

For upgrade compatibility, logs remain under %LOCALAPPDATA%\MeshChat\Logs\.

Architecture — PySide6 (Qt 6) desktop app. All blocking Meshtastic I/O runs on a dedicated QThread; the radio library's PubSub callbacks are marshalled back to the GUI thread as Qt signals, so widgets are only ever touched from the main thread. Packets flow through a single deduplicating ingestion pipeline before reaching the UI or the SQLite store. The map is Leaflet in a QWebEngineView, bridged over QWebChannel.


Roadmap

Status

Alpha. It works and it's useful, but expect rough edges. Bug reports and issues are welcome.


License

GPL-3.0-only — see LICENSE.

OrcMesh links the official Meshtastic Python package, which is GPL-3.0 copyleft, so this project is licensed to match. Full dependency licensing is in THIRD_PARTY_LICENSES.md.

Not affiliated with or endorsed by the Meshtastic project.

About

Native Windows LoRa mesh operations console for mapping, telemetry, RF monitoring, and messaging

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages