SPT Sri Pranav Tene
← all work

01 / Privacy · End-to-end encryption

Lupyd

Privacy-focused collaboration platform with end-to-end encryption, where the server relays and stores data it cannot read.

Signal + MLS 1-on-1 and group encryption
4 platforms macOS · Windows · Linux · Android
On-device full-text search index
Zero ads, trackers or telemetry

Lupyd is a workspace where nothing leaks. Teams organise conversations into channels, message each other in real time, share files and call, and every message is encrypted on the sender’s device before it leaves it. The server routes and stores ciphertext it cannot read.

I founded Lupyd and lead its engineering, from the Rust backend and the encryption layer to the transports and the clients.

Encryption is the architecture

Encryption isn’t a feature bolted onto Lupyd; every other part is shaped around it.

WhatProtected with
Direct messagesSignal Protocol, keys held only by the two people talking
Group chats and channelsMLS (RFC 9420), via Firefly
Files, attachments and backupsAES, encrypted on the client before upload
Voice and videoEncrypted, peer to peer, with screen sharing

Because the server only ever sees ciphertext, features that usually run server-side have to move to the device. Search is the clearest example: every client keeps its own inverted index in SQLite, so a query over months of history returns in milliseconds and the search terms never leave the machine.

A Lupyd group channel on desktop Local full-text search across channels Defining custom roles and permissions Encrypted media shared in a workspace

A workspace you shape

  • Channels: public or private, text, voice or announcement, with their own topics and member access.
  • Roles with no fixed hierarchy: there is no built-in admin or moderator. A role is any name plus any combination of permission flags, and anything can be assigned to anyone.
  • Multi-device: one account across desktop and phone. Each device holds its own keys and joins the encrypted groups as a member.
  • No ads, trackers or algorithmic feeds: conversations are chronological, and there is no telemetry to opt out of.

How it fits together

The backend is Rust. Clients reach it over WebSockets or WebTransport (HTTP/3 over QUIC), and calls go peer to peer over WebRTC. The desktop apps use React and Tauri. Group messaging is built on Firefly, the MLS client suite I open-sourced from Lupyd, and anonymous surveys come from Noon.

  +-------------+   WebSocket /    +-----------------+
  | web (React) |<- WebTransport ->|                 |
  +-------------+                  |  Rust backend   |
                                   |                 |
  +-------------+                  |  sees metadata  |
  |   desktop   |<---------------->|  it needs, not  |
  |   (Tauri)   |                  |  what you said  |
  +------+------+                  +-----------------+
         |
         |  WebRTC, peer to peer
         v
  +-------------+
  | other peer  |
  +-------------+

Figure 1: Lupyd at a glance (illustrative)

Try it

Download the apps from lupyd.com, or open the browser version at app.lupyd.com.