需先安装 Rust、Node.js、PNPM 以及对应操作系统的 Tauri 依赖;必须递归初始化 git 子模块,否则编译会失败;Linux 下普通用户可能没有串口访问权限,需把用户加入对应串口所属的用户组;不要单独运行 ui:dev,该模式无法连接串口设备。
network-management-client
meshtasticGPL-3.0长期未更新Meshtastic 桌面客户端,用 Rust 和 TypeScript 构建,支持离线部署和管理 LoRa 自组网通信网络,适合应急响应场景。
A Meshtastic desktop client, allowing simple, offline deployment and administration of an ad-hoc mesh communication network. Built in Rust and TypeScript.
git clone https://github.com/meshtastic/network-management-client.git
git submodule update --init
pnpm i
pnpm run rust:dev需要一台 Meshtastic 电台,具体型号见 Meshtastic 官方硬件推荐文档;README 未说明对电脑的 CPU、内存或显存要求。
Meshtastic 桌面客户端,用于离线部署和管理去中心化 mesh 通信网络
Meshtastic 桌面客户端,用 Rust 和 TypeScript 构建,支持离线部署和管理 LoRa 自组网通信网络,适合应急响应场景。
核心能力
- 通过 USB、IP 和蓝牙连接 Meshtastic 电台
- 采集网络拓扑并构建网络图,运行算法分析
- 管理节点对等表与航点表,并在地图上显示
- 配置设备、模块和信道,支持信道消息收发
- 基于 Rust 与 TypeScript,用 Tauri 构建桌面应用
容易踩的坑
- v0.4.0MNMC v0.4.0pre-release2025-08-29 · 2025-08-29 18:37 UTC
查看更新说明
This is a pre-release for testing, with the major feature being Bluetooth connection to your Meshtastic nodes.
Windows testers needed!
- v0.3.1MNMC v0.3.1最新正式版2025-06-05 · 2025-06-05 01:41 UTC
See release assets to download this version and install.
What's Changed
- Refactor device sagas by @ajmcquilkin in https://github.com/meshtastic/network-management-client/pull/430
- Refactor Stream API Connection Infrastructure by @ajmcquilkin in https://github.com/meshtastic/network-management-client/pull/437
- Refactor connection API to new
meshtastic/rustSDK by @ajmcquilkin in https://github.com/meshtastic/network-management-client/pull/438 - Biome by @sachaw in https://github.com/meshtastic/network-management-client/pull/442
- Update UI code to remove Biome linting errors by @ajmcquilkin in https://github.com/meshtastic/network-management-client/pull/443
- Remove non-functional graph infrastructure by @ajmcquilkin in https://github.com/meshtastic/network-management-client/pull/448
- Simplified UI data management infra by @ajmcquilkin in https://github.com/meshtastic/network-management-client/pull/449
- Updated logging by @ajmcquilkin in https://github.com/meshtastic/network-management-client/pull/450
- Bumped initial connection timeout from 3s to 15s by @ajmcquilkin in https://github.com/meshtastic/network-management-client/pull/451
- Graph/integrate graph by @ajmcquilkin in https://github.com/meshtastic/network-management-client/pull/452
- Update Frontend Graph Infrastructure by @ajmcquilkin in https://github.com/meshtastic/network-management-client/pull/455
- Graph Infrastructure Refresh by @ajmcquilkin in https://github.com/meshtastic/network-management-client/pull/456
- Add ARM64 to testing and releases by @jp-bennett in https://github.com/meshtastic/network-management-client/pull/466
- Bump version to 0.3.1 by @jp-bennett in https://github.com/meshtastic/network-management-client/pull/467
- Updated device roles and modem presets by @RCGV1 in https://github.com/meshtastic/network-management-client/pull/475
- Fixed the message screen by @RCGV1 in https://github.com/meshtastic/network-management-client/pull/476
- Replace Prettier/Eslint with Biome in README by @matthewCmatt in https://github.com/meshtastic/network-management-client/pull/477
- Change ARM Ubuntu platform to updated workflow label by @matthewCmatt in https://github.com/meshtastic/network-management-client/pull/481
- Speed up logo splash animation by @matthewCmatt in https://github.com/meshtastic/network-management-client/pull/484
- Handle bad map URLs by @matthewCmatt in https://github.com/meshtastic/network-management-client/pull/483
- Update Name & MacOS Icon by @matthewCmatt in https://github.com/meshtastic/network-management-client/pull/482
- Fix map symbols appearing on top of windows by @matthewCmatt in https://github.com/meshtastic/network-management-client/pull/485
- Upgrade Vite & Node by @matthewCmatt in https://github.com/meshtastic/network-management-client/pull/488
- Fix Biome errors from refactored logo by @matthewCmatt in https://github.com/meshtastic/network-management-client/pull/489
- Specify channel vs direct messaging in README by @matthewCmatt in https://github.com/meshtastic/network-management-client/pull/492
- Fix Typescript errors by @matthewCmatt in https://github.com/meshtastic/network-management-client/pull/486
- UI: Reverse collapse sidebar button logic by @ThatKalle in https://github.com/meshtastic/network-management-client/pull/497
- Upgrade to Tauri 1.6 by @matthewCmatt in https://github.com/meshtastic/network-management-client/pull/499
- fix: disable Specta typescript gen and pin logging level by @matthewCmatt in https://github.com/meshtastic/network-management-client/pull/500
- docs: remove affiliate recommendations for hardware by @matthewCmatt in https://github.com/meshtastic/network-management-client/pull/502
- Add devcontainer by @ThatKalle in https://github.com/meshtastic/network-management-client/pull/493
- fix: use ad-hoc signing for MacOS builds by @matthewCmatt in https://github.com/meshtastic/network-management-client/pull/501
- Rename tag to 'v___' by @matthewCmatt in http
- v0.3.0MNMC v0.3.02023-07-27 · 2023-07-27 15:35 UTC
查看更新说明
See release assets to download this version and install.
What's Changed
- Added TCP connection persistence by @ajmcquilkin in https://github.com/ajmcquilkin/meshtastic-network-management-client/pull/421
- Add Internationalization Support by @ajmcquilkin in https://github.com/ajmcquilkin/meshtastic-network-management-client/pull/423
- Add dark mode to application by @ajmcquilkin in https://github.com/ajmcquilkin/meshtastic-network-management-client/pull/424
Full Changelog: https://github.com/ajmcquilkin/meshtastic-network-management-client/compare/app-v0.2.0...app-v0.3.0
- v0.2.0MNMC v0.2.02023-07-03 · 2023-07-03 22:36 UTC
查看更新说明
See release assets to download this version and install.
What's Changed
- Waypoint flow overhaul by @ajmcquilkin in https://github.com/ajmcquilkin/meshtastic-network-management-client/pull/418
Full Changelog: https://github.com/ajmcquilkin/meshtastic-network-management-client/compare/app-v0.1.1...app-v0.2.0
- v0.1.1MNMC v0.1.12023-06-30 · 2023-06-30 04:57 UTC
查看更新说明
See release assets to download this version and install.
What's Changed
- Add UI for TCP connection flow by @ajmcquilkin in https://github.com/ajmcquilkin/meshtastic-network-management-client/pull/396
- Updated node and waypoint tables by @ajmcquilkin in https://github.com/ajmcquilkin/meshtastic-network-management-client/pull/411
- Added advanced serial connection options by @ajmcquilkin in https://github.com/ajmcquilkin/meshtastic-network-management-client/pull/412
- Updated node search dock to limit height, add collapse by @ajmcquilkin in https://github.com/ajmcquilkin/meshtastic-network-management-client/pull/413
- Fix CI unmet peer dependency issue by @thebentern in https://github.com/ajmcquilkin/meshtastic-network-management-client/pull/415
Full Changelog: https://github.com/ajmcquilkin/meshtastic-network-management-client/compare/app-v0.1.0...app-v0.1.1
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
:wave: Introduction
This application is a desktop client for the Meshtastic Project, designed to allow users to reliably manage large, decentralized mesh networks. Currently the Meshtastic client ecosystem has strong support for managing single nodes, but minimal support for network-level management and analysis. The goal of this project is to give users confidence in their Meshtastic networks as a reliable communications infrastructure through novel algorithmic analysis and connection-level insights.

:pray: Call for Contributions
We're looking for developers willing to contribute towards or take lead on the following major initiatives:
- Offline firmware flashing
- Full offline map support, including region-based downloading and loading of custom maps (will require Meshtastic mirror of the OSM tile DB)
- Testing (Rust backend, React TS frontend)
- Remote node configuration
:rocket: Functionality
This project is still in early stages of development, but here's a rough roadmap of functionality we're working on. We're placing a high priority on getting our core infrastructure right, since this is the core of any robust and effective UI layer.
- :link: Core dataflow infrastructure
- Serial data send/receive
- Rust protobuf integration (.proto -> .rs)
- Packet encode/decode
- Device state management
- :art: Core UI infrastructure
- Tauri command management
- Tauri event management
- Redux saga dataflow
- :artificial_satellite: Network topology collection
- :nerd_face: Algorithmic analysis
- Infrastructure
- Network packet collation
- Network graph construction
- Algorithm runners
- UI
- MVP algorithm runner pane
- On-map algorithm UI
- Automatic algorithm rerunning
- Infrastructure
- :radio: Node management
- Node peer table
- Network configuration (multi-device)
- Remote node configuration
- :pushpin: Waypoint management
- Managed waypoint table
- In-channel waypoint sending
- On-map waypoint tooltip
- :globe_with_meridians: Web client parity (UI)
- Map node view
- Messaging
- Channel messaging
- Direct messaging
- Channel import/export via QR code
- Configuration
- Device configuration
- Module configuration
- Channel configuration
- :mount_fuji: Offline map view
- Offline map storage
- Region-based downloading
- :page_facing_up: Network data export
📻 Hardware Requirements
This project is built on the Meshtastic hardware ecosystem, and as such this client requires that you have access to a Meshtastic radio. See the Meshtastic docs for hardware recommendations.
:computer: Development
Prerequisites
This project is built in Rust and React TypeScript, and managed using the PNPM package manager. As such, this project requires the following programs to be installed on your development machine:
Installation
To run this project locally, follow the steps below:
- Ensure you have Rust, Node.js, and PNPM installed (see Prerequisites)
- Ensure that you have all Tauri dependencies installed (depends on your OS)
- Clone this repositiory to a local directory. This can be done by running
git clone https://github.com/meshtastic/network-management-client.git - Recursively clone our Git submodules by running
git submodule update --init - Install all required NPM packages with
pnpm i - Once you have completed these steps, verify your installation with the
pnpm run rust:devcommand. The application should compile successfully, and you should see the application open successfully. If this process fails for you, please let us know!
Recommended IDE Setup
While this project can be developed within any text editor, we recommend the Visual Studio Code editor. If using VSCode, we strongly recommend that you install the following Visual Studio Code extensions. These extensions both enforce code style and enable language and framework support for our tech stack.
- Biome - JavaScript LSP with formatting and linting
- rust-analyzer - Rust LSP with code linting, formatting, and quality suggestions
Development Commands
To standardize our development flow, we utilize PNPM commands, defined in package.json. These commands can be run with the pnpm run NAME ...ARGS syntax. Our commands are broken out into two primary categories, rust:* commands and ui:* commands. The rust:* commands run the entire desktop application, where the ui:* commands only run the UI layer.
Note: We strongly recommend against using the
ui:devandui:buildcommands manually. These commands are invoked internally by therust:devandrust:buildcommands, respectively. You will not be able to connect to a serial devce when running theui:devcommand, as this logic is not handled in the UI layer.
-
pnpm run rust:dev- Starts the desktop application in development mode, allowing for hot reloading of UI and Rust code -
pnpm run rust:build- Builds the desktop application in production mode for your system architecture. Currently we only use this command for testing our application's CLI argument parser. -
pnpm run rust:test- Runs backend tests on the Rust codebase directory (/src-tauri). This command also generates TypeScript client bindings in the/src-tauri/bindingsdirectory. Add-- --show-outputto show Rustprintln!macro calls within test suites. -
pnpm run ui:dev- Starts the UI development server, allowing for UI development in a browser environment. Note that any code that interfaces with the Rust backend will not function within this browser environment, meaning you will be unable to connect to serial devices in this context -
pnpm run ui:build: - Runs a production build on the UI code into thedistdirectory -
pnpm run ui:lint- Uses ESLint to check for code style errors. Note that our CI pipeline requires that this command succeeds before any changes can be merged -
pnpm run ui:format- Formats the UI codebase using Prettier and ESLint. We strongly recommend you run this before creating a PR! -
pnpm run ui:test- Runs UI test suite using Jest. Currently the project does not have a UI testing suite, but we're very open to contributions!
Note: On Linux, your user may not have permission to access a given serial port. If this happens, you will likely need to add your user to the group that controls the serial port you want to access. You can find the group that controls a serial port via the
ls -ld PATH_TO_PORT_HEREcommand. You can add your user to this group via theusermod -a -G GROUP_NAME_HERE $USERcommand.
:heart: Contributing
As we are still very early in development, we don't yet have a standardized framework for accepting contributions. This being said, we are very open to suggestions and/or code changes! If you're interested in contributing to this repository, we would ask that you first check our issue board to ensure your work isn't duplicating the work of others. Then, please make an issue on our board so we know what you're interested in working on. If you have any questions about the project, we would love to hear from you!