Project
Roadmap
Tracked on the project board and in issues.
Phase 0 — Scaffold & repo hygiene ✅
Complete — merged in #20, milestone closed, CI green on main.
- Next.js 16 static export inside a Tauri v2 shell
- librqbit v9 embedded, DHT bootstrapping, UPnP forwarding, persistence
get_core_statusproving the full IPC path end to end- Dark landing page showing live engine telemetry
- Apache-2.0, README, CONTRIBUTING, issue/PR templates, Dependabot
- CI: fmt, clippy, tsc, ESLint, Prettier, Vitest, cargo test, audits
- 5 Rust unit tests, 6 integration tests (engine + IPC), 20 frontend tests
- Three security advisories found and fixed by CI before the first merge
Phase 1 — Core torrent lifecycle (MVP) 🚧
The phase that makes Flume usable. The core loop works: telemetry is event-based, and torrents can be added by magnet or file with a select-files-first flow, then paused, resumed, and removed.
Add via magnet link✅ (#3)Add via✅ (#4).torrentfile pickerTorrent list: progress, speeds, ETA, peers, ratio; pause/resume/remove✅ (#5)Per-torrent file tree with selective download✅ (#6)Settings with persistence✅ (#7)Resume correctly across restarts✅ (#8)- Investigate Windows file-locking and seeding (#9)
Also in this phase: replace the Phase 0 polling hook with backend-pushed, batched events before the torrent count grows.
Phase 2 — Polish & platform integration ✅
Complete. Milestone closed 5/5.
Theming and the visual design pass✅ (#10)Per-torrent detail view with piece heatmap✅ (#11)Magnet protocol association and single instance✅ (#12)Notifications and system tray✅ (#13)Keyboard shortcuts and accessibility baseline✅ (#14)
Phase 3 — Hardening & distribution 🚧
Release pipeline for all four package formats✅ (#15)Performance validation with 10+ torrents✅ (#17)Signing, notarization, and troubleshooting docs✅ (#18)Release build blocked by a proc-macro failure✅ (#22)
Still open, all blocked on something outside the code:
- Sequential download (#16) — not
implementable against librqbit v9;
FilePrioritiesispub(crate)and no priority setter exists. Awaiting a product decision. - GTK3 advisories (#21) — upstream in Tauri’s Linux backend; resolves when it moves off GTK3.
- TypeScript 7 (#28) — blocked until
typescript-eslintsupports it.
Measured performance
With 15 torrents on macOS:
| Metric | Value | Budget |
|---|---|---|
telemetry() per call |
171 µs | 1,000,000 µs (1 Hz tick) |
| Serialized payload | 5,345 bytes | — |
| Detail + files query | 2.2 µs | 500,000 µs (2 Hz panel) |
The payload figure is the one to watch: it should scale with torrent count, never with piece count or file size.
Known limitations
-
Windows and Linux unverified locally. Developed on macOS 27. CI builds for all platforms, but first-run behaviour needs a manual pass.
-
Polling, not events. The Phase 0 status hook polls at 1 Hz. Fine for one status card, wrong for a torrent list.
-
Magnet association is untested on macOS and Windows. The OS registration lives in the installed bundle, so it cannot be exercised by
tauri dev— see Platform Notes. Blocked behind the release pipeline (#15), which is itself blocked by #22.
Out of scope
Flume deliberately does not do cryptocurrency, chat, RSS automation, or paid
features. It also will not ship a second CLI — rqbit already exists.