gyoshuku - Privacy Policy
The Android app com.gyoshuku.app
Last updated: 2026-08-25
gyoshuku collects nothing. It has no accounts, and no analytics, advertising or crash-reporting SDK of any kind. The developer runs no service on your behalf and receives no data from the app - not usage data, not identifiers, not diagnostics, not anything.
gyoshuku plays condensed audio and re-timed transcripts for Japanese immersion study. It is a client for a server that you run and you name. This page describes what the app does with data on your device and on the network, and it is written to describe this app specifically rather than to recite the usual boilerplate.
The one server the app talks to
gyoshuku connects to exactly one address: the server URL you type into Settings. There is no default server, no fallback host, no update check and no telemetry endpoint. If you never enter an address, the app makes no network requests at all.
That server is normally a gyoshuku serve process on a machine you
control, on your own network. Whatever it logs, stores or does with your requests is
governed by that machine, not by this app and not by its developer. The developer has
no access to it and cannot see your library, your listening history or your requests.
Your access token
If your server requires one, you supply a bearer token in Settings. The app:
- stores it on the device only, in the app's private storage, encrypted with an AES-256-GCM key generated in and held by the Android Keystore;
- sends it only to the server address you configured, as an
Authorizationheader on requests to that server; - never writes it to the log, and never transmits it anywhere else.
App backup is switched off in the app's manifest, so the token is not copied into Android's cloud backup or into a device-to-device transfer.
Plain HTTP is permitted, and what that means
Home servers are usually reached over plain http:// on a local
network, so the app permits it. It permits it narrowly: an
http:// address is accepted only when its host is a private address
(RFC 1918, loopback, link-local, carrier-grade NAT, or an IPv6 unique-local address).
Anything else must be https://.
On a plain http:// address, your requests and your bearer
token travel that local network unencrypted, and anyone with access to that
network could read them. Using an https:// address changes this and needs
no change to the app.
What is stored on your device
Audio and transcripts you download for offline use are written to the app's own external files directory, which belongs to the app and which Android removes when you uninstall it. Nothing there is uploaded or made visible to the developer. On Android 8 and 9 an app holding storage permission can read that directory; from Android 10 the platform's scoped storage prevents it.
You can delete individual downloads from within the app. Uninstalling the app removes everything it stored, including the downloads, your settings and your token.
Permissions
The app requests internet and network-state access (to reach your server), foreground-service permissions (so playback and downloads keep running while the app is in the background) and notification permission (for the playback and download notifications). It requests no location, contacts, camera, microphone or phone permissions, and no access to shared device storage.
Children
The app is not directed at children and collects no personal information from anyone, of any age.
Changes to this policy
If the app's behaviour changes in a way that affects this page, the page will be updated and the date at the top will change with it.
Contact
Questions about this policy or about the app go to the developer on GitHub: github.com/bspar.