Bridge

Download

Bridge for Android

The native client — onboarding interview, camera capture, learning sessions and streaks, in a 1.5 MB app.

Before you download

This app does not connect to the demo you are looking at. The demo runs on anonymous, open profiles; the app expects a Bridge server with real accounts — the one in this repository, running under your own domain.

On first launch the app looks for a server it can reach — over your local network, and over Tailscale if you are on a tailnet — and offers what it finds as one tap each. Typing an address is the fallback, and it is checked before it is accepted: paste the address of this demo and it will say so rather than failing later at sign-in.

The address has to be https://. Android blocks unencrypted connections outright, so a plain-HTTP instance on your local network will not answer no matter how correct the address is — put it behind Tailscale or a reverse proxy first.

Download APK · 1.5 MB

Signed release build. Android will ask you to allow installs from your browser once.

Android will warn you. Here is what that warning means

Play Protect flags every app that did not come from the Play Store and is not signed by a developer Google has registered. It is a statement about where the file came from, not about what is in it — nothing was scanned and found; the app is simply unknown. The same build stops triggering it once it is published through the Play Console, because Google signs and reviews it there.

What you can check yourself, instead of taking that on trust: the app asks for two permissions — internet access and permission to show notifications. No camera permission (photographs are taken by your camera app), no storage, no location, no contacts. The fingerprint below tells you the file is the one built from this repository.

Version

1.1.0

Size

1.5 MB

Requires

Android 8.0 (API 26) or newer

Permissions

Internet and notifications — no camera, no storage, no location

Verify what you installed

Sideloaded software should be checkable. SHA-256 of the file served here:

6f93d6063a47b6415840b56fb2ca7e44e0d856671adc2a9419a33c168114c97b

Signing certificate (SHA-256), the same key every future build carries:

1a:6b:08:b3:2f:ad:66:6c:ea:86:8e:2f:fc:ea:b4:3e:bc:8b:8b:65:0d:4d:cb:20:25:66:80:66:ee:23:e5:fc

What it does with your data

Photographed pages are downscaled on the phone and sent to your server, which keeps only the text transcription — the image itself is never stored, on the phone or on the server. There is no analytics SDK and no third-party network call: the app talks to the address you entered and to nothing else.

If the app crashes it writes the stack trace to a file on the phone and shows it to you on the next start, so you can copy it and report it. That report is never uploaded — there is nowhere for it to go.

From here on the app updates itself from your server, not from this page: small changes — wording, the browse categories — arrive as data with no install at all, and a new build is offered inside the app with a checksum it verifies before installing.

When the Play Store version arrives

It will be signed by Google rather than by this key, so Android will refuse to install it over this build. Uninstalling this one first is the whole workaround — but your account and everything in it live on your server, not in the app, so nothing is lost.