MeshLive/meshlive-android

Encrypted voice and video calls, live audio and video streams between phones over a Bluetooth mesh. No internet needed.

Kotlin

16

18 commits

updated Oct 17, 2026

See the code

See what people are saying

SourceMessageScoreDate

MeshLive turns nearby phones into a livestreaming network. No internet or server - just Bluetooth. (r/coolgithubprojects)

One phone starts a live broadcast. Another phone watches it and passes it on. A third phone receives it through the second. **None of them needs an internet connection.** That’s the idea behind **MeshLive**, a free, open-source project I’m building for **Android and iOS**. Alongside live…

2

Oct 18, 2026

README

MeshLive

Encrypted voice and video calls, live video and live audio between phones over a Bluetooth mesh. No internet needed.

Download MeshLive for Android   Get it on Obtainium

Android 10 or newer · free · no account · How to install

OpenSSF Scorecard CodeQL

Live nearby: a radio and a video stream Go live: video and audio, or audio only Calls: people nearby Settings Welcome

What you can do

  • Call people nearby. Voice or video, end-to-end encrypted, phone to phone.
  • Go live. Share your camera with everyone around you, or go audio only, like a local radio that keeps playing with the screen off.
  • Reach further. Phones in between pass calls and streams along, so you can reach people out of your own Bluetooth range.
  • Stay private. No internet, SIM card, account or server. Strangers see a random name; your contacts recognise you.

Built for blackouts, disasters, censorship, remote places and crowded events. Free and open source (GPL-3.0).

How it works

Your phone talks to nearby phones over Bluetooth, about 10 to 30 metres, never through the internet. A phone that receives a stream can pass it on, and the next phone can pass it on again: that chain is the mesh. Bluetooth is slow, so video is small and gets a little more delayed with each hop; audio-only streams reach further.

 Source phone ))) Viewer phone ))) Viewer phone ))) ...
     (camera)     (also relays)    (also relays)

Privacy

  • The ID your phone broadcasts is random and changes every 15 minutes, so a listener cannot follow you.
  • Calls hide both phones' identities from anyone listening in. A stranger sees a throwaway identity until you answer.
  • Your name, if you set one, is never broadcast. A stream title is public, so everyone nearby can read it.

Limits, plainly: a live stream shows its source to everyone who watches; on Android 13 and older a phone that connects to yours can read its Bluetooth name; anyone whose call you accept learns who you are; there has been no independent security audit. Details: docs/PRIVACY.md.

Install

  1. On your phone, tap Download MeshLive.
  2. Open the file. If Android asks, allow your browser to install unknown apps, then tap Install.
  3. Open MeshLive and allow Nearby devices, Camera and Microphone.

Both people need MeshLive. To get updates automatically, add the project in Obtainium with the button above. With no internet, a friend can send you the app: in MeshLive, Settings, then Share this app. The app can also check for updates, but only if you say yes.

To check a download is genuine, see how to verify a release. Other install options, the file list, features and common questions are in the user guide.

Status

MeshLive is in beta, tested on seven phones from Samsung, Xiaomi, ASUS and OPPO (Android 10 to 16) and with a first iPhone. Results vary by phone pair: see docs/DEVICES.md. Do not rely on it where your safety depends on it. An iPhone app is in development.

Please report your phone. The device report form takes two minutes; reports where everything worked help as much as failures.

Build from source

You need JDK 21, the Android SDK with NDK 28.2.13676358 and CMake 3.22.1, Perl and Python 3.11 or newer.

python tools/fetch_native_sources.py   # downloads the pinned libaom and libopus
./gradlew :app:testDebugUnitTest :app:assembleGithubDebug

The APK is app/build/outputs/apk/github/debug/app-github-debug.apk. Developers can read docs/ARCHITECTURE.md (how it is built, build notes), docs/SWITCHES.md (the list of experimental switches) and docs/PROTOCOL.md (wire formats and security rules). Test results are in MeshLive/meshlive-benchmarks.

Documentation

I want to...Read
Install, update, verify, use the app, get answersdocs/USER_GUIDE.md
Know what is exposed and what is hiddendocs/PRIVACY.md
See which phones workdocs/DEVICES.md
Understand how it is builtdocs/ARCHITECTURE.md
Look up an experimental or optional switchdocs/SWITCHES.md
Implement or review the wire format and security rulesdocs/PROTOCOL.md
See what is unfinisheddocs/PLAN.md
Test on phones, or read why a measured choice was madedocs/TESTING.md, docs/DECISIONS.md
Contribute, or follow the rules for coding agentsCONTRIBUTING.md, AGENTS.md

Contributing

Bug reports, device results, documentation and code are welcome. Start with CONTRIBUTING.md. Please follow the code of conduct.

Security

Report vulnerabilities privately through GitHub private vulnerability reporting. See SECURITY.md.

How this was built

