Overview
This small library (and example application) provides an easy API for sending and receiving messages over mesh radios. It also provides access to any of the operations/data available in the device user interface or the Android application. Events are delivered using a publish-subscribe model, and you can subscribe to only the message types you are interested in.
Local Development Setup
For full setup, local checks, and CI-equivalent commands, see CONTRIBUTING.md.
Call for Contributors
This library and CLI has gone without a consistent maintainer for a while, and there's many improvements that could be made. We're all volunteers here and help is extremely appreciated, whether in implementing your own needs or helping maintain the library and CLI in general.
If you're interested in contributing but don't have specific things you'd like to work on, look at the roadmap below!
Roadmap
This should always be considered a list in progress and flux -- inclusion doesn't guarantee implementation, and exclusion doesn't mean something's not wanted. GitHub issues are a great place to discuss ideas.
- ✅ Types
- Codebase is
mypy --strictcompatible. - CI still runs
mypy meshtastic/(non-strict); strict is available viamake ci-strict.
- Codebase is
- 🟡 Async-friendliness
- BLE lifecycle/reconnect internals were substantially refactored and race-hardened.
- Additional async-friendly API improvements are still open.
- 🟡 API consistency and compatibility
- Broad camelCase normalization with explicit compatibility shims is in place across key modules.
- Historical BLE compatibility surface from 2.7.7 is preserved.
- ✅ Example readability
- Examples were updated and simplified to emphasize library usage patterns
- ⏳ CLI completeness and consistency
- Support full firmware feature coverage in the CLI.
- Provide stable, script-friendly output formats.
- ⏳ CLI input validation and documentation
- Clarify compatible/incompatible argument combinations.
- Document pubsub events and common workflows.
- ⏳ Helpers for third-party code
- Provide reusable helpers so external tools can share CLI-style connection options.
- ⏳ Data storage and processing
- Standardize packet recording for post-analysis/debugging.
- Evaluate persistence beyond nodedb (for example sqlite-backed tooling).
- Expand maps/charts/visualization support.