Why OSHI Mesh: what it adds to Meshtastic and MeshCore
OSHI Mesh is not a new network you have to convince your friends to join. It is open-source LoRa firmware that stays on the Meshtastic network and reaches MeshCore through a bridge, and adds what those networks leave to the user: messages longer than one packet, proof that the whole message arrived, and messages that wait for someone who is offline.
| Available today | Coded, in the next OSHI app update |
|---|---|
| OSHI Mesh firmware for 150 boards from Heltec, LILYGO, RAK, Seeed, Elecrow, B&Q and more, flashed from your browser The open protocol, spec and reference code: oshi-mesh-protocol The Meshtastic ↔ MeshCore bridge: oshi-meshcore-bridge (tested over the air on MeshCore radios) |
The OSHI app speaking the protocol itself on a stock Meshtastic radio The OSHI app on a MeshCore radio A phone holding one radio of each bridging the two networks |
What it adds, in one table
| Stock Meshtastic | MeshCore | OSHI Mesh | |
|---|---|---|---|
| Longest message | About 230 bytes, one packet | About 160-180 bytes, one packet | 11,648 bytes, split into 182-byte fragments and reassembled |
| Lost fragment | The whole message is resent | The whole message is resent | Only the missing fragments are resent (64-bit bitmap) |
| Delivery confirmation | Acknowledgement of a single direct packet | Acknowledgement of a direct message | DELIVERED for the whole message, end to end, also when a relay held it |
| Recipient offline | Direct message dropped after a few tries; Store & Forward is text-only, on routers with PSRAM | Room servers keep posts for their members; the companion radio keeps what arrives while the phone is away | Any OSHI node parks the message in flash for 72 h and delivers it when the recipient is heard again |
| Uses the network already around you | Yes (it is that network) | Yes (it is that network) | Yes, both: stock Meshtastic nodes relay OSHI traffic without being able to read it; MeshCore through a bridge |
| Official apps still work on the radio | Yes | Yes | Yes: the Meshtastic apps, CLI and web client work with an OSHI Mesh node |
| Message encryption | Channel key (AES) or PKI direct messages | AES-128 channels, key agreement for direct messages | Radio encryption as on Meshtastic, plus OSHI end-to-end encryption between phones (X3DH, AES-256-GCM, Double Ratchet in the v3 session format) |
| Without any radio | No | No | Yes: the OSHI app meshes phones over Bluetooth and Wi-Fi Direct; the radio adds kilometres |
| Protocol licence | Firmware GPL-3.0 | Firmware MIT | Firmware GPL-3.0, protocol spec CC BY 4.0 and reference code MIT, so any project can adopt it |
Meshtastic and MeshCore columns: their published documentation and firmware sources. OSHI Mesh: firmware source and protocol specification.
Why it can ride networks it does not own
Every OSHI message travels as ordinary packets on its own encrypted OSHI channel. A stock Meshtastic
node cannot read that channel, so it relays the packets as it relays any traffic it cannot decrypt, including routers
set to CORE_PORTNUMS_ONLY, which drop private-app traffic they can read. We tested it in simulation:
two OSHI nodes out of range of each other, a stock node between them as client and then as router; the message
crossed and the sender saw delivered. The limit: a node its owner set to relay only their own channels
(LOCAL_ONLY, KNOWN_ONLY) will not carry it.
A radio listens to one network at a time, so MeshCore is reached through a bridge: one host, or one phone, holding a
Meshtastic radio and a MeshCore radio, repeating OSHI frames between them. On MeshCore the frames ride a dedicated
group channel, #oshi-bridge, which MeshCore repeaters flood like any channel message; MeshCore users who
do not carry that channel never see it. Tested over the air on 23 September 2026: OSHI messages of 600 and
2,000 bytes crossed between two MeshCore radios (official MeshCore firmware 1.17.1), byte for byte, in both
directions.
Where Meshtastic and MeshCore are ahead
- Maturity and people. Meshtastic has years of field use, a large community and many apps; MeshCore has a fast-growing network of repeaters. OSHI Mesh is new: its 150 board builds come from the same board code as Meshtastic, and field testing so far is on the Heltec V3.
- Airtime. MeshCore routes along learned paths instead of flooding every message, which scales better on a busy network. OSHI Mesh uses Meshtastic's routing and adds its own traffic (a 7-byte beacon every 15 minutes, fragments for long messages), paced so it never takes more than the duty cycle allows.
- Features around the message. Maps, telemetry, sensors, waypoints, room servers: the stock firmwares and their apps have them, and an OSHI Mesh node keeps all of Meshtastic's.
- Not tested yet: a bridge with real radios on both networks at once (the MeshCore side is tested over the air), and the internet gateway's server side.
Switch from Meshtastic in two minutes
- Open the flasher in Chrome or Edge on a computer and plug your node in over USB.
- Choose your board and tick “Keep my settings”. Only the firmware is replaced: your region, channels, keys and node list stay as they are.
- Keep using your Meshtastic app if you like: it works with an OSHI Mesh node, and your node stays on your Meshtastic mesh.
- Add the OSHI app for what Meshtastic does not do: long messages, delivery receipts, messages that wait for someone offline, end-to-end encryption between phones, and a phone mesh that works with no radio at all. You still reach people who stayed on the Meshtastic app: OSHI sends and receives plain Meshtastic text on the public channel.
Changed your mind? Flash stock Meshtastic back from its own flasher; your settings survive that too.
Every region in the world
OSHI Mesh keeps every LoRa band the Meshtastic firmware knows, with each country's frequencies, power and duty-cycle limits: Europe 433, 866, 868, 874 and 917 MHz; USA 915; Brazil 902; China 470; Japan, Korea and Taiwan 920; India 865; Nepal 865; Thailand 920; Malaysia 433 and 919; Singapore 923; the Philippines 433, 868 and 915; Kazakhstan 433 and 863; Russia 868; Ukraine 433 and 868; Australia and New Zealand 433, 865 and 915; and 2.4 GHz worldwide. Choose your region once, at first start; a new node transmits nothing until you do.
On amateur-radio bands (2 m, 70 cm, 1.25 m, licensed operators only) encryption is not allowed, so an OSHI Mesh node in licensed mode refuses to send OSHI messages and keeps working as a plain Meshtastic node.
Open source, and built to be copied
The firmware is open source (oshi-mesh-firmware, GPL-3.0) and compatible with Meshtastic and MeshCore. The protocol has its own repository, oshi-mesh-protocol: the specification under CC BY 4.0, reference code in C++ and Python under MIT, and test vectors checked on every commit. MIT means MeshCore, a Meshtastic fork, a gateway or a closed app can take the code as it is. The aim is one reliable message layer across the LoRa networks people already run, not another island.
Frequently asked questions
Do I lose my Meshtastic network if I flash OSHI Mesh?
No. Same radio settings, channels and keys; you keep talking to stock nodes and relaying their traffic, and the Meshtastic apps keep working. The flasher can also update a node while keeping its settings.
Can OSHI Mesh talk to MeshCore directly?
Not with one radio: MeshCore uses other radio settings and another packet format. It takes a bridge with one radio on each network, either the open-source bridge on a small computer or, in the next app update, a phone paired with both radios.
Do I need the OSHI app?
To send OSHI messages, yes. Anyone can implement the protocol from the public specification; the reference code is MIT.
What does it cost?
Nothing. The firmware, the protocol, the bridge and the app are free.