Expand description
§ringdrop
P2P file transfer with ring-based access control, built on iroh (QUIC + hole-punching) and [iroh-blobs] (BLAKE3 chunked storage with bao encoding).
§Architecture
┌─────────────────────┐
│ CLI (rdrop) │
│ ↕ │
│ DaemonClient │
└──────────┼──────────┘
┌──────────────────↕────────────────────┐
│ DaemonServer │
│ (owns the Node) │
│ ┌───────────────┴─────────────────┐ │
│ │ Node<R> │ │
│ │ ┌────────────┴──────────────┐ │ │
│ │ │ │ │ │
│ │ │ FsStore Registry (R) │ │ │
│ │ │ └───────┬──────┘ │ │ │
│ │ │ ↕ │ │ │
│ │ │ RingGate │ │ │
│ │ │ (ALPN /iroh-rings/2) │ │ │
│ │ │ ↕ │ │ │
│ │ │ Endpoint │ │ │
│ │ │ (QUIC/iroh) │ │ │
│ │ └───────────┼┼┼─────────────┘ │ │
│ └──────────────│││────────────────┘ │
└─────────────────│││───────────────────┘
│││
internetA core::Node wraps an iroh QUIC endpoint, an iroh-blobs persistent blob
store, a Registry that tracks ring membership and permission-typed
resource associations, and a RingGate that enforces access control: a
blob is only served to a peer that holds Permission::Read on it — either
through ring membership or the built-in open ring.
The daemon module runs a Node as a background TCP server so that the
CLI can talk to it over a local IPC connection.