Fernweh V2 is live: a private messenger for the network you actually have
Most messengers are designed around one assumption: the server is reachable. The interface may cache a draft or show an offline badge, but discovery, identity, delivery, and reconciliation still stop at the edge of the network. Fernweh began with a different premise: the internet should be a capability, not a prerequisite.
Today, Fernweh V2 is live. What began as Bluetooth mesh messaging is now a complete private messenger that works across local and internet paths. Every installation remains a node in the Offline Protocol network, while the product above that network has been rebuilt around the things people expect every day: direct and group conversations, rich media, private search, verifiable identity, reputation, and end-to-end encrypted voice and video calls.
V2 is not a conventional messenger with a separate offline mode. It is one conversation model operating across changing network conditions. Fernweh can use nearby Bluetooth and Wi-Fi paths when they exist, extend delivery through an encrypted internet relay when it is available, retain work on the device when no path is usable, and reconcile without turning one message into several copies. The sender should not have to understand the route. They should be able to send once and trust the application to preserve the conversation.
The architecture at a glance
Fernweh V2 runs on the same Offline Protocol foundation that has grown to more than 350,000 devices across 80 countries: the Dynamic Offline Relay Switch (DORS) for multi-transport delivery, OfflineID for locally verifiable peer identity, and Messaging Layer Security (MLS) for encrypted sessions. Around those protocol layers, V2 adds local state, private retrieval, account discovery, reputation, and real-time media without making any one server the authority for the entire product.
| Layer | Fernweh V2 component | Local trust boundary | Role of online infrastructure |
|---|---|---|---|
| Delivery | DORS across nearby and internet paths | Queue, retry, route selection, acknowledgments, and deduplication remain with the endpoints | Relays extend reach by carrying encrypted traffic |
| Identity | Device-generated Ed25519 identity plus OfflineID | The private key remains on-device; peers verify signed identity material locally | The directory binds a memorable username to a proved device identifier |
| Messaging | MLS sessions and encrypted local conversation state | Message content, session keys, history, and attachment encryption remain endpoint-controlled | Push and relay services move ciphertext and availability signals |
| Search and reputation | Encrypted SQLite, FTS5, and contextual reputation signals | Message indexing and message-body search happen on the device | Global username lookup and shared reputation inputs require limited shared services |
| Calls | LiveKit media with Fernweh call signaling | A fresh call key is created on-device and delivered through an existing secure session | Signaling locates participants; media infrastructure carries encrypted real-time streams |
This separation is the point. Servers still do useful work, but each one gets a narrow job. A relay moves encrypted bytes. A directory resolves a readable name. A signaling service helps endpoints join the same media session. None of those jobs requires one service to own the user’s identity, conversation history, message index, and call keys at once.
One conversation across changing paths
The hard problem was not putting multiple transports behind one send button. It was making them behave like one coherent messenger. Fernweh uses its encrypted local database as the source of truth for each conversation. If the same encrypted message arrives over a nearby path and an internet path, it is deduplicated. When queued traffic reconnects, state reconciles into the existing thread instead of creating a second history. Delivery and read state can advance without making a relay the canonical inbox, and push notifications carry ciphertext rather than readable message content.
That model now supports direct and group conversations with replies, reactions, edits, forwarding, deletion, pinned messages, read receipts, typing indicators, and scheduled delivery. People can exchange photos, videos, voice notes, documents, stickers, GIFs, and locations; organize chats into folders; customize themes and wallpapers; and protect the whole application or individual conversations with biometric locks. These are familiar product details, but implementing them on an unreliable network forces a sharper contract: a feature must either continue locally, queue safely, or expose an honest dependency. It cannot silently pretend that a missing network still exists.
The product contract remains simple: send once, read once, deliver once, whether the bytes crossed a nearby link, several peers, an internet relay, or more than one of those paths before the state converged.
Discovery and identity that still make sense nearby
A resilient messenger cannot begin and end with “enter a username and ask the directory.” People meet while standing near one another, through existing contacts, or by exchanging an invitation in person. Fernweh V2 supports nearby discovery over Bluetooth, privacy-conscious contact matching, and QR or shareable invitations alongside searchable OfflineIDs. Each path leads to an explicit connection request so discoverability does not automatically become permission to send unsolicited messages.
Underneath the friendly name, Fernweh V2 creates an Ed25519 identity key on the device. The SDK version shipped in the current application derives a deterministic peer identifier from the public key using SHA-256 and Base58, signs the Bluetooth identity advertisement, and lets another device verify that proof locally. The private key does not need to leave the device, and nearby verification does not depend on a live certificate-authority round trip. Ed25519 provides the peer identity proof, while MLS provides message confidentiality and participant authentication inside conversations; the two are complementary rather than duplicate security layers.
OfflineID gives that cryptographic identity a name a person can remember. The shared directory can bind a username to proved device material, while the peer-to-peer layer continues to use the verified device identity underneath. Human-readable identity and cryptographic identity have different jobs; keeping them separate makes impersonation harder and gives Fernweh a cleaner path toward multiple devices per person.
Cryptography can prove control of a key, but it cannot prove that the person controlling it will behave well. V2 therefore treats reputation as context rather than a verdict. Account age, verified connections, referrals, real interaction diversity, ecosystem participation, recency, and optional proofs can contribute with caps and diminishing returns instead of allowing raw activity volume to become unlimited trust. Reputation helps a recipient evaluate a request; it does not silently override their decision. Hard boundaries remain explicit through rate limits, signed identity material, connection acceptance, abuse controls, and blocking.
Search without uploading the conversation
Fernweh V2 also rebuilds search around the location of the data. Conversation names and known people can be matched locally. OfflineID lookup reaches the directory because global name discovery requires shared knowledge. Message bodies do not need to leave the phone.
The application maintains SQLite FTS5 indexes inside the encrypted local database, with separate coverage for direct and group messages and triggers that follow inserts, edits, and deletions. People can search inside one conversation or across their history, filter results, and open the exact matching message. Locked-chat results remain concealed until biometric authentication succeeds. Existing history is indexed in resumable chunks so a large database does not freeze startup: new messages become searchable immediately, older history backfills between interface work, and a completion marker prevents the same migration from running on every launch.
The result is global message search for the user without a global message index for the service. It is fast because the index sits beside the encrypted history, and private because the search engine is the device already trusted to display that history.
Calls use the internet without handing it the keys
Live media has different physical requirements from asynchronous messaging. Nearby devices can store, carry, and forward messages through an outage; they cannot honestly promise the continuous bandwidth and latency of a voice or video call. Fernweh keeps that boundary explicit: messaging can survive without an internet path, while live calls require one.
When that path exists, V2 adds one-to-one and group audio and video calling with LiveKit for real-time media and a deliberately small signaling layer. The service can locate an account and help participants reach the same room, but sensitive call material is encrypted for the recipient through Fernweh’s existing secure device session. A fresh 256-bit key is created on the caller’s device for each call and used to protect the media end to end. For a group call, the room key is wrapped separately for each invited device; if a secure session is not ready, Fernweh does not fall back to sending the key in plaintext.
The operational details matter as much as the cryptographic diagram. Fernweh can select among media regions by latency, use adaptive streaming to reduce work for small or hidden video surfaces, stop publishing layers no participant is consuming, and prioritize active speakers rather than forcing a phone to decode every available stream. Signaling state remains short-lived and deliberately narrow. The infrastructure helps the call happen, but it does not become the permanent owner of the people, the conversation, or the key.
A messenger shaped by the network beneath it
Fernweh V1 proved that a phone-native mesh could grow through a real consumer application. V2 turns that proof into a messenger people can use for ordinary conversations, not only for the moment connectivity disappears. The visible release is larger and more familiar; the deeper change is architectural. Transport can change without splitting the conversation. Device identity can be verified nearby. Reputation can add context without becoming automatic censorship. Search can span a user’s history without uploading that history. Calls can use internet infrastructure without giving that infrastructure the media key.
Fernweh V2 is the messenger we wanted for ourselves: private, complete, and built to keep the conversation moving when the network cannot. Download Fernweh V2.
Ankush is a Senior Fullstack Engineer at Offline Protocol, where he works across Fernweh's messaging, discovery, and application infrastructure. His background spans peer-to-peer mobile applications, distributed systems, and onchain infrastructure—systems where a server cannot be assumed to remain reachable. That experience shaped his focus on local persistence, locally verifiable identity, and transport that keeps moving when the obvious path disappears.
His work on AI-driven onchain tooling and passkey-verified peer-to-peer payments earned recognition at ETHIndia and ETHForAll, followed by work on smart-contract marketplaces at M0 and cross-chain notification tooling at Bytekode. Away from the keyboard, he is usually in the gym or on a football pitch.
Aditi is a Senior Fullstack Engineer at Offline Protocol, where she builds backend and application infrastructure for systems that need to remain useful when the network does not. Her work spans Fernweh V2's identity, discovery, reputation, and private-search layers, as well as event-driven services and developer tooling across TypeScript, Rust, Kafka, PostgreSQL, Redis, and AWS.
Before Offline Protocol, Aditi worked across full-stack engineering, backend infrastructure, developer identity, and technical writing. Her projects have earned awards at ETHIndia and Devfolio hackathons, and she has spoken at ETHMumbai about the event-driven architecture behind production applications. She also played basketball at the state level.
Mizan is a Software Development Engineer at Offline Protocol, where he works on Fernweh V2's calling and real-time media systems and helped take the release live within his first month. He brings more than four years of experience across complex frontend engineering, real-time systems, and onchain interactions, with a focus on carrying Fernweh's device-bound identity and encryption model into a practical calling experience.
Before Fernweh V2, Mizan spent more than three years at Huddle01, most recently as Lead Product Engineer, where he shipped a WebRTC video-conferencing application and cross-platform SDKs used by other developers. He also writes technical deep dives and creates developer content.