“Freedom of speech requires freedom of whisper.”
We live in an era of networked everything — and surveillance of everything. Even the most "encrypted" messengers leak metadata, rely on centralized servers, or fall back on federated infrastructures with brittle assumptions.
It's time for something simpler, leaner, and more aligned with Bitcoin’s core ethos: Shade, a secure messaging client built on Taproot, NosDAV, and strong cryptography.
🌱 Why Shade?
Shade is a new kind of secure messaging tool:
- No central servers
- No global inboxes
- No dependence on “NIPs” or federated relays
- Just you, your Taproot key, and encrypted blobs shared via NosDAV.
Whether you're a developer, a privacy advocate, or someone who just wants to chat without compromise — Shade is for you.
🧩 How It Works
Shade uses Taproot public keys as identity anchors. Each user owns a Bitcoin-native keypair — the same ones used for signing transactions can be used for messaging.
🔐 Identity and Encryption
- Your Taproot key = your identity
- Messages encrypted with Double Ratchet (like Signal)
- Files and messages stored encrypted with AEAD (XChaCha20-Poly1305)
☁️ Storage: NosDAV
NosDAV is a lightweight, Nostr-authenticated file storage protocol. Shade uses it to:
- Store encrypted message blobs
- Retrieve messages privately
- Avoid centralized relays or server-side logic
Messages are stored like:
PUT /<receiver-pubkey>/shade/<obfuscated-hash>.msg
All messages are encrypted and path-obfuscated via HMAC.
🔎 Metadata Resistance
One of the biggest privacy failures in modern messengers isn’t encryption — it’s metadata:
- Who are you talking to?
- When?
- How often?
- From what IP?
Shade counters that:
Leak | Mitigation |
---|---|
Message content | Encrypted end-to-end |
Sender/receiver | Public keys only, no usernames |
Timestamps | Padded, delayed, optionally batched |
Subject lines | Not used — messages are opaque blobs |
Transport logs | NosDAV can be self-hosted or Tor-routed |
You can even use a different Taproot key per contact, or per session.
⚙️ The Developer Stack
Layer | Tech |
---|---|
Identity | Bitcoin Taproot keypairs (X-only) |
Encryption | Double Ratchet + XChaCha20 |
Storage | NosDAV (HTTP + Nostr Auth) |
UI | Preact + HTM (Web), Electron (Desktop), Capacitor (Mobile) |
CLI | Node.js prototype in progress |
🧪 Sample CLI
# Send a message
shade send --to npub1... --file message.txt
# Fetch new messages
shade fetch
# Start background sync
shade daemon
🌍 Platform Goals
- ✅ Web (PWA)
- ✅ Linux, macOS, Windows
- ⏳ Android + iOS
- ✅ Fully local-first, syncs when you choose
- ✅ No accounts. No phone numbers. Just keys.
💡 Why Not Nostr DMs?
Nostr DMs are clever but face major drawbacks:
- Metadata-heavy (global relays can see everything)
- Lack of forward secrecy
- No message expiration or secure deletion
- Centralized relay behavior incentivizes spam filtering
Shade fixes this by:
- Moving message delivery to your own encrypted storage
- Using modern crypto
- Putting you in full control
Top comments (0)