Skip to content

Latest commit

 

History

66 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OSHI Mesh Messenger

OSHI

Send a message with no internet, no SIM card, and no account.
Phones relay for each other over Bluetooth. Everything is end-to-end encrypted.

Download on the App Store verify Protocol Crypto source published MIT Website


The one thing OSHI does that others don't

Turn on airplane mode. Open OSHI. Your messages still send.

Nearby phones running OSHI form a Bluetooth mesh and pass encrypted packets for each other, hop by hop, until one of them reaches the recipient — or reaches the internet. No cell tower, no Wi-Fi, no server in between.

That matters in three situations, and they are not hypothetical:

  • A protest or a stadium where the cell network is saturated or shut off.
  • A plane, a boat, a basement, a mountain — anywhere with no coverage.
  • A country that cuts the internet. OSHI needs no VPN to keep working locally.

Everything else — the encryption, the absence of a phone number, the disappearing messages — exists in other apps too. This one does not.

The conversation list An end-to-end encrypted conversation Public groups discovered over the Bluetooth and Wi-Fi mesh, with no internet The offline map, usable with no network


How the encryption works

OSHI implements the Double Ratchet with X3DH key agreement — the same construction Signal uses — with AES-256-GCM for message encryption and Curve25519 for key exchange. Forward secrecy and post-compromise security both hold: an attacker who steals today's keys can read neither yesterday's messages nor tomorrow's.

Your identity is a keypair generated on your device. There is no phone number, no email, no account, and nothing to seize. You add someone by scanning a QR code or pasting their public key.

The implementation is in this repository and you can read it:

File What it is
src/DoubleRatchet.swift The ratchet: chain keys, skipped-message keys, DH steps
src/OSHICryptoV2.swift X3DH, AEAD, the header format
src/MeshNetworkManager.swift Peer discovery, routing, store-and-forward
src/CrossPlatformMesh.swift The iOS ↔ Android bridge: BLE presence, Bonjour discovery, TCP transport
src/MeshRelay.swift Multi-hop relay: hop ceiling, loop suppression, dedup cache
docs/protocol.md The wire protocol, in full
docs/encryption.md Threat model and key lifecycle

On "open source", precisely: the cryptographic core, the mesh layer and the bot SDK are published here under MIT. The application shell around them — UI, App Store plumbing, media pipeline — is not. We would rather tell you exactly what you can audit than claim a green checkmark we have not earned. If you find a flaw in what is published, see the bug bounty below.


Also in the app

Steganography. Hide a message inside an ordinary photo. The carrier image looks and opens like any other picture.

Covert channels. Traffic that resembles ordinary HTTPS requests, for networks that block or fingerprint messengers.

Offline AI. A local model runs on the device. Nothing is sent anywhere.

Encrypted voice and video calls, peer-to-peer where the network allows it, relayed through a blind TURN server where it does not.

Bot API with a Python SDK — build a bot that talks to a group without ever touching a phone number.


How OSHI compares

OSHI Signal Session Briar
Works with no internet at all
No phone number required
Double Ratchet encryption
Encrypted voice calls
Steganography
Offline on-device AI
Bot API
Fully open source ⚠️ core

Briar is the closest thing to OSHI and deserves the credit: it pioneered offline-first messaging on Android. OSHI brings the same idea to iOS, adds voice calls and a bot API, and is fully open about which parts you can audit.


Bot SDK

pip install requests   # the SDK has no other dependency
from oshi_bot import OSHIBot

bot = OSHIBot(token="your-bot-token")        # created inside the OSHI app
bot.send_message(group_id="...", text="Deploy finished ✅")

@bot.on_message
def echo(msg):
    bot.reply(msg, f"You said: {msg.text}")

Full reference: sdk/README.md · docs/bot-api.md


Security

Report a vulnerability privately: security@oshi-messenger.com Please do not open a public issue for a security bug.

Bug bounty, paid from a solo developer's own pocket, so the numbers are honest rather than impressive:

Severity Example Reward
Critical Break the encryption, read messages you should not $500
High Bypass authentication, impersonate a user $250
Medium Leak metadata the protocol promises to hide $100

Details and threat model: Security.md


Contributing

Issues and pull requests are welcome — especially on the cryptographic core, where a second pair of eyes is worth more than a feature.


Download

Download on the App Store

iOS and macOS. Android is in closed testing.


Built by one person, in the open, because privacy should not require trusting a company.
MIT licensed · oshi-messenger.com

About

Send a message with or without internet, no SIM, and no account. End-to-end encrypted (Double Ratchet + X3DH) Bluetooth & LoRa mesh messenger for iOS, macOS and Android.

Topics

Resources

Contributing

Security policy

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages