Desktop GUI for ringdrop — P2P file sharing with ring-based access control.
Connects to a locally running ringdrop daemon over IPC and exposes the full
rdrop CLI surface as a native UI: browse and share blobs, manage rings and
peers, grant catalog access, and download from tickets with live progress.
| Project | Role |
|---|---|
| ringdrop | The daemon — rdrop CLI and this GUI are both IPC clients for the same daemon |
| iroh-rings | Reusable library providing the ring-based access-control protocol used by the daemon |
flowchart TB
subgraph gui["ringdrop-gui (Tauri v2)"]
direction LR
fe["Svelte\nfrontend"]
be["Tauri\nbackend"]
fe <--> be
end
be -- "TCP localhost · JSON (Op / EventKind)" --> daemon
subgraph daemon["ringdrop daemon"]
node["Node\nFsStore · Registry · Grants · Peers"]
end
The Tauri backend reads ~/.ringdrop/config.json to locate the daemon port,
then forwards every UI action as a DaemonClient IPC call. No separate
configuration; no embedded node.
- ringdrop daemon — install the CLI and start the daemon:
cargo install ringdrop rdrop daemon start
- Node ≥ 24 —
node --version(use fnm to match.node-version) - Rust stable —
rustup update stable - Linux system deps (Tauri webview):
See Tauri prerequisites for macOS and Windows.
sudo apt install libwebkit2gtk-4.1-dev libappindicator3-dev
npm install
make hooks # activate git hooks (once, after cloning)
npm run tauri devnpm run tauri build
# → src-tauri/target/release/bundle/
# Linux: .AppImage .deb .rpm
# macOS: .dmg
# Windows: .msiPre-built installers for all platforms are available on the Releases page.
User-facing documentation lives in docs/ and is published to
GitHub Pages on every push to main.
npm run docs:dev # live-reload at localhost:5173
npm run docs:build # production build → docs/.vitepress/dist
