Tern: Android Apps Straight from Developers, with Every File Verified
Published: 2026-09-30 · Author: AI Release · @ai_release1
⚡ The Gist in 5 Seconds - Tern is a native Android app weighing about 7 MB: it finds and installs apps where developers publish them, and verifies every file before installation. - Available via F-Droid or as tern.apk from the latest release; runs on Android 9 and newer on phones, tablets, and Android TV. - Limitation: third-party app stores are disabled by default, and some sources that Obtainium reads are deliberately not included in Tern. ### 🔍 What Was Found Tern reads release pages from GitHub, GitLab, Codeberg, Forgejo/Gitea, F-Droid, IzzyOnDroid, as well as web pages, direct links, Jenkins, SourceHut, SourceForge, itch.io, Telegram, and Neutron Code. Eight third-party stores — Huawei AppGallery, Samsung Galaxy Store, vivo, APKPure, Aptoide, APKCombo, APKMirror, and Tencent — can be enabled via a separate setting. Meanwhile, Tern works without an account and without analytics, contacts only the app sources and places listed in PRIVACY.md, and identifies itself as Tern in every request. Before downloading, Tern reads the package name, version code, and signing certificate from the server via several range requests; for a 6 MB file this took 4 requests and 106 KiB. After downloading, the SHA-256 is checked against the publisher's checksum if one exists: a GitHub release digest, a signed F-Droid index, a.sha256 file, SHA256SUMS, or a hash in the release notes. The signature is verified twice — by Tern's own verifier (APK Signature Scheme v1, v2, v3, and v3.1) and by Android. If they disagree, the file is rejected. For 15 well-known apps, Tern already knows the developer's certificate, confirmed by a second source, so even the first installation is verified. ### 💡 Why It Matters Most open source Android apps publish releases on GitHub, GitLab, Codeberg, or their own repository days before they appear in stores — if they appear there at all. Tern lets you follow those release pages directly, and before installation it checks who signed the file, whether it's the right package, and whether the checksum matches. Updates arrive quietly: after the first confirmation, Android receives a silent update request with every new release. A built-in widget, a Quick Settings tile, and shortcuts let you check for updates from outside the app, and with Orbot selected, all traffic goes through Tor. It's a practical replacement for app stores for those who want to get software from developers with authenticity verification, rather than relying on middlemen. ### 🧩 Context Tern continues the approach of Obtainium, which showed that a phone can itself keep track of release pages. Tern does the same and additionally "looks closely" at what it has received: it verifies the signature, checksum, and source. An Obtainium export migrates your app list and settings into Tern, and Tern can write an export for Obtainium in return. Some sources read by Obtainium are deliberately left out of Tern — the reasons are listed in docs/COMPARISON.md. Once installed, Tern updates itself via its own
⚡ The Gist in 5 Seconds - Tern is a native Android app weighing about 7 MB: it finds and installs apps where developers publish them, and verifies every file before installation.
- Available via F-Droid or as tern.apk from the latest release; runs on Android 9 and newer on phones, tablets, and Android TV.
- Limitation: third-party app stores are disabled by default, and some sources that Obtainium reads are deliberately not included in Tern.
🔍 What Was Found Tern reads release pages from GitHub, GitLab, Codeberg, Forgejo/Gitea, F-Droid, IzzyOnDroid, as well as web pages, direct links, Jenkins, SourceHut, SourceForge, itch.io, Telegram, and Neutron Code.
Eight third-party stores — Huawei AppGallery, Samsung Galaxy Store, vivo, APKPure, Aptoide, APKCombo, APKMirror, and Tencent — can be enabled via a separate setting.
Meanwhile, Tern works without an account and without analytics, contacts only the app sources and places listed in PRIVACY.md, and identifies itself as Tern in every request.
Before downloading, Tern reads the package name, version code, and signing certificate from the server via several range requests; for a 6 MB file this took 4 requests and 106 KiB.
After downloading, the SHA-256 is checked against the publisher's checksum if one exists: a GitHub release digest, a signed F-Droid index, a.sha256 file, SHA256SUMS, or a hash in the release notes.