A desktop application for planning LoRa mesh network deployments. You place nodes on a map, simulate RF coverage using real terrain data, select hardware from a built-in catalog, and generate a bill of materials — all running locally on your computer.
Yes. Mesh Community Planner is open-source software licensed under CC BY-NC-SA 4.0. It is free to use and modify for non-commercial purposes.
Windows 10+, macOS 11+, and Linux (Ubuntu 20.04+, Fedora 35+, or equivalent). Pre-built binaries are available for all three platforms on the GitHub Releases page.
No. The downloadable installers are self-contained. Python and Node.js are only needed if you want to build from source.
An internet connection is needed for the initial download of map tiles and terrain elevation data. After that, the app works fully offline using cached data.
The Import Nodes (Internet) feature (Plan menu) pulls live node locations from MeshCore Map and Reticulum Network directories — this requires connectivity and is automatically disabled when the app detects you are offline. All other features, including propagation analysis and LOS, work fully offline once terrain data is cached.
No. There is no analytics, no telemetry, no user accounts, and no cloud services. All data stays on your machine.
Download the installer for your platform from the GitHub Releases page:
- Windows: Run
MeshCommunityPlanner-1.3.5-Setup.exe - macOS (Apple Silicon): Open
MeshCommunityPlanner-1.3.5.dmgand drag to Applications - macOS (Intel): Open
MeshCommunityPlanner-1.3.5-x86_64.dmgand drag to Applications - Linux: Make
MeshCommunityPlanner-1.3.5-x86_64.AppImageexecutable and run it
The app is not notarized with Apple. To open it:
- Right-click the app in Applications
- Select Open
- Click Open in the confirmation dialog
Or run xattr -cr "/Applications/Mesh Community Planner.app" in Terminal.
Yes. Because the app is not widely distributed yet, Windows SmartScreen may show a warning. Click More info → Run anyway.
Plans and settings are stored in a local SQLite database:
- Windows:
%LOCALAPPDATA%\MeshCommunityPlanner\mesh_planner.db - macOS:
~/Library/Application Support/MeshCommunityPlanner/mesh_planner.db - Linux:
~/.local/share/mesh-community-planner/mesh_planner.db
- Click New Plan in the toolbar
- Enter a name, select firmware (Meshtastic, MeshCore, or Reticulum), and choose your region
- Click Create
- Start placing nodes on the map
Click Add Node (or press Insert), then click on the map where you want the node. The Node Configuration Wizard walks you through device selection, radio parameters, antenna, and power settings.
- Prepare a CSV with columns:
name,latitude,longitude(minimum). Optional columns includeantenna_height,device,frequency,tx_power. - Click Import Nodes (CSV) in the toolbar
- Select your CSV file
- Review the column mapping and click Import Nodes
- Open the Plan menu
- Click Import Nodes (Internet) — this option is disabled (and labeled "offline") if no internet is detected
- Choose your source: MeshCore Map (meshcore.nz) or Reticulum Network (directory.rns.recipes)
- Nodes visible in the current map view are listed with their locations
- A warning appears when importing more than 5 nodes at once
- Click Import to add them to your plan
- Export your nodes from "Antenna Coverage" under Liam Cottle's "Antenna Coverage" tool within the MeshCore app
- Click Import Nodes (JSON) in the toolbar
- Select your JSON file
- Review the column mapping and click Import Nodes
Naturally, as long as your JSON follows that format, the import will function properly. See the site for more details.
See the Quick Start Tutorials for a detailed walkthrough.
- FSPL (Free-Space Path Loss): Instant circular coverage estimate assuming flat terrain. Useful for quick planning.
- Terrain propagation (Signal-Server): Accurate coverage accounting for hills, valleys, and terrain obstruction. Uses SRTM 30m elevation data. Takes longer to compute but gives realistic results.
- Place nodes on the map
- Click Run Propagation in the toolbar
- Select Signal-Server (Terrain-Aware)
- Wait for terrain data to download (first time only) and analysis to complete
- Coverage overlay appears on the map
Click BOM in the toolbar. The BOM table shows all hardware needed for your plan with quantities and estimated pricing. Export as CSV (for purchasing) or PDF (for documentation).
- Plans:
.meshplan(JSON with checksum) - Single nodes:
.meshnode - Templates:
.meshtemplate - Import: CSV,
.meshplan - Export: CSV, PDF, KML,
.meshplan,.meshnode,.meshtemplate
The radio horizon is the theoretical maximum distance Earth's curvature allows at a given antenna height, even with no terrain obstacles. It's calculated as d (km) ≈ 3.57 × √h where h is antenna height in meters.
For example, at 3m antenna height the horizon is ~6 km. At 10m it's ~11 km. This is an upper bound — terrain, Fresnel zone obstructions, and receiver sensitivity will further limit real-world range.
After the KML file downloads, the app shows a guide with import steps for 10 compatible apps:
- ATAK CIV / iTAK / WinTAK: Import Manager → Local SD → select the .kml file
- Caltopo: Import → KML/KMZ
- Gaia GPS: Tap + → Import file
- OsmAnd: Menu → My Places → Import
- Google Earth: Drag and drop the file onto the map
- QGIS: Layer → Add Layer → Add Vector Layer
Your area likely has a narrow elevation range (e.g., 160m–360m) that is invisible within the default -500m to 9000m color scale. Use the elevation range sliders in the legend panel to narrow the range:
- Enable the elevation heatmap (Tools → Elevation Heatmap)
- In the legend panel, drag the Min slider up to just below your area's lowest elevation
- Drag the Max slider down to just above your area's highest elevation
- The full color spectrum now stretches across your local range, revealing terrain detail
Click Reset to restore the full default range at any time.
Yes. All elevation legend controls are fully keyboard-accessible:
- Tab moves between each slider, number input, the "Remember range" checkbox, and the opacity slider.
- Arrow keys on a focused slider adjust the value by 10m.
- Page Up / Page Down on a focused slider adjust the value by 100m — useful for quickly spanning large ranges.
- Mouse wheel on a focused slider nudges the value by 10m per scroll tick.
- The number fields next to each slider accept typed values directly. Press Enter to apply or Escape to cancel.
Check the "Remember range" checkbox in the elevation legend panel. Your current Min and Max values are written to local storage and restored automatically on every subsequent launch. Uncheck the box to stop persisting the range.
The app is designed for LoRa mesh networks, but the propagation and terrain analysis tools work with any frequency. You can configure custom radio parameters to match other RF technologies.
The catalog includes 11+ LoRa devices across three firmware families:
- Meshtastic: T-Beam, Heltec V3, RAK19007, and others
- MeshCore: Supported devices with MeshCore firmware
- Reticulum/RNode: RNode-compatible devices
- US FCC 915 MHz
- EU 868 MHz
- EU 433 MHz
- ANZ (Australia/New Zealand)
Each region enforces appropriate frequency, power, and duty cycle limits.
Click Export in the toolbar and save the .meshplan file. This JSON file contains your complete plan and can be re-imported on any machine.
Export your plan as a .meshplan file and send it to them. They can import it using Import → Import Plan in their copy of the app.
Delete the SQLite database file at the location listed above under "Where is my data stored?" The app will create a fresh database on next launch.
- Check your internet connection (map tiles require internet on first view)
- Try a different browser
- Clear browser cache and reload
First-time terrain data download can take 1-5 minutes depending on area size. Subsequent runs use cached data and are much faster. Plans with many nodes take longer to analyze.
- Check that port 8321 is not already in use by another application
- On Windows, check Task Manager for an existing MeshCommunityPlanner process
- On macOS/Linux, run
lsof -i :8321to check for port conflicts
- Verify antenna height is set correctly (default 10m may not match your deployment)
- Make sure you ran terrain propagation, not just FSPL preview
- Check that frequency and transmit power match your actual hardware
For more troubleshooting help, see TROUBLESHOOTING.md.
Last Updated: March 2026 Version: 1.3.5