GitHub - jeremiah-k/meshtastic-python: The Python CLI and API for talking to Meshtastic devices

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 --strict compatible.
    • CI still runs mypy meshtastic/ (non-strict); strict is available via make ci-strict.
  • 🟡 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.

Stats

Alt