LocalFlow for Android 0.1.0 — the floating dot
LocalFlow for Android is a floating dot that sits over every app on your phone and dictates into whatever field you are looking at: hold it for one phrase, tap it for hands-free with a live waveform and discard/send buttons. It does no transcription itself — it sends the audio to your own LocalFlow PC over your Tailscale network and types the cleaned text back at your cursor, so nothing leaves your own devices.
Requires a PC running LocalFlow 0.2.0 with phone access enabled, Tailscale signed in on both devices, and Android 8.0 or newer (13+ recommended).
Install
- On the phone, download
LocalFlow-android-v0.1.0.apkbelow (app-debug.apkis the same file). - Open the download; when Android blocks it, tap Settings on the prompt and turn on Allow from this source for your browser (Stock: Settings → Apps → Special app access → Install unknown apps; Samsung: Settings → Apps → ⋮ → Special access → Install unknown apps).
- Go back, tap Install, and if Play Protect asks choose Install anyway — this is not a Play Store app and is signed with a development key.
- Open LocalFlow, and on the PC use the tray menu → Phone setup → Copy setup line; get that
URL|TOKENline onto the phone and tap Paste setup line. A connection test runs. - Grant the permissions (below), then flip Show the dot.
Permission order matters
Grant them in this order: Microphone → Display over other apps → Accessibility service → then flip Show the dot. On Android 14 and newer the dot runs as a microphone foreground service, and Android refuses to start one before the microphone permission exists. Also allow Notifications (Android 13+) and set Battery to Unrestricted so the dot is not killed in the background. Full tables, including the Samsung One UI paths, are in docs/ANDROID.md.
Honesty note
This first build compiles, passes unit tests and lint locally and in CI — but the author has not yet run it on a physical phone. Everything described above is what it is built to do, not what has been observed on real hardware. If it misbehaves, please open an issue with your phone model and Android version, which step failed, what the dot did (or did not do), and the connection-test line the app showed. The first bug reports are what will make it solid.