Local-first peer-to-peer music streaming prototype.
Running the application:
- Install the Rust toolchain from https://www.rust-lang.org/tools/install.
- Clone the repository.
- Run the application with
cargo run.
Using the application:
- In another terminal, run a second instance of the application.
- Press
?to view the built-in help. - Press
1and2to switch between the group management and library views. - On the first instance, type
:creategroupto initialize a new group. - Copy the generated join code.
- On the second instance, type
:joingroup <join code>to join the group. - The instances will negotiate joining, connecting, and syncing. The first tab will show some log messages.
- On either instance, type
:addlibrary /path/to/librarywith a path to a folder containing some audio files. - Both instances will see the files in the library tab.
- Both instances will be able to play the files, either from local disk or streamed over the network.
- Audio playback can be controlled with
pto pause,sto stop, andshift + left/rightto seek. - If run with a single argument (
cargo run -- alice), state will be persisted to./datato test rejoining existing groups.
Some quality-of-life things that are missing:
- Make log UI scrollable
- Display peer connection state (direct vs relayed)
- Fix potential bug with input handling on Windows
- Improve peer reconnection logic
