New in version 0.4.0
F-Droid apps get the build made for the device's processor. An app a few releases behind shows every release's notes since yours. Checksums are found in more places, a repeating failure alerts once, and install confirmations share one alert. On Android 12 and later a notification's Update and new Skip buttons need the phone unlocked. Settings says when Android holds the background check back, and a silent Orbot stops a background run once. The app list takes page, Home, End and search keys.
A lot of good Android apps never reach a store, or reach it days late. Their developers put releases on GitHub, GitLab, Codeberg, a repository they run, or a plain web page. Tern follows those places for you. Paste a link or share one from the browser and it figures out what it is looking at.
Then it checks the file, because a release page can be tampered with and a download can be swapped on the way.
The signature has to be from the same certificate as the app already on your phone. Tern remembers that certificate from the first install, and your export carries it to your next phone.
If the publisher gave a checksum, the file has to match it.
The file has to be the app you asked for, and not an older version of it.
Tern reads the version and the signer out of a file while it is still on the server, a few kilobytes of it, so an update is only offered when there really is one.
On Android 12 and newer, updates go in without asking once Tern has installed the app. With Shizuku or Dhizuku they go in without asking, first installs too. If Android does want a confirmation, you get a notification you can update from. Background checks use Android's own scheduler, as often as every 15 minutes, and you choose whether they run on mobile data or only while charging.
No account. Nothing is reported to anyone. HTTPS only.
Works on phones, tablets and Android TV, where the remote is all you need. On a TV, choose Send from a phone: scan the code it shows, and your phone sends links or your app list, sealed with that code so nobody else on the network can read or change them.
Choose Orbot in the settings and everything Tern sends goes through Tor. If Orbot is not there, nothing is sent at all.
For well-known apps Tern already carries the developer's certificate, so even the first install is checked. Make it look the way you like: colours from your wallpaper or your own, contrast, density, corners and icon shapes.
English and 28 other languages; the translations are machine-made and corrections are welcome.
Obtainium user? Import your export file and your apps come along, with every option they had. Tern writes Obtainium's format too.
Sort, group and filter your list, give categories colours, and see what is waiting on a home-screen widget or a Quick Settings tile.
Reads: GitHub releases and Actions builds, GitLab, Forgejo, Gitea, Codeberg, F-Droid, IzzyOnDroid, any F-Droid format repository (signature checked), web pages, direct links, Jenkins, SourceHut, SourceForge, itch.io, Telegram and Neutron Code.
Off until you turn them on in Settings: the third-party stores APKPure, Aptoide, APKCombo, APKMirror (tracking only), Tencent, Huawei AppGallery, Samsung Galaxy Store and vivo. A store serves its own copies of apps, not files from the developer's own site, and Tern says so. The first install from a store decides which certificate later updates must carry, unless Tern already knows the developer's. Tern does not read sites that offer modified apps, or stores that answer only their own app.
Who Tern talks to: the forges, repositories, instances and sites of the apps you add; for an F-Droid app also F-Droid's data on gitlab.com and the changelog it names; the icon hosts of those sources, such as raw.githubusercontent.com; a third-party store's own hosts only when stores are on and you add an app from it; and the places you tick when you search, which are GitHub, Codeberg, GitLab and search.f-droid.org at first. Every request says it comes from Tern. PRIVACY.md lists every host.
Donate
Versions
Although APK downloads are available below to give you the choice, you should be aware that by installing that way you will not receive update notifications and it's a less secure way to download. We recommend that you install the F-Droid client and use that.
Download F-Droid
-
arm64-v8a
armeabi-v7a
x86
x86_64
This version requires Android 9.0 or newer.
It is built and signed by the original developer, and guaranteed to correspond to this source tarball.
Permissions
-
view network connections
Allows the app to view information about network connections such as which networks exist and are connected.
-
android.permission.ENFORCE_UPDATE_OWNERSHIP
-
run foreground service
Allows the app to make use of foreground services.
-
run foreground service with the type "dataSync"
Allows the app to make use of foreground services with the type "dataSync"
-
have full network access
Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
-
show notifications
Allows the app to show notifications
-
query all packages
Allows an app to see all installed packages.
-
run at startup
Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running.
-
request delete packages
Allows an application to request deletion of packages.
-
request install packages
Allows an application to request installation of packages.
-
update app without user action
Allows the holder to update the app it previously installed without user action
-
com.rosan.dhizuku.permission.API
-
io.github.munzzyy.tern.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION
-
moe.shizuku.manager.permission.API_V23
Download APK
6.9 MiB
PGP Signature
|
Build Log
New in version 0.3.0
A file signed with more than one key passes only when every one of its keys is pinned, and an update only when the installed app has exactly the same keys. One matching key used to be enough.
On Android 12 and 12L the question that asks to allow installs no longer says Android will close Tern.
-
arm64-v8a
armeabi-v7a
x86
x86_64
This version requires Android 9.0 or newer.
It is built and signed by the original developer, and guaranteed to correspond to this source tarball.
Permissions
-
view network connections
Allows the app to view information about network connections such as which networks exist and are connected.
-
android.permission.ENFORCE_UPDATE_OWNERSHIP
-
run foreground service
Allows the app to make use of foreground services.
-
run foreground service with the type "dataSync"
Allows the app to make use of foreground services with the type "dataSync"
-
have full network access
Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
-
show notifications
Allows the app to show notifications
-
query all packages
Allows an app to see all installed packages.
-
run at startup
Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running.
-
request delete packages
Allows an application to request deletion of packages.
-
request install packages
Allows an application to request installation of packages.
-
update app without user action
Allows the holder to update the app it previously installed without user action
-
com.rosan.dhizuku.permission.API
-
io.github.munzzyy.tern.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION
-
moe.shizuku.manager.permission.API_V23
Download APK
6.9 MiB
PGP Signature
|
Build Log
New in version 0.2.2
The well known apps show the address each one comes from, and the list says that opening one asks that address for its newest release.
-
arm64-v8a
armeabi-v7a
x86
x86_64
This version requires Android 9.0 or newer.
It is built and signed by the original developer, and guaranteed to correspond to this source tarball.
Permissions
-
view network connections
Allows the app to view information about network connections such as which networks exist and are connected.
-
android.permission.ENFORCE_UPDATE_OWNERSHIP
-
run foreground service
Allows the app to make use of foreground services.
-
run foreground service with the type "dataSync"
Allows the app to make use of foreground services with the type "dataSync"
-
have full network access
Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
-
show notifications
Allows the app to show notifications
-
query all packages
Allows an app to see all installed packages.
-
run at startup
Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running.
-
request delete packages
Allows an application to request deletion of packages.
-
request install packages
Allows an application to request installation of packages.
-
update app without user action
Allows the holder to update the app it previously installed without user action
-
com.rosan.dhizuku.permission.API
-
io.github.munzzyy.tern.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION
-
moe.shizuku.manager.permission.API_V23
Download APK
6.9 MiB
PGP Signature
|
Build Log