MeshCore Open
// install

Install the MeshCore Open client.

Pick the platform you're installing on. Builds for every release land on GitHub.

You'll also need hardware. MeshCore Open is the client app — you need a MeshCore-compatible LoRa radio node to actually use it. This page only covers installing the app.

Three install paths, in order of how most people install it: Google Play (auto-updates, easiest), Obtainium (auto-updates from GitHub releases without a Play account), or sideload the APK directly.

  1. 01
    Pick a source Play Store is the easy path. Obtainium tracks the GitHub release feed for users who prefer to skip Play. APKs are attached to every GitHub release if you want to sideload.
  2. 02
    Install Tap one of the install links in the codeblock below. For sideloading, allow installation from unknown sources when prompted.
  3. 03
    Pair your node Launch MeshCore Open. Grant Bluetooth + Location permission (Android requires Location to scan for BLE peripherals). Tap Scan to find your node.
install-on-android.url
# Google Play (recommended)https://play.google.com/store/apps/details?id=com.meshcore.meshcore_open

# Obtainium one-click import (no Play Store account needed)http://apps.obtainium.imranr.dev/redirect.html?r=obtainium://add/https://github.com/zjs81/meshcore-open

# or paste the source URL into Obtainium manuallyhttps://github.com/zjs81/meshcore-open

# or sideload the APK from a GitHub release$ adb install meshcore-open-Alpha8.apk

iOS builds ship through TestFlight. The public invite link is in the latest GitHub release. BLE works today; USB and TCP companion paths are still in progress on iOS.

  1. 01
    Install TestFlight From the App Store, install Apple's TestFlight if you don't already have it.
  2. 02
    Open the invite link Tap the TestFlight link below to join the beta. If it says full, check the latest GitHub release for a fresh slot.
  3. 03
    Open & pair Launch MeshCore Open. iOS will prompt for Bluetooth permission on first scan — allow it.
testflight-invite.url
# join the iOS TestFlight betahttps://testflight.apple.com/join/QzUGKJ65

# or build it yourself (Xcode 15+, Flutter 3.38.5+)$ git clone https://github.com/zjs81/meshcore-open.git$ flutter build ipa --release

Desktop builds connect to a node over BLE, USB serial, or TCP — useful for repeater hubs, headless boxes, and anyone who prefers a real keyboard. Builds are published with every release.

  1. 01
    Download from GitHub releases Pick the artifact for your OS from the latest release on github.com/zjs81/meshcore-open/releases.
  2. 02
    Allow serial access Linux: ensure your user is in the dialout group for /dev/ttyUSB*. macOS: approve the driver if prompted. Windows: install the USB CDC driver if Windows Update doesn't auto-install it.
  3. 03
    Connect by BLE, USB, or TCP Pair over BLE, plug in via USB, or point the app at tcp://<host>:<port> if you run a repeater hub on your LAN.
build-from-source.sh
# build any desktop target locally (Flutter 3.38.5+)$ git clone https://github.com/zjs81/meshcore-open.git$ cd meshcore-open && flutter pub get

# pick your platform$ flutter build linux --release$ flutter build macos --release$ flutter build windows --release

A Flutter web build runs in any Chromium browser. WebSerial connects to USB nodes; WebBluetooth pairs handhelds. TCP is not available in the browser — use a websocket bridge if you need it.

  1. 01
    Use a Chromium browser Chrome, Edge, Brave, Arc, or Opera. Firefox and Safari do not implement WebBluetooth or WebSerial.
  2. 02
    Open or self-host the web build Either visit a hosted instance, or build locally with `flutter build web --release` and serve `build/web/` over HTTPS.
  3. 03
    Grant device access Click Connect → choose your node from the WebSerial / WebBluetooth picker. Permissions persist per-origin.
browser-support
  Chrome / Edge       WebSerial · WebBluetooth · WebUSB  Brave / Arc / Opera same as Chrome~  Firefox             no WebSerial · no WebBluetooth~  Safari              no WebSerial · no WebBluetooth

# self-host the web build$ flutter build web --release$ cp -r build/web/ /var/www/your-host/