radi.sh (package sh.radi.app) is a terminal-styled
internet radio player published by Squeak Inc. This policy describes what the
app does with your information.
The short version: radi.sh has no accounts, no analytics, no advertising and no tracking, and it sends nothing about you to us. We do not operate a server that receives your data, because there isn't one. Everything the app remembers stays on your phone.
Two things are worth understanding properly, and both are covered in detail below: playing a station connects your device directly to that station's own server, run by someone else entirely; and the optional audio visualiser requires the microphone permission for a reason that has nothing to do with listening to you.
What is stored on your device
The app saves the following locally, using your device's private app storage:
| What | Why |
|---|---|
| Favourite stations | So they are there next time |
| Recently played stations (last 60) | So you can find your way back |
Custom stations you add with :add | So your own stream URLs persist |
| The last station you tuned | So the app reopens where you left off |
| Volume level | So it does not reset every launch |
| Your settings — colour theme, font size, visualiser mode, frame rate, scanlines, glow, haptics, boot animation, metadata polling, keep-awake | So the app looks and behaves the way you left it |
This information never leaves your device. We cannot see it. It is not backed up to us, synced, or shared. Deleting the app deletes all of it, and there is nothing left behind anywhere else, because it was never anywhere else.
Export and import
The :export command copies a JSON backup of your favourites and
recents to your device's system clipboard, so you can paste it
into a note or an email to yourself. That is a deliberate action you take, and
it is the only way this data leaves the app.
Be aware of what the clipboard is: once data is on it, it is handled by Android
and by whatever app you paste into. Android may briefly show a preview of it,
and some keyboards keep a clipboard history. :import reads the
clipboard back and merges it in; nothing you already have is overwritten.
The microphone permission
radi.sh declares RECORD_AUDIO. This deserves a plain explanation,
because on a radio app it looks alarming.
The app can draw a spectrum analyser driven by the audio actually playing. On Android, sampling your own playback goes through the system Visualizer API, and Android gates that API behind the microphone permission — regardless of whether any microphone is involved. There is no way to sample your own audio output on Android without it.
Concretely:
- The live analyser is off by default. The permission is
requested only if you turn it on yourself, under
5 sys. - What is sampled is the app's own audio output — the radio stream you are already listening to. Not ambient sound, not your voice, not anything else on the device.
- Samples are converted into bar heights for the visualiser and discarded frame by frame. Nothing is recorded, written to storage, or transmitted anywhere.
- Turn the toggle off, or deny or later revoke the permission in Android Settings, and the app simply falls back to a synthesised animation. Everything else keeps working.
We do not collect audio. There is no server to collect it to.
What leaves your device
1. The station directory (Radio Browser)
Station listings come from Radio Browser, a free community-run directory. It is not operated by us.
When you browse, search, or open the app, it requests station data from Radio Browser's servers. Those requests contain:
- what you searched for, or which genre tag you selected
- an identifying User-Agent (
radi.sh/1.0) - your IP address — unavoidably, as with any request to any website
When you tune a station, the app also sends that station's
public ID to Radio Browser so its popularity ranking stays current. If you run
the :vote command, that sends an upvote for the station you are
playing. Neither is tied to you, neither contains an identifier for you or your
device, and we never see either.
Radio Browser's handling of these requests is governed by its own terms, not ours.
2. The radio stations themselves
This is the part worth reading twice.
When you play a station, your device streams audio directly from that station's server. Audio does not pass through us, and we have no relationship with these operators.
That means the station's server can see:
- your IP address, and therefore your approximate region
- that a request was made, and for how long you listened
- standard connection details any web server receives
If the "now playing" metadata setting is on — it is on by default —
the app also polls that same station's server periodically while you listen, to
read the track title the stream broadcasts. This means additional requests to
the station, from your device, for as long as playback continues. You can turn
it off under 5 sys.
There are roughly 50,000 stations in the directory, run by thousands of independent broadcasters worldwide. Each one decides its own logging and privacy practices. Many have no published privacy policy at all. We cannot inspect, audit, control, or vouch for any of them.
If this matters to you, the only reliable protection is not to play a given station, or to use a VPN.
3. Nothing else
There is no analytics SDK, no crash reporting, no advertising network, no social login, and no third-party tracker of any kind in this app. If that ever changes, this policy will be updated before the change ships.
Permissions
| Permission | Why |
|---|---|
INTERNET, ACCESS_NETWORK_STATE | Fetch the directory and stream audio; notice when the network drops |
FOREGROUND_SERVICE, FOREGROUND_SERVICE_MEDIA_PLAYBACK | Keep playing while the app is in the background, with a playback notification |
WAKE_LOCK | Prevent the device sleeping mid-stream |
MODIFY_AUDIO_SETTINGS | Set up the audio session for playback |
RECORD_AUDIO | Only for the opt-in visualiser, as explained above. No audio is captured, stored or sent. |
VIBRATE | Haptic feedback on key presses, which you can switch off |
The app does not request camera, location, contacts, storage or phone permissions, and cannot access them.
Insecure connections
Around half of the stations in the directory stream over plain
http:// rather than https://. Android normally blocks
this; radi.sh permits it, because otherwise about half the catalogue would
simply not play.
The practical consequence: for those stations, the audio stream and the address being requested are not encrypted in transit, and could in principle be observed on a shared or hostile network. This affects listening only — no personal information is transmitted over these connections, because the app does not hold any.
Children
radi.sh is not directed at children. Station content comes from thousands of independent third-party broadcasters and is not moderated, filtered or rated by us. It may include material unsuitable for children, including explicit language and adult subject matter. Parental discretion is advised.
Your choices
- Turn off the live analyser — under
5 sys. You can also revoke the microphone permission in Android Settings at any time. - Turn off metadata polling — under
5 sys, if you would rather not poll the station's server for track titles. - Clear your history — from the library screen.
- Remove favourites — untap the heart on any station.
- Delete everything — uninstall the app. Since nothing is stored off-device, uninstalling is a complete deletion. There is no account to close and no request to make of us, because we hold nothing to delete.
Changes
If this policy changes, the date at the top will change with it. Material changes — in particular, any introduction of analytics or advertising — will be described here rather than made quietly.
Contact
Questions about this policy: joeygvigil@gmail.com
Squeak Inc.