Most of the code was written with AI assistance (Anthropic's Claude), directed by the maintainer, who decides what the app does and tests it on real phones. It has not had an independent security audit.

License

GPL-3.0-or-later. See LICENSE and THIRD_PARTY_NOTICES.md.

android
android-app
anti-censorship
bluetooth
bluetooth-low-energy
censorship-resistance
decentralized
disaster-response
end-to-end-encryption
internet-shutdown
kotlin
live-streaming
mesh-network
off-grid
offline-first
open-source
p2p
privacy
video-calling
voice-calls

MeshLive/meshlive-android

Encrypted voice and video calls, live audio and video streams between phones over a Bluetooth mesh. No internet needed.

Kotlin

16

18 commits

updated Oct 17, 2026

See the code

See what people are saying

SourceMessageScoreDate

MeshLive turns nearby phones into a livestreaming network. No internet or server - just Bluetooth. (r/coolgithubprojects)

One phone starts a live broadcast. Another phone watches it and passes it on. A third phone receives it through the second. **None of them needs an internet connection.** That’s the idea behind **MeshLive**, a free, open-source project I’m building for **Android and iOS**. Alongside live…

2

Oct 18, 2026

README

MeshLive

Encrypted voice and video calls, live video and live audio between phones over a Bluetooth mesh. No internet needed.

Download MeshLive for Android   Get it on Obtainium

Android 10 or newer · free · no account · How to install

OpenSSF Scorecard CodeQL

Live nearby: a radio and a video stream Go live: video and audio, or audio only Calls: people nearby Settings Welcome

What you can do

  • Call people nearby. Voice or video, end-to-end encrypted, phone to phone.
  • Go live. Share your camera with everyone around you, or go audio only, like a local radio that keeps playing with the screen off.
  • Reach further. Phones in between pass calls and streams along, so you can reach people out of your own Bluetooth range.
  • Stay private. No internet, SIM card, account or server. Strangers see a random name; your contacts recognise you.

Built for blackouts, disasters, censorship, remote places and crowded events. Free and open source (GPL-3.0).

How it works

Your phone talks to nearby phones over Bluetooth, about 10 to 30 metres, never through the internet. A phone that receives a stream can pass it on, and the next phone can pass it on again: that chain is the mesh. Bluetooth is slow, so video is small and gets a little more delayed with each hop; audio-only streams reach further.

 Source phone ))) Viewer phone ))) Viewer phone ))) ...
     (camera)     (also relays)    (also relays)

Privacy

  • The ID your phone broadcasts is random and changes every 15 minutes, so a listener cannot follow you.
  • Calls hide both phones' identities from anyone listening in. A stranger sees a throwaway identity until you answer.
  • Your name, if you set one, is never broadcast. A stream title is public, so everyone nearby can read it.

Limits, plainly: a live stream shows its source to everyone who watches; on Android 13 and older a phone that connects to yours can read its Bluetooth name; anyone whose call you accept learns who you are; there has been no independent security audit. Details: docs/PRIVACY.md.

Install

  1. On your phone, tap Download MeshLive.
  2. Open the file. If Android asks, allow your browser to install unknown apps, then tap Install.
  3. Open MeshLive and allow Nearby devices, Camera and Microphone.

Both people need MeshLive. To get updates automatically, add the project in Obtainium with the button above. With no internet, a friend can send you the app: in MeshLive, Settings, then Share this app. The app can also check for updates, but only if you say yes.

To check a download is genuine, see how to verify a release. Other install options, the file list, features and common questions are in the user guide.

Status

MeshLive is in beta, tested on seven phones from Samsung, Xiaomi, ASUS and OPPO (Android 10 to 16) and with a first iPhone. Results vary by phone pair: see docs/DEVICES.md. Do not rely on it where your safety depends on it. An iPhone app is in development.

Please report your phone. The device report form takes two minutes; reports where everything worked help as much as failures.

Build from source

You need JDK 21, the Android SDK with NDK 28.2.13676358 and CMake 3.22.1, Perl and Python 3.11 or newer.

python tools/fetch_native_sources.py   # downloads the pinned libaom and libopus
./gradlew :app:testDebugUnitTest :app:assembleGithubDebug

The APK is app/build/outputs/apk/github/debug/app-github-debug.apk. Developers can read docs/ARCHITECTURE.md (how it is built, build notes), docs/SWITCHES.md (the list of experimental switches) and docs/PROTOCOL.md (wire formats and security rules). Test results are in MeshLive/meshlive-benchmarks.

Documentation

I want to...Read
Install, update, verify, use the app, get answersdocs/USER_GUIDE.md
Know what is exposed and what is hiddendocs/PRIVACY.md
See which phones workdocs/DEVICES.md
Understand how it is builtdocs/ARCHITECTURE.md
Look up an experimental or optional switchdocs/SWITCHES.md
Implement or review the wire format and security rulesdocs/PROTOCOL.md
See what is unfinisheddocs/PLAN.md
Test on phones, or read why a measured choice was madedocs/TESTING.md, docs/DECISIONS.md
Contribute, or follow the rules for coding agentsCONTRIBUTING.md, AGENTS.md

Contributing

Bug reports, device results, documentation and code are welcome. Start with CONTRIBUTING.md. Please follow the code of conduct.

Security

Report vulnerabilities privately through GitHub private vulnerability reporting. See SECURITY.md.

How this was built

Most of the code was written with AI assistance (Anthropic's Claude), directed by the maintainer, who decides what the app does and tests it on real phones. It has not had an independent security audit.

License

GPL-3.0-or-later. See LICENSE and THIRD_PARTY_NOTICES.md.

android
android-app
anti-censorship
bluetooth
bluetooth-low-energy
censorship-resistance
decentralized
disaster-response
end-to-end-encryption
internet-shutdown
kotlin
live-streaming
mesh-network
off-grid
offline-first
open-source
p2p
privacy
video-calling
voice-calls

Project health

Overall

5.6/10

Maintained

0/10

Code review

0/10

Contributors

3/10
OpenSSF Scorecard