Streams your library on Android and the web. Downloads real files you own. Tells you the truth when something breaks.













One FastAPI server, one React app, your existing storage. No account servers, no telemetry, no one between you and your music.
Range-request serving, a byte-budgeted warm cache that seeks correctly, and prefetch that buffers the next queue track before you tap play. A seek never poisons the cache; a cold start still starts in about a second.
Real files into your library, tagged and named your way, with resume from staged bytes. They are yours even if this project disappears tomorrow.
0
Your server issues the sessions, your storage holds the library, your Mongo holds the profile.
A 10-band equalizer, bass boost, mono and preamp in a shared Web Audio graph, synced to your account. Sleep timer included.
Most apps hand you a spinner and then a shrug. Rheoson classifies the failure, gives it a traceable code, retries what is retryable on its own, and shows the full sentence on tap.
Termux turns a spare Android phone into the server. A laptop or a Render free instance works too.
# packages $ pkg install ffmpeg python nodejs git $ pip install uv # get the code $ git clone https://github.com/picklem0b/Rheoson.git $ cd Rheoson/api # backend $ uv sync --extra dev $ cp .env.example .env $ uv run uvicorn app.main:socket_app --host 127.0.0.1 --port 8000 # frontend (second session) $ cd ~/Rheoson/web && npm install $ npm run dev # open http://localhost:5173 in the browser
# any Linux, macOS or WSL machine $ git clone https://github.com/picklem0b/Rheoson.git $ cd Rheoson # backend $ cd api && uv sync --extra dev && cp .env.example .env $ uv run uvicorn app.main:socket_app --port 8000 # frontend $ cd ../web && npm install && npm run dev
# render.yaml ships in the repo: backend + web in one blueprint # 1. fork the repo on GitHub # 2. Render dashboard: New, Blueprint, pick the fork # 3. deploy; free tier sleeps after 15 idle minutes # first request after sleep takes about 30 s to wake