Sideband: Encrypted Messaging on Your Phone
This is Part 4 of a 12-part series on building private, resilient communication networks with Reticulum, LoRa, and associated tools.
MeshChat is great at a desk, but you probably want encrypted mesh messaging in your pocket. Sideband is a native LXMF client for Android, Linux, and macOS that gives you Reticulum-powered communication with a proper graphical interface.
What is Sideband?
Sideband is built by Mark Qvist, the creator of Reticulum itself. It's a full-featured messaging app that runs its own Reticulum instance internally — no separate daemon needed.
What makes it different from every other messenger: - No sign-up. No phone number, no email, no account. Your identity is a cryptographic keypair generated on your device. - No servers. Messages route peer-to-peer through the Reticulum network. - No metadata leakage. No central server logs who talks to whom. - Works offline. Connect via LoRa radio, local WiFi, or nothing at all (store-and-forward via propagation nodes). - Interoperable. Messages work with MeshChat, NomadNet, and any other LXMF client.
Installing Sideband
Android
Sideband is available as an APK. Download the latest release from the Sideband GitHub releases page. You'll need to enable "Install from unknown sources" in your Android settings.
There's also an effort to get Sideband on F-Droid — check the releases page for the latest status.
Linux
pip install sbapp
Or with system package restrictions:
pip install sbapp --break-system-packages
Then run:
sideband
macOS
pip3 install sbapp
Then run:
sideband
First Launch
When Sideband starts for the first time:
- It generates your Reticulum identity — a unique cryptographic keypair
- It creates an LXMF address derived from your identity
- It starts a Reticulum instance with the default AutoInterface (local network discovery)
You'll see your LXMF address displayed in the app. This is what you share with people who want to message you.
Connecting to the Wider Network
By default, Sideband only discovers peers on your local network. To reach the testnet and other remote nodes, you need to add a connection.
In Sideband, go to Connectivity settings and configure a TCP connection:
- Host:
dublin.connect.reticulum.network - Port:
4965
Or connect to any other public Reticulum transport node. You can find community-maintained lists at directory.rns.recipes and rmap.world.
Once connected, Sideband will start receiving announces from the wider network.
Sending Your First Message
To someone you know
- Get their LXMF address (a hex string like
8dd57a738226809646089335a6b03695) - Tap New Conversation
- Paste their address
- Type and send your message
The message is encrypted end-to-end. Only the recipient can read it.
To discover people on the network
- Tap Announce to broadcast your presence
- Wait for other users' announces to arrive
- Discovered users will appear in your contacts
Understanding Propagation Nodes
What happens when the recipient is offline? On a normal messenger, the server holds the message. Reticulum has no servers — but it has propagation nodes.
A propagation node is a Reticulum node running LXMF that stores messages for offline recipients. When the recipient comes online and connects to a propagation node, their waiting messages are delivered.
Sideband can be configured to use propagation nodes automatically. In the Propagation settings, you can specify a propagation node address, or let Sideband discover one on the network.
This is how Reticulum achieves store-and-forward messaging without any centralized infrastructure.
Sideband with Hardware
Sideband really shines when paired with radio hardware. It supports direct connection to RNodes via:
- USB serial — plug an RNode into your Android phone with an OTG cable, or into your Linux/macOS machine
- Bluetooth — pair an RNode with your phone wirelessly
- WiFi/TCP — connect to an RNode over your local network
We'll cover this in detail in Part 6 (Go Off-Grid), but the key point is: Sideband + RNode = encrypted messaging with zero internet dependency.
Key Sideband Features
| Feature | Details |
|---|---|
| End-to-end encryption | Curve25519 ECDH + AES, always on |
| Delivery receipts | Cryptographically signed proof of delivery |
| Image sharing | Send photos and images in conversations |
| Audio messages | Record and send voice clips |
| Location sharing | Share GPS coordinates with contacts |
| Telemetry | Share sensor data (temperature, battery, etc.) |
| Paper messages | Generate QR codes for passing messages physically |
| Propagation | Store-and-forward via LXMF propagation nodes |
| Multi-interface | Connect via WiFi, TCP, LoRa, Bluetooth, serial simultaneously |
Sideband vs. Signal, WhatsApp, etc.
| Sideband | Signal | ||
|---|---|---|---|
| Requires phone number | No | Yes | Yes |
| Requires internet | No | Yes | Yes |
| Central servers | None | Yes (Signal Foundation) | Yes (Meta) |
| Works over radio | Yes | No | No |
| Metadata collection | None | Minimal | Extensive |
| Open source | Yes | Partially | No |
| Works offline | Yes (with propagation nodes) | No | No |
The trade-off is obvious: Sideband doesn't have the polish or the billion-user network effect. But it works when nothing else does, and nobody is collecting your data.
Tips
- Announce periodically. Other nodes need your announce to know how to reach you. Sideband can be set to announce automatically at intervals.
- Use propagation nodes if you're not always online. This ensures messages reach you even when your device is off.
- Back up your identity. Your Reticulum identity is stored locally. If you lose it, you lose your address and nobody can message you at the old address anymore. Export it from Sideband's settings.
- Battery life on Android is reasonable but Sideband does need to run in the background to receive messages. Configure Android's battery optimization to not kill it.
Troubleshooting
No messages arriving: - Make sure you've announced recently - Check that your TCP interface is connected (Connectivity settings) - If using propagation, verify the propagation node address is correct and reachable
Can't connect to testnet: - Verify the hostname and port in Connectivity settings - Check that your device has internet access - Try an alternative transport node from the community lists
Android kills Sideband in background: - Go to Android Settings → Apps → Sideband → Battery → Unrestricted - Disable battery optimization for Sideband
What's Next
You can now send encrypted messages from your phone or desktop with zero infrastructure dependency. In the next guide, we'll add radio hardware — flashing an RNode onto a cheap ESP32 LoRa board so you can communicate without any internet at all.
Previous: [Part 3 — Send Your First Encrypted Message with MeshChat] Next: [Part 5 — Flash an RNode: Turn a $15 ESP32 LoRa Board into a Radio Modem]
