Proposed Architecture Synthesis

How It All Fits Together

                    ┌─────────────┐
                    │  PHYSICAL   │
                    │  MEETING    │
                    └──────┬──────┘
                           │
                    NFC tap / QR scan
                    (exchange keys)
                           │
                    ┌──────▼──────┐
                    │   CONTACT   │
                    │ ESTABLISHED │
                    └──────┬──────┘
                           │
              ┌────────────┼────────────┐
              │            │            │
       ┌──────▼──────┐ ┌──▼───┐ ┌──────▼──────┐
       │  BLE sync   │ │ WiFi │ │ Tor relay   │
       │  (nearby)   │ │Direct│ │ (opt-in)    │
       │  ~30m       │ │~100m │ │ global      │
       └──────┬──────┘ └──┬───┘ └──────┬──────┘
              │            │            │
              └────────────┼────────────┘
                           │
                    ┌──────▼──────┐
                    │  Encrypted  │
                    │  Message    │
                    │  Sync       │
                    └──────┬──────┘
                           │
                    ┌──────▼──────┐
                    │  Local-only │
                    │  Append     │
                    │  Feed Store │
                    └─────────────┘

User Journey

1. First meeting — Trust establishment

2. Still nearby — Initial sync

3. Later encounters — Proximity sync

4. Online mode (opt-in)

5. Meeting new people

Data Model (SSB-Inspired, Privacy-Enhanced)

Each user has:
  ├── Identity keypair (Ed25519) — never leaves device
  ├── Contact list — encrypted, local-only
  │     ├── Contact A: { public_key, shared_secret, display_name, last_sync }
  │     ├── Contact B: { ... }
  │     └── ...
  ├── Personal feed (append-only log)
  │     ├── Message 1: { type: "post", content: "...", sig: "..." }
  │     ├── Message 2: { type: "profile_update", name: "...", sig: "..." }
  │     └── Each message links to previous (hash chain)
  └── Received feeds (replicated from contacts)
        ├── Contact A's feed (encrypted, only readable by intended recipients)
        └── Contact B's feed (...)

Key differences from SSB:
  - Feeds are ENCRYPTED before replication (SSB feeds are plaintext)
  - No friends-of-friends replication by default (SSB does 2-3 hops)
  - Replication only happens with direct contacts unless explicitly shared
  - Feed entries can be encrypted to specific audiences (e.g., "close friends" group via MLS)

Comparison Matrix

Requirement Briar SSB Our Proposed Design
Physical-first trust QR code None (remote follow) NFC + QR (dual)
Passive proximity discovery No No Yes (BLE beacons)
Offline-only viable Yes (BT/WiFi) Partial (LAN) Yes (BLE/WiFi/NFC)
Social feed / posts No (messenger only) Yes Yes (encrypted feeds)
Feed encryption N/A No (public feeds) Yes (per-audience)
Metadata protection Tor (online) Weak (gossip leaks graph) Strong (offline default + Tor)
Anonymity by default Mostly Yes (keypair only) Yes (keypair + no PII + no broadcast ID)
Group encryption No groups No (public or DM only) MLS (RFC 9420)
Post-quantum ready No No Yes (hybrid PQXDH)
Cross-platform Android only Desktop + mobile Target: Android + iOS
Never-online mode Yes Not practical Yes (primary mode)

Open Questions & Risks

Technical:

UX:

Legal / Social:

Next Steps

Evaluate existing projects to build on (preferred path)

  1. Evaluate Berty / Wesh Network — the closest existing project. Wesh (berty/weshnet) supports BLE, WiFi Direct, and NFC as a reusable library. Assess: Can we build our social layer on top of Wesh? Can we contribute proximity features upstream?
  2. Evaluate Briar — mature, battle-tested (GPLv3). Assess: Can its Bramble transport layer be reused? Can social feed features be contributed upstream?
  3. Evaluate p2panda — designed for local-first community networks. Assess: Does its data model fit our encrypted feed needs?
  4. Reach out to communities — introduce ourselves, understand their roadmaps, find where our goals align

See the Implementation Options page for a full feasibility analysis of Berty/Wesh, Briar, p2panda, and other build paths.

If building a new layer or standalone app

  1. Prototype the trust establishment flow — NFC tap + QR fallback exchanging Ed25519 keys. Validate on Android (NFC P2P) and iOS (Core NFC reader mode + QR)
  2. Prototype BLE discovery — rotating beacons, RSSI filtering, mutual authentication after connection
  3. Design the encrypted feed format — extend SSB's message format with per-audience encryption using MLS
  4. Build a proof-of-concept — two Android devices: NFC tap → BLE discovery → encrypted message exchange