MeshApp
Client BetaJava/JavaFX desktop client for Meshtastic and MeshCore devices. Supports parallel TCP, USB/serial and BLE connections; chat, node list with filters and map, telemetry history and charts, LoRa packet inspector, Lua scripting, device settings, and offline map tile downloads.
- Maintainer
- smikme ↗
- Kind
- Clients
- Maturity
- Beta
- Language
- Java
- Licensing
- Open source
- Latest version
- 2.3.12 · 2026-08-05
- License
- AGPL-3.0
- Platforms
- Linux macOS Windows
Screenshots
Capabilities
Interfaces
- ✓ GUI
Connections
- ✓ BLE
- ✓ Serial
- ✓ USB
- ✓ TCP
Capabilities
- ✓ Messaging
- ✓ Contacts
- ✓ Channels
- ✓ Node configuration
- ✓ Monitoring
- ✓ Telemetry
- ✓ Packet analysis
- ✓ Mapping
- ✓ Firmware update
- ✓ Automation
Node role
- ✓ Companion
- ✓ Repeater
- ✓ Room server
Install
Releases
from GitHub · updated 2026-08-05v2.3.12 # Latest Pre-release 3 days ago · 2026-08-05 17:02 UTC
- Dont exit if tray activate covox/meshapp#633
- Unnecessary boundaries
- localization
v2.3.10 # 10 days ago · 2026-07-28 22:18 UTC
Highlights
Meshtastic 2.8 support
Added support for Meshtastic firmware 2.8.0 and newer.
Implemented compact initial node database loading followed by background position and telemetry replay.
Preserved the legacy connection flow for older firmware versions.
Added firmware compatibility validation for device settings.
Added support for new Meshtastic 2.8 features:
- Mesh Beacon;
- packet signature policies;
- new protobuf fields;
- repeated configuration fields.
Added validation for legal region and LoRa preset combinations.
Added licensed-operator mode validation for applicable regions.
Added Mesh Beacon limits for message length, interval, and channel index.
Limited long node names to 24 UTF-8 bytes on Meshtastic 2.8.
The deprecated UA_868 region can no longer be selected for new configurations.
Improved configuration snapshot import, export, and editing.
Updated the built-in documentation in English, Russian, and German.
Maps and OpenStreetMap policy compliance
Removed bulk downloading of selected areas from tile.openstreetmap.org.
Removed background prefetching and offline tile downloads.
MeshApp now requests only tiles visible in the current map viewport.
Queued requests are discarded when their tiles leave the viewport.
Limited concurrent tile requests to two.
Added HTTP/2 support.
Implemented HTTP-compliant caching:
- Cache-Control;
- Expires;
- ETag;
- Last-Modified;
- conditional requests;
- 304 Not Modified handling;
- a seven-day fallback cache lifetime.
Added support for configuring an alternative interactive tile provider.
Added an identifiable User-Agent
Preserved support for connecting a pre-existing tile directory in z/x/y.png|jpg|jpeg format for offline use.
MeshApp does not download or update connected offline directories through OpenStreetMap servers.
For offline maps, use tiles obtained from a provider whose terms explicitly permit offline use.
Bluetooth LE
- Improved PIN entry handling during device pairing.
- Stale PIN dialogs are now dismissed when a new request arrives.
- The pairing dialog closes automatically after disconnection, connection failure, or completion.
- Prevented duplicate handling of completed pairing requests.
- Improved native BLE resource cleanup after disconnection.
- Improved pairing behavior in graphical and terminal modes.
Chats and notifications
- Notification preferences are now applied independently to each remote RPC connection.
- Muted channels and direct-message conversations no longer produce remote system notifications.
- The muted state is applied correctly to remote chat snapshots.
- Improved chat data transfer over RPC.
Linux and Flatpak
- Fixed the Linux system tray icon.
- Added complete Ayatana AppIndicator integration for Flatpak.
- Fixed the application icon in DEB packages.
- Added a correct desktop entry for Linux packages.
- Fixed emoji rendering in Linux window titles.
- Improved window title and icon updates through native Linux APIs.
- Fixed connection form flickering during list updates.
- Stabilized transitions between connection states.
Startup and packaging
- Enabled native access for regular, packaged, and self-update launch paths.
- MeshApp now automatically restarts with the required JVM permissions when they are missing.
- Command-line arguments are preserved during this restart.
- Updated Gradle to 9.6.1.
- Updated GraalVM Build Tools to 1.1.4.
- Reorganized and documented the build configuration.
- Improved user-preference isolation in tests.
- Stabilized asynchronous tests.
Diagnostics
- Heap dumps with the .hprof extension are now preserved in pending diagnostic bundles.
- Cleanup of old …
Project signals
- GitHub stars
- 25
- Forks
- 1
- Watchers
- 0
- Open issues
- 0
- Contributors
- 4
- Release downloads
- 490
- Latest downloads
- 0
- Source available
- Yes
- Releases available
- Yes
- Signed releases
- No
- CI builds
- No
- Documentation
- Yes
- Primary development happens on a private Gitea instance; GitHub repo is a mirror.
- MeshCore support is split into KISS (TCP/serial) and Companion (BLE/TCP/serial) modes.
- README contains screenshot gallery in docs/screenshots/.